Table of Contents

Sistem autonom de irigare

Sistem autonom de irigare

Introducere

Proiectul constă într-un sistem de irigare autonomă capabil să monitorizeze starea solului și nivelul apei din rezervor, apoi să activeze automat o pompă pentru udarea plantelor. Sistemul este alimentat printr-un acumulator încărcat de un panou solar, ceea ce îi permite să funcționeze independent și eficient energetic, fără a necesita alimentare constantă de la priză. Utilizatorul poate urmări în timp real informații precum umiditatea solului, nivelul bateriei sau starea pompei pe un display OLED și poate controla sistemul direct de pe telefon prin conexiune Wi-Fi.

Descriere Generala

Hardware Design

Schema electrică

Pini

Pin Componenta Rol
3V3/VCC/VDDSenzor ultrasonic, OLED, senzor umiditateAlimentează 3V3
GNDToate componenteleÎmpământarea
19OLEDSDA(date)
23OLEDSCL(clock)
32Senzor umiditateADC pentru citire umiditate sol
33Divizor de tensiuneADC pentru nivel baterie
25Senzor ultrasonicTRIG-declanșare semnal
26Senzor ultrasonicECHO-primire semnal
27MOSFETFolosit pentru comandarea pompei

Componente

Consum

Panoul Solar: operează în jur de 12V (tensiunea de putere maximă)

Bateria Li-Ion 18650: are o tensiune nominală de 3.7V. Când este complet descărcată are în jur de 3.0V, iar când modulul CN3791 o încarcă la maximum, ajunge la 4.2V

ESP32: are un regulator intern. Îl poți alimenta direct din baterie pe pinul BAT sau 3.3V, deoarece placa acceptă tensiunea variabilă a bateriei (3.0V - 4.2V)

Pompa de apă: funcționează între 3V și 6V

Calcule încărcare(plin soare)

Putere panou: 4.2W

Curent maxim din modul spre baterie: 500mA la 4.2V (Putere necesară = 4.2V * 0.5A = 2.1W)

Timp de încărcare: T = Capacitate baterie/Curent încărcare = 2850mAh/500mAh = 5.7h ⇒ deci, în realitate, ar veni undeva la 6h.

Consum daca este ținut nonstop

ESP32: ~100mA(cu Wi-fi pornit)

Pompa de apă: ~200mA

Consum total ~= 300mA

Durata de viață: 2850mA/300mA ~= 9.5h

Deci, daca sistemul funcționează nonstop acesta are autonomie ~9.5h.

Stagiul curent

Dovadă funcționare componentă(senzor ultrasonic)

Aceasta este o captură de ecran din serial monitor. Am scris un program scurt care arată funcționalitatea senzorului ultrasonic.

Software Design

Mediul de dezvoltare

Biblioteci si surse externe

Pentru acest proiect am implementat următoarele biblioteci proprii:

Biblioteci externe:

Functionalitati

Sistemul are următoarele funcționalități:

Funcționalitățile din laborator sunt:

Design

Citirea valorilor analogice

Am optat pentru utilizarea exclusivă a unității ADC1 evitând ADC2 deoarece acesta intră în conflict hardware cu modulul Wi-Fi. Pentru a asigura acuratețea, am implementat o fază de warm-up (primele 5 eșantioane de la boot sunt ignorate) și un filtru software pentru atenuarea zgomotului de citire.

Serverul HTTP

Serverul rulează asincron. Pentru a decupla rețeaua de citirea directă a senzorilor, modulele nu comunică direct; serverul citește datele dintr-o zonă de memorie cache, actualizată periodic de bucla principală. Pagina HTML are implementat un tag de auto-refresh la fiecare 2 secunde pentru actualizarea automată a metricilor în browser.

Automatizarea pompei

Logica de udare rulează într-un task independent, complet separat de serverul HTTP. Această decizie garantează că plantele sunt udate chiar și în absența unei conexiuni Wi-Fi sau a unui utilizator activ pe site. Algoritmul verifică starea la fiecare 200ms și pornește pompa doar dacă solul rămâne uscat(sub pragul critic) timp de minimum 2 secunde continuu, prevenind declanșările false.

Sistem manual

Pe lângă modul autonom, interfața web permite controlul manual. În momentul în care utilizatorul trimite o comandă manuală prin HTTP, automatizarea este dezactivată prin activarea unui flag, oferind control total utilizatorului până la oprirea manuală a acesteia.

Sistem de siguranta

Ca măsură critică de siguranță hardware, atât algoritmul automat, cât și comanda manuală sunt suprascrise și blocate instant dacă nivelul din rezervorul de apă scade sub 10%. Aceasta previne funcționarea pompei în gol și arderea ei.

Timer

Senzorul ultrasonic și funcțiile de delay necesită precizie mililitară. Am configurat direct din regiștri Timerul 0 cu un divizor hardware de 80. Astfel, frecvența de bază a procesorului este împărțită pentru a obține o rezoluție de fix 1MHz, ceea ce înseamnă exact o microsecundă per tick.

Main

În el se află bucla principală. La fiecare 2 secunde, aceasta apelează eșantionarea senzorilor, trimite datele către cache-ul HTTP și reîmprospătează ecranul OLED. La finalul fiecărui ciclu, task-ul cedează controlul schedulerului FreeRTOS prin vTaskDelay pentru a permite altor procese de fundal(precum Wi-Fi-ul) să ruleze stabil.

Github Repo

https://github.com/dogeanuMA28/sistem_de_irigare_pm/tree/main

Video testare

https://www.youtube.com/shorts/QqSstJF_evk