Differences

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

Link to this comparison view

pm:prj2021:abasoc:airqualitymonitor [2021/06/02 20:07]
diana_elena.popescu [Software Design]
pm:prj2021:abasoc:airqualitymonitor [2021/06/03 11:33] (current)
diana_elena.popescu [Concluzii]
Line 26: Line 26:
  
 ====== Hardware Design ====== ====== Hardware Design ======
-{{ :​pm:​prj2021:​abasoc:​schema-1.png?​200 |}}\\+{{ :​pm:​prj2021:​abasoc:​schema-1.png?​550 |}}\\
 ^Componentă ​  ​^Număr ​  ^ ^Componentă ​  ​^Număr ​  ^
 |Arduino Uno   ​|1 ​      | |Arduino Uno   ​|1 ​      |
Line 53: Line 53:
 4*. Desi in datasheet este specificat timpul de preheat ca fiind 3 min, valorile obtinute incep sa se apropie de adevar si sa se stabilizeze abia dupa ~1h.\\ 4*. Desi in datasheet este specificat timpul de preheat ca fiind 3 min, valorile obtinute incep sa se apropie de adevar si sa se stabilizeze abia dupa ~1h.\\
  
-Verificare: Am expirat deasupra senzorului ​app. 1 minut si valorile au crescut vizibil. In 5 minute acesta isi revine.\\ +Verificare: Am expirat deasupra senzorului ​aproximativ ​1 minut si valorile au crescut vizibil. In 5 minute acesta isi revine.\\ 
-Am decis deci, sa folosesc ​interfata ​Seriala pentru a face citiri pentru acest proiect. ​+Am decis deci, sa folosesc ​Interfata ​Seriala pentru a face citiri pentru acest proiect. ​
 \\ Acest senzor costa ~20 dolari si se poate achizitiona de pe https://​www.aliexpress.com.\\ \\ Acest senzor costa ~20 dolari si se poate achizitiona de pe https://​www.aliexpress.com.\\
 Datasheet-ul se poate gasi [[https://​www.winsen-sensor.com/​d/​files/​MH-Z14A.pdf|aici]]. \\ Datasheet-ul se poate gasi [[https://​www.winsen-sensor.com/​d/​files/​MH-Z14A.pdf|aici]]. \\
Line 109: Line 109:
 JSON. Integritatea structurii este verificată la NodeMcu. Dacă este corupta/​invalidă,​ se așteaptă următoarea JSON. Integritatea structurii este verificată la NodeMcu. Dacă este corupta/​invalidă,​ se așteaptă următoarea
 structură. structură.
 +\\ //​ArduinoUno//​
   StaticJsonBuffer<​5000>​ jsonBuffer;   StaticJsonBuffer<​5000>​ jsonBuffer;
   JsonObject&​ root = jsonBuffer.createObject();​   JsonObject&​ root = jsonBuffer.createObject();​
Line 119: Line 119:
     root.printTo(Serial);​     root.printTo(Serial);​
   }   }
 +\\ //NodeMCU//
 +  if (Serial.available() > 0) {
 +      StaticJsonBuffer<​5000>​ jsonBuffer;
 +      JsonObject&​ root = jsonBuffer.parseObject(Serial);​
 +      if (root == JsonObject::​invalid()){
 +        JsonObject&​ root = jsonBuffer.parseObject(Serial);​
 +        return;
 +      }
 \\ \\
   *   ​**Conexiunea NodeMCU - Server**   *   ​**Conexiunea NodeMCU - Server**
Line 126: Line 134:
 public printr-un domeniu ușor de memorat. Pentru a avea o reprezentare vizuală la nivelul modulului, am integrat public printr-un domeniu ușor de memorat. Pentru a avea o reprezentare vizuală la nivelul modulului, am integrat
 un LED care se aprinde de fiecare dată când este realizat un request din partea serverului. un LED care se aprinde de fiecare dată când este realizat un request din partea serverului.
 +
 +{{ :​pm:​prj2021:​abasoc:​chestie_2.jpeg?​800 |}}
  
   *   ​**Obținerea și prelucrarea datelor**   *   ​**Obținerea și prelucrarea datelor**
Line 133: Line 143:
   * __Preluarea datelor de la server:__ \\   * __Preluarea datelor de la server:__ \\
 presupune conectarea la serverul unde sunt stocate datele, folosind Chrome presupune conectarea la serverul unde sunt stocate datele, folosind Chrome
-WebDriver rulat în modul headless. ​Apoi, datele ​sunt parsate, cu ajutorul unui regex, ​iar apoi valorile sunt+WebDriver rulat în modul headless. ​Datele ​sunt parsate, cu ajutorul unui regex, apoi valorile sunt
 atașate unui fișier CSV, pentru a menține un log în cazul în care apar probleme în cadrul funcționării părții atașate unui fișier CSV, pentru a menține un log în cazul în care apar probleme în cadrul funcționării părții
 de interpretare a datelor, acestea putând fi ușor fiind interpretate ulterior. Această măsură de siguranță de interpretare a datelor, acestea putând fi ușor fiind interpretate ulterior. Această măsură de siguranță
-permite, practic, ​și citirea unor date deja primite de la server, pentru eventuale verificări ulterioare.+permite și citirea unor date deja primite de la server, pentru eventuale verificări ulterioare.
  
   * __Analiza datelor de la server:__ \\    * __Analiza datelor de la server:__ \\ 
-presupune o interfață grafică cu utilizatorul,​ în care sunt prezentate datele din fișierul CSV / date real time, dacă preluarea datelor de la server este activată. Datele sunt dispuse într-un mod ce permite utilizatorului să observe valorile atât pe un grafic, cât și procentual, pe un progrese ​bar ce se modifică constant în funcție de ultima intrare primită. Procentele sunt afișate în funcție de anumite valori standard (măsurate în funcție de rezistența senzorului sau PPM). În cazul în care se detectează o valoare foarte mare la unul din senzori, acest lucru i se aduce la cunoștință utilizatorului printr-un semnal sonor relevant, ce va rămâne pornit până când senzorul va măsura din nou o valoare normală. Verificarea+presupune o interfață grafică cu utilizatorul,​ în care sunt prezentate datele din fișierul CSV / date real time, dacă preluarea datelor de la server este activată. Datele sunt dispuse într-un mod ce permite utilizatorului să observe valorile atât pe un grafic, cât și procentual, pe un progress ​bar ce se modifică constant în funcție de ultima intrare primită. Procentele sunt afișate în funcție de anumite valori standard (măsurate în funcție de rezistența senzorului sau PPM). În cazul în care se detectează o valoare foarte mare la unul din senzori, acest lucru i se aduce la cunoștință utilizatorului printr-un semnal sonor relevant, ce va rămâne pornit până când senzorul va măsura din nou o valoare normală. Verificarea
 corectitudinii acestui lucru se face prin apropierea, unei brichete, de exemplu și observarea creșterii rapide a senzorului ce măsoară CO2. în acest caz, se va afișa pe ecran și un mesaj concludent. corectitudinii acestui lucru se face prin apropierea, unei brichete, de exemplu și observarea creșterii rapide a senzorului ce măsoară CO2. în acest caz, se va afișa pe ecran și un mesaj concludent.
 +{{ :​pm:​prj2021:​abasoc:​ok.png?​400 |ok}} \\ 
 +{{ :​pm:​prj2021:​abasoc:​not_ok.png?​400 |not ok}}
 ====== Concluzii ====== ====== Concluzii ======
 În concluzie, lucrarea a prezentat o modalitate de a lua date de la senzori aflați la distanță prin În concluzie, lucrarea a prezentat o modalitate de a lua date de la senzori aflați la distanță prin
 folosirea unei plăcuțe ArduinoUno, care transmite datele la un server local. Astfel, un utilizator poate folosirea unei plăcuțe ArduinoUno, care transmite datele la un server local. Astfel, un utilizator poate
 vedea în timp real care este concentrația de CO2 și CO, precum și detecția de fum din apropierea vedea în timp real care este concentrația de CO2 și CO, precum și detecția de fum din apropierea
-senzorului. Aceste date ajută persoana aflată la distanță să verifice ​că este totul sigur în locul unde sunt+senzorului. Aceste date ajută persoana aflată la distanță să verifice ​daca totul este in regula ​în spatiul in care se afla
 montați senzorii. Prin folosirea de senzori care măsoară diferite componente din aer și a unor plăcuțe de montați senzorii. Prin folosirea de senzori care măsoară diferite componente din aer și a unor plăcuțe de
 dezvoltare am reușit să realizăm o implementare eficientă la un cost minim, care va putea fi extinsă pe dezvoltare am reușit să realizăm o implementare eficientă la un cost minim, care va putea fi extinsă pe
 viitor prin folosirea de alți senzori. viitor prin folosirea de alți senzori.
 +{{  :​pm:​prj2021:​abasoc:​chestie.jpg?​550 ​ |proiect final}}
  
 <​note>​Multumiri si credite lui Radu Nichita, cu care am colaborat in realizarea acestui proiect. El s-a ocupat de partea de prelucrare a datelor, realizand scriptul de Python. </​note>​ <​note>​Multumiri si credite lui Radu Nichita, cu care am colaborat in realizarea acestui proiect. El s-a ocupat de partea de prelucrare a datelor, realizand scriptul de Python. </​note>​
 +<note tip>​Proiectul in functiune se poate vedea [[https://​youtu.be/​FGr5q82ws5I|aici]] \\
 +Iar proiectul format pdf se poate descarca de
 +[[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​abasoc/​airqualitymonitor?​do=export_pdf|aici]]</​note>​
 ====== Bibliografie ====== ====== Bibliografie ======
 https://​electrogrup.ro/​monitorizarea-calitatii-aerului/​ \\ https://​electrogrup.ro/​monitorizarea-calitatii-aerului/​ \\
Line 160: Line 174:
  
 Proiectul integral se poate gasi aici:\\ Proiectul integral se poate gasi aici:\\
-https://​github.com/​RaduNichita/SCSS2020--Monitoring-Air-Quality+https://​github.com/​daianaelena17/PM_Project
  
pm/prj2021/abasoc/airqualitymonitor.1622653655.txt.gz · Last modified: 2021/06/02 20:07 by diana_elena.popescu
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