PlantPet
Introducere
PlantPet este un sistem inteligent de monitorizare si control al mediului unei plante. Sistemul masoara in timp real umiditatea solului, temperatura ambientala, nivelul de lumina si nivelul apei din rezervor, iar pe baza acestor valori controleaza automat irigarea si iluminarea suplimentara a plantei.
Scopul proiectului este realizarea unui produs care sa ajute utilizatorul sa mentina conditii optime pentru cresterea unei plante reducand interventia manuala necesara si oferind feedback local pe display si la distanta, printr-o aplicatie.
Ideea de la care am pornit a aparut din nevoia de a avea un sistem de ingrijire a plantelor cat timp nu sunt acasa. Insa in loc ca planta sa fie doar un obiect monitorizat de senzori, sistemul este gandit astfel incat planta sa fie un fel de animal de companie virtual. In acest fel, ma pot conecta cu planta mea de oriunde.
Utilitatea proiectului vine din oferirea unei metode simple de monitorizare si ingrijire a plantei.
Descriere generala
Sistemul este construit in jurul microcontrollerului ESP32 care are rolul de unitate centrala de procesare si coordoneaza toate modulele hardware si software.
Senzori de intrare:
senzor capacitiv de umiditate a solului
senzor DHT11, pentru masurarea temperaturii ambientale
modul LDR, pentru determinarea nivelului de lumina ambientala
float switch, pentru detectarea nivelului minim al apei in rezervor
Unitatea centrala de procesare:
ESP32 - citeste periodic valorile de la senzori, le compara cu pragurile setate si decide actiunile necesare. Transmite catre display local, aplicatie si actuatoare prin intermediul unor circuite de comutatie cu MOSFET.
Module de iesire:
display TFT LCD color de 1.8”, cu rezolutie de 128 x 160 pixeli si interfata SPI, utilizat pentru afisarea locala a unui „plant pet” care reflecta starea plantei
pompa peristaltica de 5V, pentru irigarea plantei
sursa de iluminare LED de 5V, pentru suplimentarea luminii atunci cand lumina ambientala nu este suficienta
Interfata software:
Sistemul de alimentare:
Schema bloc
Interactiunea modulelor
ESP32 citeste periodic valorile de la senzori (umiditate, DHT11, LDR si float switch)
valorile sunt procesate si comparate cu pragurile setate in aplicatie
daca umiditatea solului scade sub pragul stabilit si exista apa in rezervor, ESP32 activeaza pompa peristaltica
daca nivelul de lumina ambientala scade sub pragul stabilit, ESP32 activeaza sursa de iluminare LED
daca float switch-ul indica un nivel scazut de apa, sistemul dezactiveaza udarea si trimite o alerta catre aplicatie
starea curenta este afisata local pe display-ul TFT sub forma unui „plant pet” si la distanta in aplicatia web, unde sunt afisate si valorile senzorilor
Hardware Design
Lista de piese
1 x ESP32 DevKit (ESP32-D)
1 x Senzor capacitiv de umiditate a solului
1 x DHT11
1 x Modul LDR
1 x Float switch
1 x Display TFT LCD 1.8” ST7735, 128 x 160 SPI
1 x Pompa peristaltica 5V
1 x Sursa de iluminare LED 5V (USB)
2 x MOSFET N-channel logic-level
1 x Dioda flyback 1N5819
4 x Rezistente pentru comanda MOSFET
1 x Breadboard
1 x Baterie portabila
1 x Tub siliconic pentru pompa
1 x Recipient pentru rezervorul de apa
Fire de conexiune
Software Design
Mediu de dezvoltare:
VS Code - editor principal
PlatformIO - sistem de build si upload
framework-ul ESP-IDF pentru dezvoltarea firmware-ului in limbajul C
Biblioteci:
driver/gpio.h - configurarea si controlul pinilor digitali
driver/spi_master.h - comunicatia SPI cu display-ul TFT
esp_adc/adc_oneshot.h - citirea valorilor analogice de la senzorul de umiditate a solului si de la senzorul de lumina
freertos/FreeRTOS.h - organizarea executiei periodice a codului
freertos/task.h - task-uri pentru logica principala si animatia de pe TFT
esp_http_server.h - serverul web local
esp_wifi.h - configurarea modulului WiFi
esp_netif.h - initializarea interfetei de retea
esp_event.h - gestionarea evenimentelor necesare pentru WiFi
nvs_flash.h - initializarea memoriei nevolatile necesare subsistemului WiFi
esp_timer.h - masurarea timpului si implementarea logicii dependente de timp
esp_rom_sys.h - intarzieri scurte folosite in comunicatia cu DHT11
Algoritmi si structuri implementate:
achizitie periodica de date de la senzori
protocol software pentru DHT11, implementat manual prin controlul duratei impulsurilor
pastrarea ultimei valori valide pentru DHT11, pentru a evita afisarea unor valori invalide la erori ocazionale
conversia valorilor brute de la soil sensor si LDR in procente si etichete usor de inteles pentru utilizator
controlul automat al iluminarii
controlul automat al pompei peristaltice
folosirea unei zone de buffer (hysteresis) pentru pragurile de lumina si umiditate a solului, astfel incat becul si pompa sa nu porneasca si sa se opreasca foarte des in jurul pragului
afisare locala pe TFT sub forma unui „plant pet”, care isi modifica expresia in functie de starea plantei
interfata web locala - WiFi access point
organizarea codului pe module separate: logica principala, display TFT, conversii si webserver
Functii implementate:
initializare display TFT
desenare elemente grafice si animatii simple pe TFT
afisarea unui personaj virtual care indica starea plantei: HAPPY, THIRSTY, LOW TANK, TOO HOT, LOW LIGHT, ERROR
citire senzor DHT11
citire ADC
conversie valori raw in procente pentru umiditatea solului si nivelul de lumina
control bec prin MOSFET
control pompa peristaltica prin MOSFET
pornire modul WiFi in modul Access Point
handlers HTTP pentru pagina web, raportarea starii curente si actualizarea pragurilor
actualizare interfata web cu valorile senzorilor si starile actuatorilor
Am obtinut un produs compact, care poate fi asezat langa o planta. Acesta poate monitoriza si ajusta mediul in care planta se dezvolta si ofera atat o interfata web pentru configurare si vizualizare, cat si o interfata locala sugestiva sub forma unui „animal de companie” virtual asociat plantei.
Concluzii
Jurnal
2026/05/06 - am creat pagina de OCW
2026/05/13 - am adaugat partea de Hardware
2026/05/18 - am adaugat partea de Software
2026/05/24 - am adaugat functionalitati noi codului (animatia si conversiile de la raw values la %)
Bibliografie/Resurse