This is an old revision of the document!


AquaBuddy - Sistem Inteligent de Asistență pentru Plante

Introducere

Proiectul reprezintă un sistem inteligent de gestionare a irigațiilor. Dispozitivul monitorizează nivelul de umiditate din sol și controlează o pompă de apă pentru a menține un mediu optim de creștere. Utilizatorul interacționează cu sistemul printr-o interfață formată dintr-un ecran LCD și 3 butoane de control, care permit setarea pragurilor și alegerea modului de lucru.

Ideea a pornit de la nevoia de a automatiza îngrijirea plantelor pe perioade lungi (concedii, sesiuni), asigurând în același timp o utilizare eficientă a apei. Utilitatea proiectului oferă siguranța că planta primește apă exact când are nevoie, protejând-o de ofilire sau de putrezirea rădăcinilor cauzată de udarea excesivă.

Descriere generală

Proiectul automatizează sistemul de irigare a plantelor folosind 3 moduri principale de funcționare, oferind utilizatorului flexibilitate maximă în întreținerea plantelor:

  • Modul Automat: Sistemul se bazează strict pe senzorul de umiditate din sol. Utilizatorul setează un prag minim din butoane, iar dacă pământul se usucă și scade sub această valoare (de exemplu sub 40%), pompa pornește singură până când planta primește suficientă apă.
  • Modul Cronometrat: Aici senzorul este ignorat, iar irigarea se face pe bază de timp. Din meniul de pe ecranul LCD, utilizatorul poate seta la ce interval de timp să pornească pompa (de exemplu, să ude o dată la 12 ore sau la 2 zile), fix ca un sistem clasic de grădinărit.
  • Modul Hibrid: Sistemul ține cont simultan de ambele praguri (cel de umiditate și cel de timp). Dacă pământul se usucă foarte repede din cauza căldurii, pompa pornește dictată de senzor. Dacă pământul este încă relativ umed, dar a expirat timpul setat pe cronometru, pompa pornește dictată de timer. Practic, oricare dintre cele două condiții este atinsă prima, declanșează udarea plantei.

Navigarea prin aceste moduri și setarea pragurilor de timp sau umiditate se face din butoanele fizice de pe plăcuță, având mereu pe ecranul LCD un meniu clar cu starea sistemului.

Module hardware

Modulul de achiziție și monitorizare - cuprinde senzorul de umiditate și circuitele de condiționare a semnalului. Acest ansamblu are rolul de a furniza date analogice constante despre starea solului către unitatea centrală.

Modulul de alimentare și management energetic - include mufa de alimentare (DC/USB) și regulatoarele de tensiune necesare pentru a asigura pragurile de 5V pentru logică și curentul necesar pentru pompă.

Modulul de pompare și execuție - format din pompa submersibilă și etajul de putere (Driver-ul MOSFET). Acesta primește comanda de la microcontroler și acționează fizic asupra mediului prin transportul apei.

Modulul de interfață utilizator - ansamblul format din ecranul LCD și butoanele de control, care permite comunicarea bidirecțională între om și sistem.

Module software

Modulul de control central - “creierul” aplicației care implementează cele 3 regimuri (Automat, Cronometrat, Hibrid). Acesta procesează input-urile și decide starea actuatoarelor folosind o mașină de stări.

Modulul interactiv de meniu - componenta software care gestionează navigarea pe LCD, afișarea datelor în timp real și preluarea comenzilor de la butoane prin tratarea întreruperilor.

Modulul de drivere periferice - cuprinde codul low-level pentru comunicarea I2C (pentru LCD), configurarea ADC-ului (pentru senzor) și generarea semnalelor de control pentru motor.

Modulul de gestiune a timpului - utilizează timerele hardware ale ATmega328P pentru a asigura precizia intervalelor de udare și pentru a gestiona resetarea automată a cronometrului în modul hibrid.

Hardware Design

Module hardware:

  • Senzor umiditate sol – utilizat pentru a măsura în timp real nivelul de hidratare al substratului plantei și pentru a trimite datele către convertorul ADC.
  • Pompă de apă (3V - 6V) – elementul de execuție principal, responsabil pentru procesul de irigare propriu-zis.
  • Driver MOSFET (IRF520) – folosit pentru a comanda pompa de apă, permițând controlul unor curenți mari prin semnale de joasă putere de la microcontroler (suportă și control prin PWM).
  • Display LCD 16×2 (I2C) – utilizat pentru a afișa umiditatea curentă, modul de funcționare selectat și pentru a naviga în meniul de configurare.
  • Butoane de control – folosite pentru interacțiunea cu utilizatorul, permițând schimbarea regimului de funcționare (Automat/Cronometrat/Hibrid) și setarea pragurilor.

Descrierea conexiunilor și a pinilor utilizați

1. Display LCD 1602 (Modul I2C)

  • PC4 (SDA) și PC5 (SCL): Pinii hardware dedicați magistralei I2C pe ATmega328P.
  • 5V și GND: Alimentarea logică a ecranului, preluată direct de pe placa microcontrolerului.

2. Senzor de Umiditate a Solului (FC-28)

  • PC0: Pin analogic folosit pentru a citi căderea de tensiune de pe senzor. Utilizează convertorul analog-digital (ADC) intern pentru a transforma valoarea într-un număr (0-1023).
  • PD7: Alimentarea senzorului (VCC) nu este legată permanent la 5V, ci este controlată prin acest pin. Senzorul este pornit doar 10 milisecunde pe secundă (Duty Cycle 1%) exclusiv în momentul citirii, pentru a preveni distrugerea electrozilor prin fenomenul de electroliză.
  • GND: Conectat la masa comună a sistemului.

3. Modul de Putere MOSFET (IRF520) - Control Pompă

  • PD6 (SIG): Pin digital configurat ca ieșire pentru a comanda poarta (Gate) tranzistorului (ON/OFF). A fost ales un pin cu suport hardware PWM, lăsând deschisă posibilitatea reglării debitului pompei pe viitor.
  • VCC și GND (Logic): Alimentarea de 5V preluată de pe placă pentru referința tranzistorului și aprinderea LED-ului indicator de stare.
  • VIN / GND_IN (Borne șurub): Conectate la o sursă de alimentare separată dedicată pompei, cu masa (GND) pusă în comun cu placa de dezvoltare.
  • V+ / V- (Borne șurub): Traseul prin care se livrează tensiunea către pompa submersibilă de apă.

4. Blocul de Butoane (Meniu, Up, Down)

  • PD2 (INT0) - Buton Meniu: Pin digital ales specific deoarece suportă întreruperi externe hardware directe. Permite ieșirea instantanee din sleep sau din bucle lungi la apăsare.
  • PD3 (INT1) - Buton UP: Pin ales din același motiv, având vector de întrerupere hardware dedicat (INT1).
  • PD4 (PCINT20) - Buton DOWN: Pin ales pentru a menține toate butoanele pe același port (Portul D). Deoarece nu are un INT dedicat, se folosește facilitatea de Pin Change Interrupt (PCINT).
  • Conexiunea la masă: Toate butoanele fac contact direct la GND atunci când sunt apăsate, eliminând necesitatea rezistențelor externe prin utilizarea modulelor de Pull-Up interne ale microcontrolerului.

Software Design

Descrierea codului aplicației (firmware)

Mediul de dezvoltare:

  • Aplicația a fost dezvoltată folosind PlatformIO (Visual Studio Code).
  • S-a utilizat toolchain-ul standard avr-gcc pentru compilarea codului C++.

Librării și surse 3rd-party:

  • S-au folosit librăriile standard din avr-libc: <avr/io.h> (pentru regiștri), <util/delay.h> (pentru temporizări), <avr/interrupt.h> (pentru vectorii de întreruperi) și <stdlib.h>.
  • Comunicarea I2C (TWI) și protocolul de trimitere a pachetelor de 4 biți către display-ul LCD au fost implementate direct pe regiștri.

Algoritmi și structuri implementate:

  • Arhitectură bazată pe Întreruperi și Steaguri (Flags): Citirea butoanelor se face prin întreruperi externe (INT0, INT1, PCINT2). Pentru a nu bloca procesorul, rutinele de tratare (ISR) doar setează variabile de tip volatile, acțiunile propriu-zise fiind executate asincron în bucla principală while(1).
  • State Machine (Automat cu stări finite): Logica principală este structurată pentru a comuta între cele 3 stări/moduri de operare (Automat, Cronometrat, Hibrid) și pentru a actualiza interfața (meniul LCD) în funcție de modul curent.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

16.05.2026

  • Pentru etapa de hardware am facut un cod prvizoriu ca sa demonstrez ca toate componentele sunt functionale: Cele 3 butoane afiseaza pe LCD cand sunt apasate. Senzorul trimite o valoare citita la USART odata la 30 de secunde, iar pompa poate fi activata din USART prin comanda “on”.

https://youtu.be/5-j5lsSoZKQ Video pentru demonstrarea functionalitatii pompei si a senzorului (vizibil pe USART - 1022/1023 senzorul fiind lasat liber)

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2026/vlad.radulescu2901/amarinescu0804.1779534539.txt.gz · Last modified: 2026/05/23 14:08 by amarinescu0804
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0