Air quality measurement

Introducere

  • Un dispozitiv de monitorizare a calitații aerului, care la apasarea butonului afiseaza pe display concentrația de compusi organici volatili (VOCs) in aer si un indice al calitatii aerului (AQI) asociat, pe care le trimite prin wifi catre un spreadsheet.
  • Ideea initiala a pornit de la conștientizarea importantei calitatii aerului pentru sanatatea noastra.
  • Este util pentru ca ofera o solutie convenabila și eficienta pentru monitorizarea calitatii aerului în timp real.

Descriere generală

La apasarea butonului, senzorul SGP-40 masoara indexul de calitate a aerului, il afiseaza pe display si il trimite spre un spreadsheet prin wifi, unde este retinuta valoarea si data.

Hardware Design

Lista piese:

  • ESP32-Wroom-32
  • SGP40
  • Display led MAX7219
  • Buton
  • Rezistente

Senzor SGP40:

  • Functioneaza prin I2C
  • ESP32 are atriubuiti automat pinii 21 si 22 pentru SDA si SCL
  • Liniile SDA și SCL se afla la nivelul logic 0 și nu pot forța liniile la nivelul logic 1, deci este nevoie de rezistente de pull-up
  • Am ales rezistente de 4.7k

Display 7segment Max7219:

  • Functioneaza prin SPI
  • ESP32 are atriubuiti automat pinii 23, 18 si 5 pentru DIN, CLK si CS
  • Trebuie sa fie alimentat la 5V, asa ca am adus o sursa de tensiune
  • Pinul CS are 2 propietati (chip-select in cazul in care sunt mai multe componente conectate in serie si LOAD pentru Load-Data Input)

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare: Arduino IDE
  • Board manager: ESP32 Dev Module
  • Library manager:
    1. DFRobot_SGP40.h (senzor SGP)
    2. SPI.h, AceSPI.h, AceSegment.h (Display si SPI)
    3. WiFi.h, HTTPClient.h (trimiterea catre spreadsheet a datelor)

Detalii implementare:

  • SGP40: Am verificat ca adresa I2C sa corespunda. Cu ajutorul functiei sgp.getVoclndex() din DFRobot_SGP40 am luat valoarea
  • Display: Am definit un vector care reprezinta codurile pentru numere si le am trimis prin SPI catre display
  • Transmiterea datelor catre un spreadsheet prin wifi: Am creat un script care imi scrie intr-un spreadsheet si l am lansat ca aplicatie web. Pe placuta m-am conectat la wifi cu WiFi.mode(WIFI_STA); WiFi.begin(ssid, password);. Cu valoarea aflata de sgp40 am facut un request prin http.begin(url); catre aplicatie.

Rezultate Obţinute

Am reusit sa transmit datele prin wifi. Senzorul s-a ars si nu am mai avut timp sa iau altul. Display-ul nu se mai aprinde.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2024/aungureanu/andrei.tiu.txt · Last modified: 2024/05/26 17:47 by andrei.tiu
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