WIFI Air Quality Sensor

Autor: Petrusca Bogdan-Mihai
Email: bogdan.petrusca@stud.acs.upb.ro

Introducere

Locuind in Bucuresti, cea mai poluata capitala din Uniunea Europeana, m-am gandit sa fac ceva ce m-ar ajuta sa detectez cat mai usor cantitatea de praf din atmosfera.

Descrierea generala

Placuta Arduino va fi conectata atat la un senzor de temperatura si umiditate cat si la un senzor optic pentru detectarea particulelor de praf. Modulul Arduino va receptiona aceste date si le va trimite catre modulul WIFI, pe care este hostat un server WEB. Informatiile vor fi afisate pe o pagina web atunci cand se va accesa adresa IP a server-ului web. Schema:

Hardware Design

  1. Arduino Uno
  2. Senzor de temperatura + umiditate
  3. Modul WIFI + Bluetooth
  4. Fire
  5. rezistente
  6. 1 condensator

Arduino UNO functioneaza la 5V, pe cand placuta wifi ESP32 la 3.3V. De aceea a trebuit sa realizez un divizor de tensiune intre cele doua folosind 3 rezistente de 10K

Arduino UNO este receptioneaza date de la senzorul de praf prin pinul A5, si de la senzorul de temperatura si umiditate prin pinul GPIO7. Comunicare seariala dintre Arduino UNO si placuta WIFI ESP32 este realizata prin pinii 0 si 1, respectiv pinii 16, 17.

Schema electrica

Software Design

Am creat 2 programe separate. Primul program este pentru placuta Arduino UNO. Acesta receptioneaza datele de la senzorul de temperatura si umiditate si senzorul de praf si la afiseaza in serial monitorul placutei.

Placuta WIFI comunica cu Arduino UNO prin UART. Astfel, aceasta citeste datele transmise si le parseaza. La final creez un fisier HTML cu datele transmise pe care il trimit catre endpoint-ul ”/”.

Arduino UNO

Astfel, placuta Arduino uno receptioneaza datele de pe pinul A5, care este conectat la senzorul de praf, si le prelucreaza astfel incat sa converteasca valoarea citita in volti dupa formula: V = Vo / 1024.0 * 5.0, unde Vo este valoarea citita de pe pin.

Avand numarul de volti cititi de pe pinul A5 urmeaza sa convertim aceasta valoare in ug/m3. Folosesc formula: Densitatea prafului = (dV / K) * 100, unde:

  • dV = V_A5 - V_oc
  • V_A5 reprezinta valoarea de pe pin
  • V_oc reprezinta valoarea citita de pe pin in conditiile in care nu se afla nicio particicula de praf in jurul senzorului
  • K reprezinta sensibilitatea senzorului

Placuta Arduino Uno este, de asemenea, conectata la senzorul de temperatura si umiditate si citeste date de pe pinul GPIO7. Pentru a afla temperatura si umiditatea citite de pe senzorul DHT11 ma folosesc de functiile din biblioteca dht11.h.

La final, deoarece placuta Arduino UNO comunica prin USART cu placuta WIFI ESP32 trimit toate datele prin interfata serial.

ESP32

Pe placuta WIFI hostez un server web, care accepta cereri de get pentru ”/”, unde vor fi afisate datele. In functia setup() setez conexiunea USART, si folosindu-ma de functiile din biblioteca Wifi.h se incearca conectarea la routerul WIFI. In caz de succes afisez in serial Monitorul placutei WIFI IP-ul atribuit de catre router placutei. La final se defineste endpoint-ul ”/” caruia i se atribute functia “handleRoot”.

Functia handleRoot: In aceasta functie se parseaza datele venite de la Arduino UNO si se adauga intr-un String, care este sub forma unui fisier HTML. La final ma folosesc de functia send din biblioteca WebServer.h pentru a trimite cererea clientului conectat la IP-ul placutei.

Rezultate Obţinute

Prezentarea video se afla la aceasta adresa: Prezentare video

Concluzii

Placuta WEMOS LOLIN permite extinderea functionalitatii prin afisarea informatiei de la senzori prin Bluetooth pe un device. De asemenea se putea adauga un LCD unde se puteau afisa datele, insa timpul nu mi-a mai permis acest lucru.

Per total, mi-a placut sa lucrez la acest proiect, chiar cred ca am inteles mai bine aceasta materie, iar lucrul cu firele cu siguranta ma va ajuta pe viitor, atat sa creez alte proiecte personale cat si sa ofer mentenanta obiectelor electronice.

Bibliografie/Resurse

pm/prj2021/amocanu/senzor_wifi_calitate_aer.txt · Last modified: 2021/06/02 19:28 by bogdan.petrusca
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