This shows you the differences between two versions of the page.
pm:prj2025:fstancu:miruna.stefan0207 [2025/05/18 13:30] miruna.stefan0207 |
pm:prj2025:fstancu:miruna.stefan0207 [2025/05/29 23:45] (current) miruna.stefan0207 |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== House Monitoring System ====== | + | ====== House Monitoring System - ŞTEFAN Miruna-Andreea ====== |
<note tip> | <note tip> | ||
Line 24: | Line 24: | ||
| Modul Senzor de Temperatura și Umiditate DHT22 | [[https://www.optimusdigital.ro/ro/senzori-senzori-de-temperatura/1449-modul-senzor-de-temperatura-i-umiditate-dht22.html|Link produs]] | | | Modul Senzor de Temperatura și Umiditate DHT22 | [[https://www.optimusdigital.ro/ro/senzori-senzori-de-temperatura/1449-modul-senzor-de-temperatura-i-umiditate-dht22.html|Link produs]] | | ||
| Modul MicroSD | [[https://sigmanortec.ro/Modul-MicroSD-p126079625|Link produs]] | | | Modul MicroSD | [[https://sigmanortec.ro/Modul-MicroSD-p126079625|Link produs]] | | ||
- | | Modul buzzer activ montat pe PCB | [[https://www.optimusdigital.ro/ro/audio-buzzere/12513-pcb-mounted-active-buzzer-module.html?search_query=Modul+buzzer+activ+montat+pe+PCB&results=2|Link produs]] | | + | | Modul buzzer | [[https://www.optimusdigital.ro/ro/componente-calculatoare/5560-buzzer-pentru-placa-de-baza-de-la-calculator.html?search_query=buzzer+pc&results=62|Link produs]] | |
| 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+1602+cu+Interfata+I2C+si+Backlight+Galben-Verde&results=1|Link produs]] | | | 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+1602+cu+Interfata+I2C+si+Backlight+Galben-Verde&results=1|Link produs]] | | ||
| Breadboard 830p MB-102 | [[https://sigmanortec.ro/Breadboard-830-puncte-MB-102-p125923983|Link produs]] | | | Breadboard 830p MB-102 | [[https://sigmanortec.ro/Breadboard-830-puncte-MB-102-p125923983|Link produs]] | | ||
Line 35: | Line 35: | ||
- | Datele vin de la senzorul de temperatura / umiditate in MCU, de unde merg catre cardul SD pentru stocare si tot din MCU porneste semnal catre buzzer daca valorile citite depasesc anumite praguri, dupa cum sugereaza si schema de mai jos. | + | Datele vin de la senzorul de temperatura / umiditate in MCU, de unde merg catre cardul SD pentru stocare, catre ecran pentru afisare si tot din MCU porneste semnal catre buzzer daca valorile citite depasesc anumite praguri, dupa cum sugereaza si schema de mai jos. |
{{:pm:prj2025:fstancu:diagrama_componente_updatedmiruna.drawio.png?500|}} | {{:pm:prj2025:fstancu:diagrama_componente_updatedmiruna.drawio.png?500|}} | ||
Line 46: | Line 46: | ||
Diagrama desenată in Wokwi: | Diagrama desenată in Wokwi: | ||
- | {{:pm:prj2025:fstancu:diagrama_wokwi_final.jpg?600|}} | + | {{:pm:prj2025:fstancu:miruna_final_diagrama_wowki.png?600|}} |
Observație: La modulul pentru card microSD, pinul DI este echivalent cu MOSI de pe modulul real, iar pinul DO cu MISO. | Observație: La modulul pentru card microSD, pinul DI este echivalent cu MOSI de pe modulul real, iar pinul DO cu MISO. | ||
Line 68: | Line 68: | ||
* senzorul de temperatură și umiditate DHT22 | * senzorul de temperatură și umiditate DHT22 | ||
* (-) - GND (firul negru) | * (-) - GND (firul negru) | ||
- | * OUT - pinul ~9 al plăcuței (~D9 / PB1) (am ales dintre pinii digitali nerezervați) (firul alb) | + | * OUT - pinul 8 al plăcuței (D8 / PB0) (am ales dintre pinii digitali nerezervați) (firul alb) |
* (+) - 5V (firul roșu) | * (+) - 5V (firul roșu) | ||
* firul gri = fir de comunicație digitală între Arduino și senzor (permite transmisia de date între cele două) | * firul gri = fir de comunicație digitală între Arduino și senzor (permite transmisia de date între cele două) | ||
Line 76: | Line 76: | ||
* buzzer-ul | * buzzer-ul | ||
* (-) - GND (firul negru) | * (-) - GND (firul negru) | ||
- | * (+) - pinul ~6 al plăcuței (~D6 / PD6) (am ales un pin digital care avea PWM) (firul roșu) | + | * (+) - pinul ~9 al plăcuței (~D9 / PB1) (am ales un pin digital care avea PWM) (firul roșu) |
Schema electrică: | Schema electrică: | ||
- | {{:pm:prj2025:fstancu:schema_electrica_miruna.jpg?600|}} | + | {{:pm:prj2025:fstancu:miruna_final_schema_electrica_tinkercad.png?600|}} |
Observație: Schema electrică a fost făcută în Tinkercad, unde nu există modul microSD, așa că am folosit în locul acestuia un 8 pin header care să simuleze un modul microSD, unde | Observație: Schema electrică a fost făcută în Tinkercad, unde nu există modul microSD, așa că am folosit în locul acestuia un 8 pin header care să simuleze un modul microSD, unde | ||
Line 95: | Line 95: | ||
pinul 6 = GND | pinul 6 = GND | ||
+ | |||
+ | Asa arata proiectul in realitate: | ||
{{:pm:prj2025:fstancu:miruna_poza_proiect_hardware.jpeg?600|}} | {{:pm:prj2025:fstancu:miruna_poza_proiect_hardware.jpeg?600|}} | ||
Line 100: | Line 102: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | <note tip> | ||
+ | - mediu de dezvoltare: Arduino IDE | ||
+ | |||
+ | - biblioteci şi surse 3rd-party: | ||
+ | * avr - colectie de headere si functii specifice pentru programarea directa a microcontrollerelor AVR | ||
+ | * avr/io - definirea registrelor hardware (PORTx, DDRx, TCCRn, UBRRn, etc. | ||
+ | * avr/interrupt - gestionarea intreruperilor (sei()) | ||
+ | |||
+ | * LiquidCrystal_I2C: | ||
+ | * permite comunicarea cu LCD-ul prin doar 2 fire: SDA (Serial Data) si SCL (Serial Clock), folosind protocolul I2C | ||
+ | * intern, transformă comenzile LCD tradiționale precum set cursor, write,etc. în semnale transmise pe magistrala I2C | ||
+ | * extensie a bibliotecii standard LiquidCrystal din Arduino, cu diferenta ca în locul folosirii pinilor paraleli , afisajele LCD sunt controlate prin intermediul interfeței I2C. | ||
+ | |||
+ | * SD: | ||
+ | * biblioteca din pachetul oficial Arduino IDE utilizata pentru a facilita comunicarea cu un card SD si pentru a scrie si citi fisiere pe / de pe el | ||
+ | * intern, foloseste interfata SPI pentru comunicarea cu cardul | ||
+ | |||
+ | * TroykaDHT | ||
+ | * biblioteca dezvoltata de Amperka (Troyka Modules) pentru a facilita lucrul cu senzorii DHT11 si DHT22 | ||
+ | * permite creare unui obiect pentru senzorul DHT22, initializarea sa, citirea datelor de la senzor (temperatura si umiditatea) si verificarea daca citirea a reusit sau nu. | ||
+ | |||
+ | Scheletul proiectului: | ||
+ | |||
+ | - am folosit 2 timere: timer1 pentru pwm si timer2 pentru numararea secundelor (inlocuirea functiei delay()); | ||
+ | |||
+ | - la fiecare 2 secunde se citesc temperatura si umiditatea si se afiseaza atat pe seriala, cat si pe ecran si se si stocheaza tot istoricul de masuratori pe microSD; | ||
+ | |||
+ | - daca la un moment dat temperatura masurata depaseste ALERT_TEMP, buzzer-ul incepe sa cante (daca deja canta, nu ia melodia de la inceput, ci continua), iar daca temperatura scade din nou sub ALERT_TEMP, buzzer-ul se opreste din cantat. Am setat ALERT_TEMP la 26 de grade (ceea ce era o temperatura rezonabila pentru mediul in care am facut proiectul, dar aceasta se poate modifica, evident, la un alt threshold.); | ||
+ | |||
+ | - pe masura ce trece timpul si buzzer-ul canta, se actualizeaza nota (se trece la nota urmatoare pentru a forma o melodie completa). | ||
+ | |||
+ | Notiuni din laboratoare: | ||
+ | |||
+ | - Lab 1: USART (pentru scrierea datelor despre temperatura si umiditate pe seriala) | ||
+ | |||
+ | - Lab 2: Intreruperi (numararea secundelor pentru scrierea functiei de wait()) | ||
+ | |||
+ | - Lab 3: PWM (pentru a face buzzer-ul sa cante atunci cand este depasita temperatura ALERT_TEMP) | ||
+ | |||
+ | - Lab 5: SPI (protocol folosit pentru scrierea si citirea istoricului de date in fisierul de pe cardul microSD) | ||
+ | |||
+ | - Lab 6: I2C (protocol folosit pentru comunicarea cu ecranul LCD pe care sunt afisate temperatura si umiditatea). | ||
+ | |||
+ | Codul complet este pe Github, la link-ul urmator: https://github.com/miruna-stefan/Proiect-pm. | ||
- | <note tip> | ||
- | [TBD] | ||
</note> | </note> | ||
Line 109: | Line 153: | ||
<note tip> | <note tip> | ||
- | [TBD] | + | Demo-ul poate fi urmatit la link-ul urmator: |
+ | https://www.youtube.com/watch?v=eLbyWtaBuJE | ||
</note> | </note> | ||
- | |||
- | ===== Concluzii ===== | ||
===== Download ===== | ===== Download ===== | ||
<note warning> | <note warning> | ||
- | [TBD] | + | Codul complet este pe Github, la link-ul urmator: https://github.com/miruna-stefan/Proiect-pm. |
</note> | </note> | ||
Line 129: | Line 172: | ||
* 9 mai - Am înlocuit componentele cu probleme: în loc de DHT11, am cumpărat un DHT22 (doar acesta mai era disponibil pe Optimus) și am schimbat ecranul cu unul identic, dar care funcționează conform specificațiilor de pe site | * 9 mai - Am înlocuit componentele cu probleme: în loc de DHT11, am cumpărat un DHT22 (doar acesta mai era disponibil pe Optimus) și am schimbat ecranul cu unul identic, dar care funcționează conform specificațiilor de pe site | ||
* 11 mai - finalizare asamblare hardware | * 11 mai - finalizare asamblare hardware | ||
+ | * 20 mai - finalizare software | ||
</note> | </note> | ||