Ciulinca Andra Stefania - 334CA
Dispozitiv pentru a asigura conditiile optime pentru plante (temperatura aerului, umiditate in sol, lumina). Daca toate conditiile sunt implinite, feedback ul este indicat pozitiv pe ecran, altfel se afiseaza conditiile esuate.
Scopul proiectului este de a crea un dispozitiv autonom de monitorizare a plantelor, util pentru persoane care doresc să asigure automat condițiile optime de mediu pentru plantele lor, fără a verifica manual fiecare factor.
Lista de piese:
Descrierea legăturilor făcute și a pinilor utilizați:
In schema atasata senzorul de temperatura nu este DHT(cel folosit in implementare), dar conectarea este facuta conform schemei reale, cu DHT.
Pe ecran se afiseaza parametrii care nu sunt respecta conditiile impuse exemplu: “Probleme: Sol Lumina” sau “Conditii optime Planta OK”, daca totul este in regula.
Descrierea codului aplicaţiei (firmware):
În această etapă, am implementat complet funcționalitatea de bază pentru monitorizarea și afișarea condițiilor optime pentru o plantă. Codul:
Citește datele de la trei senzori: de temperatură și umiditate (DHT11), umiditate a solului și lumină ambientală.
Evaluează dacă fiecare parametru se află într-un interval optim.
Afișează mesaje corespunzătoare pe un ecran LCD I2C în funcție de starea curentă.
Salvează ultimele 5 stări măsurate și le afișează ciclic, la intervale de timp mai mari, fără a deranja afișajul principal.
Oferă feedback serial în UART pentru monitorizarea valorilor în timp real.
Wire.h – permite comunicarea I2C între placa principală și afișajul LCD.
SimpleDHT.h – o bibliotecă eficientă pentru citirea rapidă a datelor de la senzorul DHT11.
Codul LCD este scris „bare-metal” pentru o mai bună înțelegere a protocolului I2C și controlul precis al afișajului, fără biblioteci standard (ex: LiquidCrystal_I2C).
Proiectul nu doar că oferă un feedback în timp real, dar:
Stochează istoric recent al parametrilor și îl afișează ciclic, fără a perturba mesajele de stare esențiale.
Interfața este non-blocking, folosind timere hardware și întreruperi precise, evitând delay() și blocaje.
Afișajul este dinamic și adaptiv: se revine automat la mesajul „Condiții optime” sau „Probleme” după fiecare afișare de parametri istorici.
Lab 1: USART
Lab 2: Intreruperi
Lab 5: SPI
Lab 6: I2C
Am integrat:
Timer2 pentru incrementarea unui cronometru systicks (1ms).
Timer1 configurat pentru generare de întreruperi la fiecare 10ms pentru a semnaliza optimizarea plantelor.
USART implementat manual pentru trimiterea valorilor în consola serială fără biblioteci externe.
Citirea senzorilor analogici și integrarea unui senzor digital (DHT11) prin protocoale precise.
Simulare SPI + Salvare RAM:
Stocare locală în RAM (simulare fișier)
- Fiecare `PlantState` este salvat într-un buffer circular `ramFile[100]`, cu actualizare constantă.
- Acest buffer acționează ca o simulare de fișier temporar în memorie RAM.
Afișare automată RAM în Serial Monitor
Structura este modulară și include:
SimpleDHT pentru citirea temperaturii și umidității.
analogRead pentru senzorii de lumină și umiditate sol.
Funcții personalizate pentru controlul LCD I2C fără biblioteci.
Două tipuri de afișaje: mesaje de stare + afișare ciclică din istoric.
systicks și întreruperi pentru temporizare neblocantă.
Structură PlantState și buffer circular pentru istoric.
Verificare serială a valorilor citite.
Testare prin variarea parametrilor senzorilor.
Observarea schimbării automate a mesajelor pe LCD.
Eliminarea folosirii delay(): toată logica se bazează pe timere precise cu systicks.
Logica ciclică pentru afișare istoric fără a afecta mesajele importante.
Afișarea pe LCD se face doar când este nevoie, evitând suprascrieri inutile.
UART implementat manual fără Serial.begin(), pentru compatibilitate cu hardware custom.