Table of Contents

Air quality measurement

Introducere

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

Export to PDF