Autor: Dobrin David-Marius, grupa 332CA
Asistent: Bianca Popa
Smart Planter este un sistem inteligent de monitorizare si irigare automata a plantelor, cu acces remote prin internet. Ghiveciul ramane acasa conectat la WiFi 24/7, iar utilizatorul il monitorizeaza si controleaza de oriunde din lume printr-o aplicatie web (PWA). Cand apa din rezervor se termina, primeste o notificare push pe telefon si poate trimite pe cineva sa umple rezervorul.
Eliminarea grijii de a uda plantele atunci cand utilizatorul lipseste de acasa (vacanta, deplasari, program incarcat) si automatizarea unei rutine repetitive prin masurarea umiditatii solului in timp real.
Microcontrollerul ESP32 (cu WiFi integrat) citeste umiditatea solului si nivelul apei din rezervor, decide local cand sa porneasca pompa (mod AUTO) si publica datele catre un broker MQTT public (HiveMQ). O aplicatie React conectata la acelasi broker afiseaza datele si trimite comenzi catre ghiveci de oriunde.
192.168.4.1 — nu trebuie reflashat codul cand schimbi reteauaSchema bloc a sistemului:
Fluxul de date pe scurt:
| Componenta | Cantitate | Rol |
|---|---|---|
| ESP32 DevKit (cu WiFi integrat) | 1 | Microcontroller principal + comunicatie WiFi |
| Senzor umiditate sol LM393 | 1 | Masoara umiditatea pamantului (analog) |
| Senzor nivel apa (analog) | 1 | Masoara nivelul apei din rezervor |
| Modul releu 5V cu optocuplor | 1 | Controleaza pompa |
| Pompa submersibila 5V (USB) | 1 | Iriga planta |
| LCD 16×2 + modul I2C (PCF8574) | 1 | Afiseaza umiditate, nivel apa, mod |
| LED rosu 5mm | 1 | Semnal vizual rezervor gol |
| Rezistor 220 Ω | 1 | Limitare curent LED |
| Breadboard + fire jumper | 1 set | Conectica |
| Sursa alimentare 5V / 2A | 1 | Alimentare ESP32 + pompa |
| Pin ESP32 | Componenta |
|---|---|
| GPIO 34 (ADC) | Iesire analogica senzor umiditate sol |
| GPIO 35 (ADC) | Iesire analogica senzor nivel apa |
| GPIO 25 | Alimentare comutata senzor nivel apa |
| GPIO 26 | IN modul releu pompa |
| GPIO 27 | Anod LED rosu (prin 220 Ω → GND) |
| GPIO 21 (SDA) | SDA modul I2C LCD |
| GPIO 22 (SCL) | SCL modul I2C LCD |
| 5V | VCC senzori, releu, LCD, pompa |
| GND | GND comun |
esp32 by Espressif Systems)| Librarie | Autor | Rol |
|---|---|---|
WiFi.h | Espressif (built-in) | Conectare la retea WiFi |
PubSubClient | Nick O'Leary | Client MQTT |
Wire.h | Arduino (built-in) | Magistrala I2C |
LiquidCrystal_I2C | Frank de Brabander | Driver LCD 16×2 cu modul I2C |
Preferences.h | Espressif (built-in) | Salvare credentiale WiFi in NVS |
ArduinoJson | Benoit Blanchon | Serializare/parsare mesaje MQTT JSON |
mqtt (npm) | mqttjs | Conectare frontend la broker |
setup():
initializeaza Serial, I2C, LCD, GPIO-uri
incarca credentialele WiFi din NVS (Preferences)
daca lipsesc -> porneste in mod Access Point (SoftAP)
serveste portal captiv la 192.168.4.1
salveaza credentialele primite si reporneste
daca exista -> conecteaza la WiFi
conecteaza la broker.hivemq.com pe topic-urile sp/{id}/...
loop():
citeste senzorii (mediere pe 10 esantioane)
actualizeaza LCD-ul (afiseaza umiditate %, nivel apa, mod)
daca rezervor gol:
opreste pompa (siguranta)
aprinde LED rosu
publica alerta MQTT { "type": "low_water" }
daca mod == AUTO:
daca umiditate < 35% si rezervor are apa -> porneste pompa
daca umiditate > 60% -> opreste pompa
la fiecare 30s sau la schimbare de stare:
publica status JSON { soilMoisture, waterLevel, pumpOn, mode, online }
proceseaza comenzile primite pe sp/{id}/cmd
| Topic | Directie | Continut |
|---|---|---|
sp/{id}/status | ESP32 → App | Date senzori + stare curenta (JSON) |
sp/{id}/alert | ESP32 → App | low_water, tank_full |
sp/{id}/cmd | App → ESP32 | mode (auto/manual), water start/stop |
Exemplu mesaj status:
{ "name": "Monstera", "soilMoisture": 42, "waterLevel": "ok", "pumpOn": false, "mode": "auto", "online": true }
| Data | Activitate |
|---|---|
| 2026-03-08 | Achizitie componente (ESP32, senzori, pompa, LCD) |
| 2026-03-12 | Modelare 3D ghiveci (FreeCAD + OpenSCAD) |
| 2026-03-15 | Print 3D ghiveci si rezervor |
| 2026-03-20 | Conectare senzori, citire valori ADC pe Serial Monitor |
| 2026-03-25 | Implementare logica AUTO + control releu, test pe breadboard |
| 2026-04-02 | Integrare WiFi + portal captiv pentru configurare |
| 2026-04-10 | Conectare la broker HiveMQ, publicare status JSON la 30s |
| 2026-04-18 | Aplicatie React (vite + mqtt.js), conectare la acelasi broker |
| 2026-04-25 | Notificari push (Web Push API), test pe iOS si Android |
| 2026-05-01 | Adaugare LCD 16×2 I2C, refactorizare cod afisare |
| 2026-05-05 | Test final end-to-end, calibrare praguri umiditate |
| 2026-05-07 | Documentatie OCW + schema bloc |