Sistem Inteligent de Irigare a Plantelor
1. Introducere
Proiectul realizat are ca scop implementarea unui sistem automat de irigare a plantelor, bazat pe monitorizarea umidității solului și a nivelului apei din rezervor. Sistemul utilizează un microcontroler pentru achiziția datelor de la senzori, procesarea acestora și controlul acționării unei pompe de apă, precum și pentru transmiterea informațiilor către un dispozitiv extern prin comunicație wireless.
Acest sistem demonstrează integrarea mai multor periferice hardware (ADC, GPIO, UART, întreruperi), realizând un exemplu practic de aplicație embedded în domeniul automatizării.
2. Obiectivele Proiectului
Automatizarea irigării: Menținerea unui nivel optim de umiditate pentru plante, prevenind atât udarea excesivă, cât și uscarea solului.
Eficiența resurselor: Minimizarea consumului de apă prin activarea pompei doar atunci când senzorul raportează valori sub pragul critic prestabilit.
Siguranța hardware: Protejarea pompei de apă prin oprirea automată a acesteia atunci când rezervorul este gol, utilizând un sistem bazat pe întreruperi externe pentru un timp de răspuns instantaneu.
Telemetrie: Facilitarea monitorizării de la distanță a stării sistemului (nivel umiditate, stare pompă, avertizări) prin intermediul comunicației Bluetooth.
3. Schema bloc
Sistemul este organizat în mai multe blocuri funcționale principale, ilustrate în diagrama de mai jos:
┌───────────────────────────┐
│ Senzor Umiditate │
│ (semnal analogic) │
└───────────┬───────────────┘
│ ADC
▼
┌───────────────────┐
│ │
│ Microcontroler │
│ ATmega328P │
│ Xplained Mini │
│ │
└───────┬───────────┘
│
┌──────────────────┼──────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌──────────────────┐
│ Senzor Nivel │ │ Modul Releu │ │ Modul Bluetooth │
│ Apă (digital) │ │ (control) │ │ HC-05 │
└───────┬───────┘ └───────┬───────┘ └────────┬─────────┘
│ Interrupt │ GPIO │ UART
▼ ▼ ▼
┌───────────────┐
│ Pompă │
│ (actuator) │
└───────────────┘
┌───────────────────────────┐
│ Sursă Alimentare │
│ 5V │
└───────────┬───────────────┘
│
────────────────────┼────────────────────────
│
(alimentează toate componentele)
Componentele diagramei bloc sunt:
Bloc de achiziție date (input): include senzorul de umiditate a solului (semnal analogic) și senzorul de nivel apă cu flotant (semnal digital).
Bloc de procesare: reprezentat de microcontrolerul ATmega328P Xplained Mini, care citește datele de la senzori, implementează logica de decizie și dictează starea actuatorului.
Bloc de acționare: modulul releu utilizat ca interfață de putere pentru controlul pompei de apă.
Bloc de comunicație: modulul Bluetooth utilizat pentru transmiterea datelor către interfața utilizatorului.
Bloc de alimentare: sursa de tensiune stabilizată care asigură funcționarea și referința de tensiune pentru ADC și restul circuitului.
4. Descrierea componentelor hardware
Microcontrolerul: Sistemul este construit în jurul plăcii de dezvoltare ATmega328P Xplained Mini. Aceasta oferă perifericele interne esențiale: modulul ADC (Analog-to-Digital Converter) cu rezoluție de 10-bit pentru citirea senzorului de umiditate, interfața UART (Universal Asynchronous Receiver-Transmitter) pentru comunicația Bluetooth și pini GPIO configurați specific pentru controlul releului și citirea senzorului de nivel.
Senzorul de umiditate a solului: Este utilizat un Capacitive Soil Moisture Sensor v1.2, care furnizează o tensiune analogică dependentă de capacitatea electrică a solului (care se modifică proporțional cu cantitatea de apă). Spre deosebire de senzorii rezistivi, acesta nu suferă de coroziune rapidă. Este conectat la un canal ADC al microcontrolerului.
Senzorul de nivel al apei: Se folosește un Float Water Level Sensor, un contact de tip Reed care generează un semnal digital (ON/OFF). Acesta este conectat la un pin al microcontrolerului configurat ca sursă de întrerupere externă (ex. `INT0`), asigurând detecția asincronă și prioritară a golirii rezervorului.
Sistemul de pompare: Pompa utilizată este o Mini Submersible Water Pump 5V, controlată prin intermediul unui Relay Module 5V 1-Channel. Releul asigură izolarea galvanică absolut necesară între circuitul de comandă de curent mic al microcontrolerului și circuitul de putere al pompei.
Modulul de comunicație: Pentru transmiterea datelor către utilizator se utilizează un HC-05 Bluetooth Module, conectat la pinii hardware de RX/TX ai UART-ului.
Componente auxiliare: Sistemul include un divizor de tensiune rezistiv (necesar pentru a adapta nivelul logic de 5V generat de pinul TX al ATmega328P la nivelul maxim tolerat de 3.3V pe pinul RX al HC-05), condensatori de decuplare pentru stabilizarea alimentării și o diodă 1N4007 (Flyback Diode) plasată anti-paralel pe terminalele pompei pentru a proteja circuitul împotriva tensiunilor inverse (forță contra-electromotoare) generate de sarcina inductivă la dezactivarea releului.
5. Funcționarea generală și implementarea software
Logica sistemului se bazează pe o buclă de control (polling temporizat) combinată cu tratarea asincronă a evenimentelor critice:
Citirea și filtrarea datelor: Folosind un Timer hardware, microcontrolerul declanșează la intervale regulate o conversie ADC pentru umiditatea solului. Pentru a preveni comutările oscilante ale releului datorate zgomotului, se implementează software un filtru de tip medie mobilă (moving average) peste ultimele N eșantioane citite.
Banda de histerezis: Valoarea obținută este comparată cu două praguri. Pompa pornește doar când umiditatea scade sub un prag minim și se oprește doar când atinge un prag maxim superior. Acest mecanism de histerezis previne cuplarea/decuplarea repetată și rapidă a releului la granița unei singure valori de prag.
Tratarea Întreruperilor (ISR): Pinul conectat la senzorul de nivel al apei monitorizează tranzițiile. Dacă senzorul semnalează lipsa apei (ex. tranziție falling edge), microcontrolerul suspendă execuția buclei principale și intră în rutina de tratare a întreruperii (ISR). În ISR, comanda către releul pompei este anulată instantaneu pentru a proteja motorul de funcționarea în gol, iar un flag de eroare este setat în software.
Raportare Serială: În fluxul principal, datele de stare curente (nivelul ADC convertit în procente de umiditate și statusul Safe/Error al rezervorului) sunt formatate în string-uri și transmise non-blocant prin regiștrii modulului USART către adaptorul Bluetooth.