This shows you the differences between two versions of the page.
pm:prj2025:fstancu:andra.ciulinca [2025/05/18 21:48] andra.ciulinca created |
pm:prj2025:fstancu:andra.ciulinca [2025/05/27 18:02] (current) andra.ciulinca |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Plant status check ====== | + | ====== Plant status check - CIULINCĂ Andra ====== |
Ciulinca Andra Stefania - 334CA | Ciulinca Andra Stefania - 334CA | ||
Line 5: | Line 5: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | <note tip> | + | |
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. | 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. | 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. | ||
- | </note> | + | |
===== Descriere ===== | ===== Descriere ===== | ||
- | <note tip>{{:pm:prj2025:fstancu:schemablock.png?200|}}</note> | + | {{:pm:prj2025:fstancu:schemablock.png?200|}} |
===== Hardware design ===== | ===== Hardware design ===== | ||
- | + | Lista de piese: | |
- | <note tip>Lista de piese: | + | |
* LCD 1602 cu interfata I2C si Backlight Galben-Verde - [[https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/62-lcd-1602-cu-interfata-i2c-si-backlight-galben-verde.html?search_query=lcd+i2c&results=17|External Link]] | * LCD 1602 cu interfata I2C si Backlight Galben-Verde - [[https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/62-lcd-1602-cu-interfata-i2c-si-backlight-galben-verde.html?search_query=lcd+i2c&results=17|External Link]] | ||
* Senzor de temperatura si umiditate a aerului - [[https://www.optimusdigital.ro/ro/senzori-senzori-de-temperatura/584-senzor-de-temperatura-dht11.html?search_query=senzor+temperatura&results=253|External Link]] | * Senzor de temperatura si umiditate a aerului - [[https://www.optimusdigital.ro/ro/senzori-senzori-de-temperatura/584-senzor-de-temperatura-dht11.html?search_query=senzor+temperatura&results=253|External Link]] | ||
Line 45: | Line 44: | ||
* Conectat la (+) si (-) pe breadboard | * Conectat la (+) si (-) pe breadboard | ||
* Am facut si un divizor de tensiune folosind o tensiune de 1kohm conectata la pinul analog A3 (firul albastru) | * Am facut si un divizor de tensiune folosind o tensiune de 1kohm conectata la pinul analog A3 (firul albastru) | ||
- | </note> | + | |
===== Schema Hardware ===== | ===== Schema Hardware ===== | ||
- | <note tip> | + | |
{{:pm:prj2025:fstancu:plantstatuscheck.png?200|}} | {{:pm:prj2025:fstancu:plantstatuscheck.png?200|}} | ||
{{:pm:prj2025:fstancu:plantstatuscheckscema.png?200|}} | {{:pm:prj2025:fstancu:plantstatuscheckscema.png?200|}} | ||
In schema atasata senzorul de temperatura nu este DHT(cel folosit in implementare), dar conectarea este facuta conform schemei reale, cu DHT. | In schema atasata senzorul de temperatura nu este DHT(cel folosit in implementare), dar conectarea este facuta conform schemei reale, cu DHT. | ||
- | </note> | + | |
===== Implementare ===== | ===== Implementare ===== | ||
- | <note tip> | + | |
{{:pm:prj2025:fstancu:plantstatuscheckimplementare.jpeg?200|}} | {{:pm:prj2025:fstancu:plantstatuscheckimplementare.jpeg?200|}} | ||
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. | 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. | ||
- | </note> | + | |
===== Software design ===== | ===== Software design ===== | ||
- | <note tip>Descrierea codului aplicaţiei (firmware): | + | Descrierea codului aplicaţiei (firmware): |
* Mediu de dezvoltare: Arduino IDE | * Mediu de dezvoltare: Arduino IDE | ||
* Librării şi surse 3rd-party: “Wire.h”, “LiquidCrystal_I2C.h” | * Librării şi surse 3rd-party: “Wire.h”, “LiquidCrystal_I2C.h” | ||
- | </note> | + | Î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. | ||
+ | |||
+ | * Motivația alegerii bibliotecilor | ||
+ | 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). | ||
+ | |||
+ | * Elementul de noutate | ||
+ | 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. | ||
+ | |||
+ | * Utilizarea funcționalităților din laborator | ||
+ | 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: | ||
+ | |||
+ | * Implementare completă a unui protocol SPI software (bit-banging) care transmite fiecare stare `PlantState` (temperatură, umiditate, umiditate sol și lumină). | ||
+ | * Configurația pinilor SPI este definită manual (`MOSI`, `MISO`, `SCK`, `SS`), conform laboratoarelor PM. | ||
+ | * Fiecare stare este transmisă în format binar (6 octeți) prin SPI la fiecare măsurătoare. | ||
+ | |||
+ | 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 | ||
+ | |||
+ | * - La fiecare **10 secunde**, conținutul RAM (`ramFile[]`) este afișat în Serial Monitor. | ||
+ | * - Sunt afișate doar înregistrările reale (nu cele cu valori implicite 0). | ||
+ | * - După afișare, programul revine la comportamentul normal, cu afișare la 2 secunde a valorilor curente. | ||
+ | |||
+ | |||
+ | * Structura proiectului și validare funcțională | ||
+ | Structura este modulară și include: | ||
+ | |||
+ | * Senzori: | ||
+ | |||
+ | SimpleDHT pentru citirea temperaturii și umidității. | ||
+ | |||
+ | analogRead pentru senzorii de lumină și umiditate sol. | ||
+ | |||
+ | * Afișare: | ||
+ | |||
+ | Funcții personalizate pentru controlul LCD I2C fără biblioteci. | ||
+ | |||
+ | Două tipuri de afișaje: mesaje de stare + afișare ciclică din istoric. | ||
+ | |||
+ | * Control: | ||
+ | |||
+ | systicks și întreruperi pentru temporizare neblocantă. | ||
+ | |||
+ | Structură PlantState și buffer circular pentru istoric. | ||
+ | |||
+ | * Validare: | ||
+ | |||
+ | Verificare serială a valorilor citite. | ||
+ | |||
+ | Testare prin variarea parametrilor senzorilor. | ||
+ | |||
+ | Observarea schimbării automate a mesajelor pe LCD. | ||
+ | |||
+ | * Optimizări efectuate | ||
+ | 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. | ||
===== Rezultate obtinute ===== | ===== Rezultate obtinute ===== | ||
- | <note tip>TBD</note> | ||
- | ===== Concluzii ===== | + | [[https://github.com/andraciuli/Plant-Status-Check|GitHub - codul complet]] |
- | <note tip>TBD</note> | + | |
+ | [[https://www.youtube.com/watch?v=zlGk5lrqPbM|YouTube - demo]] | ||
+ | |||
===== Resurse ===== | ===== Resurse ===== | ||
- | <note tip> | ||
[[https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf|Datasheet Arduino]] | [[https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf|Datasheet Arduino]] | ||
[[https://www.instructables.com/Arduino-Soil-Moisture-Sensor/|Senzor sol]] | [[https://www.instructables.com/Arduino-Soil-Moisture-Sensor/|Senzor sol]] | ||
[[https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/62-lcd-1602-cu-interfata-i2c-si-backlight-galben-verde.html?search_query=lcd+1602&results=17|LCD1602 cu interfata I2C]] | [[https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/62-lcd-1602-cu-interfata-i2c-si-backlight-galben-verde.html?search_query=lcd+1602&results=17|LCD1602 cu interfata I2C]] | ||
- | </note> | + | |
===== Jurnal ===== | ===== Jurnal ===== | ||
- | <note tip> | + | |
* 11.05 - montare si testare senzor de temperatura si umiditate sol + testare ecran LCD 1602 cu interfata I2C | * 11.05 - montare si testare senzor de temperatura si umiditate sol + testare ecran LCD 1602 cu interfata I2C | ||
* 13.05 - montare si testare fotorezistor, incheiere schema hardware | * 13.05 - montare si testare fotorezistor, incheiere schema hardware | ||
* 14.05 - implementare software | * 14.05 - implementare software | ||
- | </note> | + |