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> | + | |