Sistem de irigare automat

Introducere

Proiectul este un sistem de irigare automat care monitorizează umiditatea solului și controlează o pompă de apă pentru a iriga plantele atunci când este necesar.

  • Ce face: Măsoară periodic umiditatea solului și pornește pompa de apă atunci când valorile scad sub un prag prestabilit.
  • Scop: Automatizarea procesului de udare a plantelor pentru a evita uscarea acestora și a reduce risipa de apă.
  • Ideea de la care am pornit: Mi-am dorit o soluție simplă și fiabilă pentru îngrijirea plantelor aromatice, pe care multe persoane le cresc acasă pentru a le folosi în mâncare. De multe ori, aceste plante se usucă din neglijență sau lipsă de timp.
  • Utilitate: Oferă comoditate utilizatorilor care doresc plante sănătoase fără grija zilnică a udării. Este suficient să umpli recipientul cu apă. Ideal pentru bucătării, apartamente sau mici grădini urbane.

Descriere generală

Utilizatorul plasează senzorul de umiditate în solul plantei. Dacă nivelul de umiditate scade sub un prag prestabilit, Arduino activează automat pompa de apă pentru a iriga planta. Utilizatorul poate interveni manual apăsând un buton fizic care declanșează irigarea independent de senzor. Această acțiune este tratată prin întrerupere. Sistemul afișează în timp real pe LCD valorile de umiditate și starea pompei. Un senzor de distanță verifică nivelul apei din recipientul pompei, iar în cazul în care nu mai există apă, irigarea este blocată pentru siguranță. Comunicarea între componente se face prin protocoale I2C, ADC și semnale digitale.

Hardware Design

Bill of Materials

Componentă Cantitate Link/Specificații
Arduino UNO R3 1 datasheet
Senzor umiditate sol 1 link_piesa
Modul releu 5V 1 link_piesa
Pompă de apă 1 link_piesa
LCD 16×2 I2C 1 -
Buton 1 -
Breadboard 1 -
Tub Teflon 1 link_piesa
Cabluri M-M 1 -
HC-SR04 (ultrasonic) 1 datasheet

Schema Electrica

Descriere Detaliata

  • Senzorul de umiditate trimite semnal analogic către pinul A0. Arduino citește acest semnal. Dacă valoarea e sub pragul de 600/1023, pornește pompa.
  • Pompa este controlată printr-un modul releu comandat de pinul D8. LCD-ul este legat prin I2C la SDA și SCL și afișează statusul curent (mai exista apa in rezervor, udam planta, umiditate scazuta).
  • Butonul este conectat la D2 și tratat cu întrerupere externă pentru a activa manual pompa. Senzorul ultrasonic este conectat la D7/D9 și returnează distanța până la suprafața apei pentru a detecta dacă rezervorul e gol.
  • Pompa este alimentată separat de Arduino printr-o baterie de 9V, iar prin releu Arduino permite trecerea curentului sau nu.
Componentă Pin Arduino Funcție
Senzor umiditate A0 Citire analogică (ADC)
Releu pompă D8 Control digital
Buton D2 Activare manuală (Intreruperi)
LCD I2C A4 (SDA), A5 (SCL) Afișaj
HC-SR04 D8 (Trig), D9 (Echo) Măsurare nivel apă - Control digital

Software Design

Descrierea codului aplicației (firmware):

Mediu de dezvoltare: Arduino IDE (versiunea 1.8.x/2.x), compilator AVR-GCC

Librării utilizate:

  • LiquidCrystal_I2C pentru controlul afișajului LCD prin I2C
  • Wire.h pentru comunicație I2C

Algoritmi și structuri:

  • Citire analogică a valorii de umiditate
  • Comutare mod manual/automat prin întrerupere
  • Măsurare nivel apă prin senzor ultrasonic
  • Control releu pentru pompare
  • Mapare valori umiditate pentru afșare procentuală

Funcții implementate:

  • setup(): inițializare pini, LCD, serial, întreruperi
  • loop(): logică principală de irigare
  • toggleManualMode(): ISR pentru comutare mod manual
  • getDistance(): măsoară distanța apei cu HC-SR04

pasca_robert-paul_cod.zip

Rezultate Obţinute

  • Sistemul detectează corect nivelul de umiditate și irigă planta automat când pragul este depășit
  • Modul manual funcționează printr-o simplă apăsare de buton (fără debounce, dar fiabil la testare)
  • LCD-ul afișează corect starea sistemului: nivelul de umiditate, stare rezervor, stare pompă
  • Senzorul ultrasonic identifică precis golirea rezervorului, iar sistemul evită pornirea pompei în acest caz

Concluzii

Sistemul propus și-a atins obiectivele: este funcțional, fiabil și ușor de folosit. Interfața LCD ajută utilizatorul să îndeleagă starea sistemului. Modul automat și cel manual oferă flexibilitate, iar verificarea rezervorului asigură protecția pompei. Poate fi extins ușor cu conectivitate wireless sau control prin aplicație mobilă.

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

  • Săptămâna 1: Cercetare componente, testare individuală
  • Săptămâna 2: Montaj hardware și scriere cod inițial
  • Săptămâna 3: Debugging senzori, testare mod manual
  • Săptămâna 4: Integrare finală și documentare

Bibliografie/Resurse

Resurse Hardware

  • Datasheet Arduino UNO R3
  • Datasheet HC-SR04
  • Resurse Software

Arduino IDE

  • LiquidCrystal_I2C library
  • Wire library
pm/prj2025/apredescu/robert_paul.pasca.txt · Last modified: 2025/05/28 10:36 by robert_paul.pasca
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