This is an old revision of the document!


Sistem inteligent de monitorizare a umidității solului

Introducere

Proiectul constă în realizarea unui sistem embedded pentru monitorizarea umidității solului unei plante. Sistemul măsoară nivelul de umiditate folosind un senzor higrometru capacitiv, afișează valoarea măsurată și statusul plantei pe un display LCD 16×2, iar atunci când umiditatea scade sub un prag prestabilit, avertizează utilizatorul prin aprinderea unui LED roșu și pornirea unui buzzer activ.

Scopul proiectului este de a ajuta utilizatorul să știe când planta are nevoie de apă și de a urmări evoluția umidității solului în timp. Pentru acest lucru, sistemul salvează măsurătorile pe un card microSD, împreună cu data și ora obținute de la un modul RTC DS3231. De asemenea, valorile măsurate și statisticile calculate pot fi transmise prin Bluetooth către un telefon sau laptop, folosind un modul HC-05.

Care este ideea de la care am pornit și de ce este util? Ei bine, eu toată viața mea, am avut 3 ghivece cu plante: primul eram in gimnaziu, era o floare, a ținut 1 lună, al doilea eram în liceu și am avut un cactus (m-a ținut 3 luni) și acum am unul de o lună și cred că e timpul să accept decesul. Mereu uit să ud plantele și știu sigur că este o problemă pentru multe persoane. Statisticile transmise prin bluetooth mă pot ajuta să-mi dau seama în fazele neoportune ale plantei dacă e din cauza udatului excesiv sau udatului prea rar sau non existent.

Prezentarea pe scurt a proiectului vostru:

  • ce face
  • care este scopul lui
  • care a fost ideea de la care aţi pornit
  • de ce credeţi că este util pentru alţii şi pentru voi

Descriere generală

Sistemul are la bază o placă Arduino UNO R3, care coordonează toate componentele proiectului. Senzorul de umiditate este introdus în sol și trimite către placă o valoare analogică, în funcție de cât de umed sau uscat este pământul. Această valoare este citită prin pinul A0, apoi este transformată într-un procent de umiditate și comparată cu un prag stabilit în program.

Dacă umiditatea scade sub pragul ales, sistemul consideră că planta trebuie udată. În această situație, LED-ul roșu se aprinde, buzzerul pornește, iar pe LCD apare un mesaj de avertizare. Dacă nivelul de umiditate este normal, LED-ul și buzzerul rămân oprite, iar pe ecran este afișat statusul plantei.

Pentru a putea urmări măsurătorile în timp, proiectul folosește un modul RTC DS3231, care oferă data și ora fiecărei citiri. Valorile sunt salvate pe un card microSD într-un fișier de tip `.csv`, astfel încât pot fi analizate ulterior. În plus, prin modulul Bluetooth HC-05, datele curente și statisticile calculate pot fi transmise către un dispozitiv.

Sistemul include și un buton Start/Stop, care permite pornirea sau oprirea monitorizării fără a deconecta alimentarea plăcii.

Modul Hardware Descriere Tehnică Interacțiune / Protocol
Arduino UNO R3 compatibil Unitatea centrală de procesare. Gestionează logica sistemului, calculele și comunicarea cu perifericele. Master-ul sistemului; controlează senzorul, LCD-ul, LED-ul, buzzerul, RTC-ul, microSD-ul și Bluetooth-ul.
Senzor higrometru capacitiv Măsoară umiditatea solului printr-un semnal analogic variabil. Analog / ADC: AOUT → A0.
LCD 16×2 cu I2C Afișează umiditatea curentă și statusul plantei. I2C: SDA → A4, SCL → A5.
RTC DS3231 Oferă data și ora reală pentru fiecare măsurătoare. I2C: SDA → A4, SCL → A5.
Modul microSD Salvează datele într-un fișier CSV. SPI: CS → D10, MOSI → D11, MISO → D12, SCK → D13.
HC-05 Bluetooth Transmite valorile și statisticile către telefon/laptop. UART / SoftwareSerial: TXD → D5, RXD → D6.
LED roșu Avertizare vizuală pentru sol uscat. GPIO digital: D7.
Buzzer activ Avertizare sonoră pentru sol uscat. GPIO digital: D8.
Buton Start/Stop Pornește/oprește monitorizarea logică. Intrare digitală: D2 cu INPUT_PULLUP.

Schema bloc

O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.

Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html

Hardware Design

Descriere componente

Software Design

Mediu de dezvoltare

Firmware-ul proiectului va fi dezvoltat în:

  • PlatformIO în Visual Studio Code

Codul va fi scris în C/C++ pentru Arduino.

Librării folosite

Librărie Rol
Wire.h Comunicare I2C
LiquidCrystal_I2C.h Control LCD 16×2 cu I2C
RTClib.h Citirea datei și orei de la DS3231
SPI.h Comunicare SPI pentru modulul microSD
SD.h Scriere și citire fișiere pe cardul microSD
SoftwareSerial.h Comunicare serială cu modulul Bluetooth HC-05

Algoritmul

La pornirea sistemului:

  1. se inițializează LCD-ul;
  2. se configurează pinii pentru senzor, LED, buzzer și buton;
  3. se inițializează modulul RTC DS3231;
  4. se inițializează cardul microSD;
  5. se inițializează comunicația Bluetooth;
  6. se afișează un mesaj de pornire pe LCD.

În bucla principală:

  1. se verifică starea butonului Start/Stop;
  2. dacă sistemul este oprit logic:
    • LED-ul este stins;
    • buzzerul este oprit;
    • LCD-ul afișează mesajul „Sistem oprit”;
  3. dacă sistemul este pornit:
    • se citește valoarea analogică a senzorului;
    • valoarea ADC este convertită în procent de umiditate;
    • se citește data și ora de la RTC;
    • se stabilește statusul plantei: „OK” sau „UDAȚI PLANTA”;
    • se actualizează LCD-ul;
    • se controlează LED-ul și buzzerul;
    • se salvează datele pe cardul microSD;
    • se actualizează statisticile;
    • se transmit datele prin Bluetooth.

Stabilirea statusului plantei

if (umiditate < pragUmiditate) {
    status = "USCAT";
    digitalWrite(ledPin, HIGH);
    digitalWrite(buzzerPin, HIGH);
} else {
    status = "OK";
    digitalWrite(ledPin, LOW);
    digitalWrite(buzzerPin, LOW);
}

Structuri de date pentru statistici

Pentru calculul statisticilor se pot folosi variabile simple:

int umiditateCurenta;
int umiditateMinima = 100;
int umiditateMaxima = 0;
long sumaUmiditate = 0;
unsigned long numarMasuratori = 0;
int primaMasurare;
int ultimaMasurare;
int masurareAnterioara;
int masuratoriSolUscat = 0;

Statisticile calculate:

  • umiditatea curentă;
  • media umidității;
  • valoarea minimă;
  • valoarea maximă;
  • diferența față de prima măsurătoare;
  • tendința: creștere, scădere sau stabilă;
  • numărul de măsurători în care solul a fost uscat.

Calculul statisticilor

sumaUmiditate += umiditateCurenta;
numarMasuratori++;
 
int media = sumaUmiditate / numarMasuratori;
 
if (umiditateCurenta < umiditateMinima) {
    umiditateMinima = umiditateCurenta;
}
 
if (umiditateCurenta > umiditateMaxima) {
    umiditateMaxima = umiditateCurenta;
}

Calculul tendinței

dacă umiditatea curentă este cu peste 2 puncte mai mare decât valoarea anterioară:
    tendință = CREȘTERE

dacă umiditatea curentă este cu peste 2 puncte mai mică decât valoarea anterioară:
    tendință = SCĂDERE

altfel:
    tendință = STABILĂ

Formatul fișierului CSV

Datele salvate pe cardul microSD pot avea următorul format:

data,ora,umiditate,status,media,minim,maxim,tendinta
2026-05-08,16:30:00,42,OK,48,35,72,SCADERE
2026-05-08,16:35:00,39,OK,47,35,72,SCADERE
2026-05-08,16:40:00,28,USCAT,45,28,72,SCADERE

Mesaj transmis prin Bluetooth

Prin modulul HC-05 se poate transmite un mesaj de forma:

[16:40:00]
Umiditate: 28%
Status: UDATI PLANTA
Media: 45%
Minim: 28%
Maxim: 72%
Tendinta: SCADERE
LED: ON
Buzzer: ON

Funcții planificate

void initHardware();
int citesteUmiditateADC();
int convertesteInProcent(int valoareADC);
void actualizeazaLCD(int umiditate, String status);
void controleazaAvertizari(int umiditate);
void actualizeazaStatistici(int umiditate);
String calculeazaTendinta(int umiditateCurenta, int umiditateAnterioara);
void salveazaPeSD(DateTime timp, int umiditate, String status);
void trimiteBluetooth(DateTime timp, int umiditate, String status);
void verificaButon();

Rezultate Obţinute

În urma realizării proiectului, se urmărește obținerea unui sistem funcțional care:

  • măsoară umiditatea solului;
  • afișează umiditatea și statusul plantei pe LCD;
  • aprinde LED-ul roșu atunci când planta trebuie udată;
  • pornește buzzerul activ cât timp umiditatea este sub pragul stabilit;
  • permite pornirea și oprirea monitorizării cu ajutorul unui buton;
  • citește data și ora de la modulul RTC DS3231;
  • salvează măsurătorile pe cardul microSD într-un fișier CSV;
  • calculează statistici simple despre evoluția umidității;
  • transmite datele și statisticile prin Bluetooth către un dispozitiv extern.

Exemplu de afișare pe LCD când planta are umiditate suficientă:

Umiditate: 42%
Status: OK

Exemplu de afișare pe LCD când planta trebuie udată:

Umiditate: 28%
Status: UDATI

Exemplu de linie salvată pe cardul microSD:

2026-05-08,16:40:00,28,USCAT,45,28,72,SCADERE

Exemplu de mesaj transmis prin Bluetooth:

Ora: 16:40:00 | Umiditate: 28% | Status: UDATI PLANTA | Media: 45%

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

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.

Bibliografie/Resurse

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

Export to PDF

pm/prj2026/cezar.zlatea/ana_maria.focsa.1778297554.txt.gz · Last modified: 2026/05/09 06:32 by ana_maria.focsa
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