Grupa: 334CA
Pentru astfel de măsurători vine în ajutor acest house monitoring system, care track-uiește temperatura si umiditatea din locuință, le afișează pe un ecran și stochează toate măsurătorile efectuate pe un card SD pentru a permite vizualizarea si efectuarea analizelor pe aceste date, iar dacă se detectează măsurarea unei temperaturi care nu se încadrează in parametrii normali, se declanșează o alarma.
Componentă | Link către site |
---|---|
Arduino UNO R3 | Link produs |
Modul Senzor de Temperatura și Umiditate DHT22 | Link produs |
Modul MicroSD | Link produs |
Modul buzzer | Link produs |
LCD 1602 cu Interfata I2C si Backlight Galben-Verde | Link produs |
Breadboard 830p MB-102 | Link produs |
Fire Tata-Tata, 30 cm | Link produs |
Fire Mama-Tata, 15 cm | Link produs |
Card MicroSD 16GB | Link produs |
Rezistor 5 kOhm |
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.
Observație: La modulul pentru card microSD, pinul DI este echivalent cu MOSI de pe modulul real, iar pinul DO cu MISO.
Descrierea legăturilor făcute și a pinilor utilizați:
Schema electrică:
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
pinul 1 = CS
pinul 2 = SCK
pinul 3 = MOSI
pinul 4 = MISO
pinul 5 = VCC
pinul 6 = GND
Asa arata proiectul in realitate:
- biblioteci şi surse 3rd-party:
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.