Table of Contents

Sistem inteligent de udare automată pentru orhidee

Introducere

De multe ori, oamenii uită să își ude plantele la timp, mai ales în perioadele aglomerate sau atunci când pleacă de acasă pentru câteva zile. În cazul orhideelor, această problemă este și mai importantă, deoarece ele sunt plante sensibile atât la lipsa apei, cât și la excesul de apă. O udare incorectă poate afecta rădăcinile și poate duce la deteriorarea plantei.

Proiectul propus este un sistem inteligent de udare automată pentru o orhidee, realizat folosind placa ATmega328P-XMINI. Sistemul măsoară umiditatea solului și temperatura mediului, apoi decide dacă planta are nevoie de apă. Dacă solul este prea uscat, sistemul afișează un mesaj de avertizare și activează o pompă de apă pentru a uda planta.

Scopul proiectului este automatizarea unei activități simple, dar importante: îngrijirea corectă a unei plante. Sistemul poate fi util pentru persoanele care uită să ude plantele, pentru perioadele în care utilizatorul este plecat de acasă sau pentru monitorizarea mai atentă a unei plante sensibile, precum orhideea.

Descriere generală

Sistemul este alcătuit din mai multe module hardware și software care lucrează împreună pentru monitorizarea și udarea automată a orhideei. Placa ATmega328P-XMINI reprezintă unitatea centrală de control. Aceasta citește valorile senzorilor, decide starea plantei și comandă afișajul, LED-ul RGB și pompa de apă.

Senzorul de umiditate a solului măsoară nivelul de apă din sol și transmite o valoare analogică către microcontroler. Senzorul de temperatură măsoară temperatura mediului, iar această valoare poate fi folosită pentru ajustarea cantității de apă. De exemplu, la temperaturi mai mari, planta poate avea nevoie de o cantitate mai mare de apă.

Display-ul OLED este folosit pentru afișarea mesajelor principale ale sistemului, iar LED-ul RGB oferă o indicație rapidă a stării plantei. Pompa de apă este controlată printr-un modul releu, deoarece nu poate fi alimentată direct de la un pin al microcontrolerului.

Schema bloc a sistemului este următoarea:

Schema bloc a sistemului de udare automată

Funcționarea generală a sistemului:

Hardware Design

Componentele folosite în proiect sunt:

În stadiul actual, componentele principale ale sistemului sunt funcționale: senzorul de umiditate, senzorul de temperatură, display-ul OLED, LED-urile de stare, butonul manual, releul și pompa de apă.

Conexiunile principale folosite sunt:

Componentă Interfață / pin folosit Rol
ATmega328P-XMINI placă principală Controlează întregul sistem
Senzor umiditate sol A0 / PC0 / ADC0 Măsoară umiditatea solului
Senzor temperatură LM35 A1 / PC1 / ADC1 Măsoară temperatura mediului
Display OLED I2C: SDA = A4 / PC4, SCL = A5 / PC5 Afișează valorile senzorilor și starea sistemului
Modul releu D4 / PD4 Controlează pornirea și oprirea pompei
Pompă apă DC prin releu Realizează udarea plantei
LED roșu D5 / PD5 / PWM Semnalizare udare automată și efect fade
LED verde D6 / PD6 Indică starea normală a sistemului
LED albastru D7 / PD7 Indică faptul că pompa este activă
Buton manual D2 / PD2 / INT0 Pornește udarea manuală
USART / USB serial TX/RX Debug și monitorizare în terminal

Descrierea detaliată a conexiunilor:

LED-urile sunt folosite pentru afișarea rapidă a stării sistemului:

LED Semnificație
Verde Sistemul este OK sau se află în perioada de așteptare după udare
Roșu Planta necesită udare / udare automată în desfășurare
Albastru Pompa este activă
Albastru + roșu cu fade Udare automată
Albastru simplu Udare manuală

În implementarea finală, LED-ul verde indică faptul că sistemul este în stare normală. LED-ul albastru indică activarea pompei. Pentru udarea manuală se aprinde doar LED-ul albastru, iar pentru udarea automată se aprinde LED-ul albastru împreună cu LED-ul roșu, care scade treptat în intensitate folosind PWM.

Schema electrică

Schema electrică a sistemului este prezentată în figura de mai jos. Aceasta evidențiază conexiunile dintre placa ATmega328P-XMINI și modulele externe: senzorul de umiditate, senzorul de temperatură, display-ul OLED, modulul releu, pompa de apă, LED-urile de stare și butonul manual.

Schema electrică a sistemului

Schema electrică urmărește conexiunile reale folosite în montajul pe breadboard. Senzorii analogici sunt conectați la intrările ADC A0 și A1, display-ul OLED este conectat prin magistrala I2C, iar pompa este comandată printr-un modul releu conectat la pinul D4. LED-ul roșu este conectat la un pin PWM pentru a permite variația intensității luminoase, iar LED-urile verde și albastru sunt conectate la pini digitali simpli.

Imagini ale montajului hardware

În continuare sunt prezentate imagini din timpul realizării și testării montajului hardware.

Montaj general pe breadboard

Figura 1 prezintă montajul general al sistemului pe breadboard. Se pot observa placa ATmega328P-XMINI, senzorii, LED-urile, butonul, display-ul OLED, modulul releu și conexiunile realizate cu fire Dupont.

Modul releu și pompă de apă

Figura 2 prezintă conexiunea dintre modulul releu și pompa de apă. Releul este comandat de microcontroler și permite pornirea sau oprirea pompei fără ca aceasta să fie alimentată direct dintr-un pin GPIO.

Display OLED în funcționare

Figura 3 prezintă display-ul OLED în timpul funcționării. Acesta afișează starea sistemului, valoarea umidității solului, valoarea ADC și temperatura măsurată.

Dovezi de funcționare

Funcționarea sistemului a fost verificată prin mai multe teste:

În urma testelor, sistemul poate detecta o valoare de umiditate corespunzătoare solului uscat și poate porni automat pompa. De asemenea, utilizatorul poate porni manual udarea prin apăsarea butonului. După udare, sistemul intră într-o stare de așteptare, pentru ca apa să se distribuie în sol, apoi revine la monitorizarea normală.

Stadiul actual al implementării

În stadiul actual, sistemul hardware principal este funcțional. Au fost conectate și testate următoarele componente: senzorul de umiditate a solului, senzorul de temperatură, display-ul OLED, butonul manual, LED-urile de stare, modulul releu și pompa de apă.

Senzorul de umiditate este citit periodic prin ADC, iar valorile sunt afișate atât în terminalul serial, cât și pe display-ul OLED. Senzorul de temperatură este citit printr-un al doilea canal ADC și valoarea este convertită în grade Celsius.

Pompa de apă este controlată prin releu. Sistemul poate porni udarea automat atunci când valorile senzorului indică sol uscat, dar poate porni și manual prin apăsarea butonului. După udare, sistemul intră într-o stare de așteptare pentru ca apa să se distribuie în sol.

Display-ul OLED afișează starea sistemului: ORCHID OK, AUTO WATERING, MANUAL WATER sau WAITING. LED-urile oferă semnalizare vizuală rapidă: verde pentru stare normală, albastru pentru pompă activă și roșu pentru udare automată.

Software Design

Proiectul este implementat în C/C++ folosind framework-ul Arduino, în mediul Visual Studio Code cu PlatformIO. Codul rulează direct pe microcontroller și controlează senzorii, pompa, LED-urile, butonul și display-ul OLED.

Stadiul actual al implementării

În stadiul actual, proiectul poate citi umiditatea solului și temperatura, poate calcula automat cantitatea de apă necesară și poate porni pompa prin releu. Sistemul permite și udare manuală prin apăsarea unui buton tratat cu întrerupere externă.

Biblioteci folosite

Funcționalități din laborator utilizate

Scheletul proiectului

Logica proiectului este organizată ca o mașină de stări cu următoarele stări:

În loop() se citesc senzorii, se calculează umiditatea și temperatura, se verifică starea sistemului, se pornește sau se oprește pompa și se actualizează LED-urile, OLED-ul și mesajele transmise prin Serial.

Validare

Funcționalitatea a fost validată prin verificarea valorilor ADC în Serial Monitor, testarea afișajului OLED, testarea releului și a pompei, verificarea LED-urilor și testarea butonului cu întrerupere. De asemenea, au fost testate tranzițiile dintre stările sistemului.

Calibrarea senzorilor

Senzorul de umiditate a fost calibrat experimental prin citirea valorilor ADC pentru sol uscat și sol umed. Valorile obținute au fost folosite ca praguri pentru SOIL_DRY_ADC și SOIL_WET_ADC, iar apoi au fost transformate în procent de umiditate folosind map().

Optimizări

Arhivă proiect

Fișierul atașat conține codul sursă, configurația proiectului și resursele folosite pentru implementarea sistemului automat de udare. Arhivă proiect

Resurse / Bibliografie

Pentru realizarea proiectului am folosit documentații tehnice și resurse online pentru componentele hardware și bibliotecile software utilizate. Documentația pentru microcontrolerul ATmega328P a fost folosită pentru înțelegerea pinilor disponibili, a intrărilor ADC, a pinilor digitali și a funcționării generale a microcontrolerului. Pentru senzorul de temperatură LM35 am folosit fișa tehnică, deoarece aceasta explică faptul că senzorul are o ieșire analogică liniară de 10 mV/°C, valoare folosită în conversia din ADC în grade Celsius. Pentru display-ul OLED cu controller SSD1306 am folosit documentația bibliotecilor Adafruit SSD1306 și Adafruit GFX, necesare pentru afișarea textului pe ecran prin interfața I2C. De asemenea, am folosit resurse Arduino pentru funcțiile de bază precum `pinMode()`, `digitalRead()`, `digitalWrite()`, `analogRead()`, `analogWrite()` și `millis()`, folosite în implementarea logicii de control, citirea senzorilor, PWM pentru LED-ul roșu și temporizarea fără blocare. Pentru controlul pompei am consultat resurse despre utilizarea unui modul releu cu Arduino, deoarece pompa nu poate fi alimentată direct dintr-un pin GPIO al microcontrolerului.