Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:avaduva:room-monitor [2021/04/28 19:16]
dumitru.stratone created
pm:prj2021:avaduva:room-monitor [2021/06/04 20:05] (current)
dumitru.stratone
Line 1: Line 1:
-Room Monitor+====== ​Room Monitor ​====== 
 + 
 +===== Introducere ===== 
 + 
 +Room monitor confera utilizatorului detalii despre starea camerei in care se afla. 
 + 
 +Aceste detalii includ: 
 +     * temperatura si umiditatea din camera 
 +     * calitatea aerului 
 +     * intensitatea luminii 
 +     * nivelul de zgomot 
 +     * daca exista scurgeri de gaz sau nu 
 + 
 +In aceasta perioada, cand multi oameni lucreaza de acasa, conditiile din camera 
 +de lucru au devenit si mai importante pentru sanatate. 
 + 
 +===== Descriere generală ===== 
 +{{ :​pm:​prj2021:​avaduva:​schema_bloc_room_monitor.png?​800 |}} 
 + 
 +Initial, pentru 2 minute, se incalzesc senzorul de gaz si cel de calitate a aerului. 
 + 
 +Apoi se face prima citire a senzorilor, iar datele sunt afisate pe lcd. 
 + 
 +Pentru a economisi curent, lcd-ul se va inchide daca nu este detectata miscare in proximitate 
 + 
 +Sensorul PIR si cel de gaz sunt consultati la fiecare secunda, data fiind importanta lor. 
 + 
 +Ceilalti sensori sunt consultati la fiecare 5 minute, cand se face(optional) si flush pe seriala a datelor. 
 + 
 +===== Hardware Design ===== 
 + 
 +=== Lista componente === 
 +   - [[https://​cleste.ro/​senzor-pir-hc-sr501.html|Sensor PIR]] 
 +   - [[https://​cleste.ro/​modul-microfon-sensibilitate-inalta.html| Modul microfon]] 
 +   - [[https://​cleste.ro/​modul-buzzer-pasiv.html| Buzzer]] 
 +   - [[https://​cleste.ro/​led-rgb-5mm-4pini.html| Led catod comun]] 
 +   - [[https://​cleste.ro/​modul-senzor-lumina-intensitate-luminoasa.html| Modul intensitate luminoasa]] 
 +   - [[https://​cleste.ro/​senzor-detec-ie-metan-gaze-naturale-mq-5.html| Modul detectare gaz]] 
 +   - [[https://​cleste.ro/​modul-senzor-detector-gaz-mq-135.html| Modul detectare calitate aer]] 
 +   - [[https://​cleste.ro/​senzor-umiditate-si-temperatura-dht22.html| Senzor umiditate si temperatura]] 
 +   - [[https://​cleste.ro/​modul-lcd-1602-albastru-cu-butoane.html| Shield lcd]] 
 +   - Fire tata-tata, mama-tata, breadboard, rezistente. 
 + 
 +===== Software Design ===== 
 + 
 +Codul arduino a fost dezvoltat in [[https://​www.arduino.cc/​en/​software| Arduino IDE]] 
 + 
 +Pe langa codul pentru microcontroler,​ am scris si un mic script in python care preia datele de pe seriala 
 +si le scrie intr-un fisier. 
 + 
 +==== Biblioteci ==== 
 + 
 +Am folosit in dezvoltarea pe microcontroller urmatoarele biblioteci third-party:​ 
 +     - [[https://​www.arduino.cc/​en/​Reference/​LiquidCrystal|Arduino LiquidCrystal Library]] 
 +     - [[https://​www.arduino.cc/​reference/​en/​libraries/​dht-sensor-library/​|Arduino DHT Sensor Library]] 
 + 
 +Pentru "​consumerul"​ de seriala, am folosit urmatorele biblioteci python: 
 +     - [[https://​pyserial.readthedocs.io/​en/​latest/​pyserial.html|Python serial]] 
 +     - [[https://​docs.python.org/​3/​library/​datetime.html|Python datetime]] 
 +     - [[https://​docs.python.org/​3/​library/​calendar.html|Python calendar]] 
 + 
 +==== Structuri de date ==== 
 + 
 +Structura principala este numita room state si are urmatoare definitie:​ 
 + 
 +<​code>​ 
 +typedef struct roomstate { 
 +  float temperature,​ humidity, heatIndex;​ 
 +  int airQuality;​ 
 +  int airQualityPercentage;​ 
 +  int lightIntensity;​ 
 +  int gasValue; 
 +  int motion; 
 +  int sound; 
 +} RoomState;​ 
 +</​code>​ 
 + 
 +Aici este tinuta starea camerei, la un moment dat. 
 + 
 +==== Functii implementate ==== 
 + 
 +Functiile principale sunt urmatoarele:​ 
 +<​code>​ 
 +void initSensors();​ // Aici, timp de 2 secunde, se incalzesc cei 2 sensori de aer. 
 +void flushRoomState();​ // Aici structura de date principala este trimisa pe seriala. 
 +void handleSensors();​ // Un wrapper peste un agregat de functii mai mici care citesc fiecare senzor in parte. 
 +void buzz(float seconds, int sign); // Functie pentru buzz. 
 +void handleLCDScreen();​ // Functie care imi afiseaza starea la lcd. 
 +void printLCDDateTime();​ // Functie care afiseaza pe lcd data si ora. 
 +void printLCDTemperature();​ // Functie care afiseaza pe lcd informatii despre temperatura. 
 +void printLCDAirQuality();​ // Functie care afiseaza pe lcd informatii despre calitatea aerului. 
 +void loop(); // Citim sensorii, daca s-au implinit 5 minute, atunci dam flush. 
 +</​code>​ 
 + 
 +Pe raspberry pi , daemon-ul care comunica cu seriala este pornit la boot (am modificat fisierul /​etc/​rc.local) 
 + 
 +Codul python are urmatoarea structura:​ 
 + 
 +<​code>​ 
 +ser = serial.Serial('/​dev/​ttyACM0',​ 9600, timeout=1) // deschidem comunicarea 
 +f = open("​./​usb/​data",​ "​a"​) // deschidem si fisierul pentru stocare 
 + 
 +while True: 
 +        if ser.in_waiting > 0: 
 +            line = ser.readline().decode('​utf-8'​).rstrip() 
 +             if line == "​getHour":​ 
 +              // microcontrollerul cere ora 
 +             if line == "​getDate":​ 
 +              // microcontrollerul cere data 
 +             if line == "​flush":​ 
 +              // microcontrollerul doreste sa ne dea datele. 
 +</​code>​ 
 + 
 +===== Rezultate obtinute ===== 
 + 
 +{{:​pm:​prj2021:​avaduva:​poza1_room_monitor.jpeg?​300|}}{{:​pm:​prj2021:​avaduva:​poza2_room_monitor.jpeg?​180|}} 
 +{{:​pm:​prj2021:​avaduva:​poza3_room_monitor.jpeg?​180|}} 
 + 
 +===== Concluzii ===== 
 + 
 +Mi-a facut placere sa implementez acest proiect, deoarece am construit ceva care va ramane, pe care il folosesc. 
 +O sa continui dezvoltarea,​ incercand sa il integrez cu aer conditionat si cu telefonul mobil. 
 + 
 +===== Download ===== 
 +{{:​pm:​prj2021:​avaduva:​proiect_pm_room_monitor.zip| Arhiva proiectului}} 
 + 
 +===== Bibliografie ===== 
 +    *[[https://​pyserial.readthedocs.io/​en/​latest/​pyserial.html|Python serial]] 
 +    *[[https://​www.arduino.cc/​en/​Reference/​softwareSerial|Arduino serial]] 
 +    *[[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|ATmega328P Datasheet]] 
 + 
 +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2021/avaduva/room-monitor.1619626614.txt.gz · Last modified: 2021/04/28 19:16 by dumitru.stratone
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0