Cuprins:

Construiți un senzor de calitate a aerului IoT intern Nu este necesar un nor: 10 pași
Construiți un senzor de calitate a aerului IoT intern Nu este necesar un nor: 10 pași
Anonim
Construiți un senzor de calitate a aerului IoT intern Nu este necesar un nor
Construiți un senzor de calitate a aerului IoT intern Nu este necesar un nor
Construiți un senzor de calitate a aerului IoT intern Nu este necesar un nor
Construiți un senzor de calitate a aerului IoT intern Nu este necesar un nor
Construiți un senzor de calitate a aerului IoT intern Nu este necesar un nor
Construiți un senzor de calitate a aerului IoT intern Nu este necesar un nor
Construiți un senzor de calitate a aerului IoT intern Nu este necesar un nor
Construiți un senzor de calitate a aerului IoT intern Nu este necesar un nor

Calitatea aerului interior sau exterior depinde de multe surse de poluare și, de asemenea, de vreme.

Acest dispozitiv captează câțiva dintre parametrii comuni și unii dintre cei mai interesanți utilizând 2 cipuri de senzori.

  • Temperatura
  • Umiditate
  • Presiune
  • Gaz organic
  • Micro-particule

Senzorii utilizați aici sunt BME680 pentru a obține valori de temperatură, umiditate, presiune și gaze organice și PMS5003 pentru a obține densitatea micro-particulelor.

Prin utilizarea bibliotecii HomeDing este ușor să construiți un dispozitiv conectat doar la rețeaua dvs. de acasă și care poate fi accesat și controlat de orice browser din rețea. Acesta vine cu o selecție de Elemente care permit utilizarea celor mai frecvente cipuri de senzori, dispozitive și alte servicii.

De asemenea, aduce o soluție completă pentru găzduirea unei părți web în interiorul dispozitivului în loc să utilizeze o soluție bazată pe cloud pentru a afișa datele senzorului și a interacționa cu dispozitivul.

Provizii

Tot ce aveți nevoie pentru a construi acest proiect este o placă bazată pe ESP8266, cum ar fi placa nodemcu și un set de senzori pentru a măsura calitatea aerului. Biblioteca HomeDing utilizată în acest proiect acceptă unele dintre cipurile de senzori obișnuite pentru temperatură, umiditate, presiune și calitate. Aici este utilizat cipul BMP680.

  • O mufă USB și un cablu micro-usb pentru alimentare.
  • 1 placa nodemcu cu CPU ESP8266.
  • 1 placă de detectare a senzorului BME680.
  • 1 senzor laser cu particule de aer PM2.5 tip PMS5003

Este ușor să schimbați senzorul BME680 cu un senzor DHT22, deoarece acestea sunt, de asemenea, acceptate de bibliotecă, printre multe altele.

Pasul 1: Pregătiți Arduino Environment pentru ESP8266

Pregătiți Arduino Environment pentru ESP8266
Pregătiți Arduino Environment pentru ESP8266
  1. Instalați cea mai recentă versiune a Arduino IDE (în prezent versiunea 1.8.2).
  2. Utilizați Board Manager pentru a instala instalarea suportului esp8266. O instrucțiune detaliată poate fi găsită aici:
  3. Configurați opțiunile plăcii pentru un NodeMCU 1.0 cu 1MByte SPIFFS File System așa cum se arată în captura de ecran

Pasul 2: includeți bibliotecile necesare

Includeți bibliotecile obligatorii
Includeți bibliotecile obligatorii

Biblioteca HomeDing se bazează pe unele biblioteci suplimentare comune pentru ca senzorii și afișajele să funcționeze.

Când instalați biblioteca HomeDing, veți vedea o fereastră pop-up cu aceste biblioteci necesare, care pot fi instalate automat în imagine și este ușor să le instalați pe toate.

Uneori (din motive necunoscute) instalarea bibliotecilor eșuează, astfel încât toate bibliotecile necesare trebuie instalate manual.

Mai multe detalii despre bibliotecile necesare pot fi găsite pe site-ul web al documentației la

Aceasta este lista bibliotecilor necesare curente:

  • Adafruit NeoPixel
  • LiquidCrystal_PCF8574.h
  • Driver Oled ESP8266 și ESP32 pentru afișaj SSD1306
  • Rotativ
  • Biblioteca de senzori DHT pentru ESPx
  • OneWire

Senzorul laser cu particule de aer PMS5003 comunică utilizând un semnal de linie serială de 9600 baud. Acest semnal este capturat utilizând biblioteca SoftwareSerial care vine odată cu instalarea instrumentelor ESP8266. Asigurați-vă că nu aveți o versiune mai veche instalată ca bibliotecă.

Pasul 3: Personalizați schița de exemplu standard

Personalizați schița de exemplu standard
Personalizați schița de exemplu standard

Exemplul standard include deja unii dintre senzorii mai obișnuiți ca elemente, astfel încât va fi necesară doar o anumită configurație.

Acest lucru se aplică senzorului BME680 care este acceptat de elementul BME680.

Senzorul PMS5003 este mai puțin frecvent și trebuie activat prin includerea elementului PMS în firmware. Acest lucru se realizează prin definirea #define HOMEDING_INCLUDE_PMS în secțiunea de înregistrare a elementelor din schiță

#define HOMEDING_INCLUDE_BME680 # define HOMEDING_INCLUDE_PMS

Pentru simplitate la adăugarea noului dispozitiv în rețea, puteți adăuga SSID-ul și fraza de acces WiFi de acasă în fișierul secrets.h de lângă fișierul schiță standard.ino. Dar puteți utiliza și Managerul WiFi încorporat pentru a adăuga dispozitivul la rețea fără această configurație codificată.

Acum, totul cu privire la implementarea schiței este gata, iar firmware-ul poate fi compilat și încărcat.

Pasul 4: încărcați interfața de utilizare web

Exemplul standard vine cu un folder de date care conține toate fișierele pentru interfața de utilizare web.

Înainte de a încărca aceste fișiere, poate doriți să adăugați fișierele env.json și config.json pe care le puteți găsi cu acest articol, deoarece acest lucru va ușura lucrurile.

Conținutul acestor fișiere este ceea ce face ca dispozitivul IoT să fie special și să se comporte ca un senzor de calitate a aerului. Este explicat în detaliu în această poveste.

Utilizați utilitarul de încărcare a fișierului ESP8266 și încărcați toate fișierele. Este nevoie de o repornire pentru a activa configurația.

Pasul 5: Adăugați senzorul BME680

Adăugați senzorul BME680
Adăugați senzorul BME680
Adăugați senzorul BME680
Adăugați senzorul BME680
Adăugați senzorul BME680
Adăugați senzorul BME680

Senzorul BME680 comunică cu placa folosind magistrala I2C.

Deoarece acest lucru este posibil partajat cu alte extensii, cum ar fi alți senzori sau afișaje, este configurat la nivelul dispozitivului în env.json împreună cu numele de rețea al dispozitivului. Iată un eșantion extras de setări pentru dispozitiv și I2C:

„dispozitiv”: {

"0": {"name": "airding", "description": "Senzor de calitate a aerului", … "i2c-scl": "D2", "i2c-sda": "D1"}}

Pe panoul de verificare puteți vedea cablurile de conectare la senzor: 3,3V = roșu, GND = negru, SCL = galben, SDA = albastru

Configurația pentru BME680 poate fi utilizată în config.json:

„bme680”: {

"bd": {"address": "0x77", "readtime": "10s"}}

Vom adăuga acțiunile mai târziu.

Pentru a testa configurarea, utilizați doar un browser și deschideți https://airding/board.htm și veți vedea valorile reale ale senzorului afișate și vor fi actualizate aproximativ la fiecare 10 secunde:

Pasul 6: Adăugați senzorul PMS5003

Adăugați senzorul PMS5003
Adăugați senzorul PMS5003

Nu am avut un senzor cu un conector prietenos pentru panou, așa că a trebuit să tai unul dintre conectorii de pe cablu și să folosesc fierul meu de lipit pentru a-l atașa direct la placa nodemcu. O puteți vedea încă pe pozele finale.

Puterea pentru acest senzor trebuie luată de la Vin care este alimentat în mod normal de magistrala USB. GND este același, dar disponibil și lângă pinul Vin.

Datele de la senzor sunt transferate într-un format serial standard de 9600 baud, astfel încât pinii rx și tx și timpul de citire trebuie să fie configurate:

„pms”: {

"pm25": {"description": "pm25 senzor de particule", "pinrx": "D6", "pintx": "D5", "readtime": "10s"}}

Vom adăuga acțiunile mai târziu.

Pentru a testa din nou setarea, reporniți dispozitivul și utilizați un browser și deschideți https://airding/board.htm și veți vedea valoarea pm35 reală a senzorului afișată și vor fi actualizate aproximativ la fiecare 10 secunde, dar această valoare este în mod normal nu se schimbă des.

Puteți obține valori mai mari plasând o lumină de lumânare lângă senzor, deoarece o lumânare produce o mare parte din aceste particule.

Acum puteți pune totul într-o carcasă frumoasă, deoarece toate celelalte configurații și chiar actualizări de software pot fi realizate de la distanță.

Pasul 7: Adăugarea unor funcții de rețea

Următorul extras de configurație din env.json este activat

  • actualizarea firmware-ului prin antenă
  • permite detectarea rețelei utilizând protocolul de rețea SSDP și preia ora curentă de pe un server ntp.

{

… "Ota": {"0": {"port": 8266, "passwd": "123", "description": "Ascultați actualizările OTA 'over the air'"}}, "ssdp": {"0 ": {" Producător ":" numele dvs. "}}," ntptime ": {" 0 ": {" readtime ":" 36h "," zone ": 2}}}

Ar trebui să ajustați fusul orar la locația dvs. Dacă aveți dubii, puteți utiliza site-ul web https://www.timeanddate.com/ pentru a obține compensarea de la UTC / GMT. „2” este potrivit pentru ora de vară a Germaniei.

De asemenea, puteți regla parola ota după ce ați citit instrucțiunile privind modul de salvare din documentație la

După o repornire este posibil să găsiți dispozitivul de aerisire în rețea și după ce primiți un răspuns de la serverul ntp, ora locală este disponibilă.

Pasul 8: Adăugarea unor jurnale

Este posibil ca valorile reale să nu dea suficient, astfel încât să mai poată fi folosite câteva elemente.

Pentru această poveste, elementul Jurnal și Elementul NPTTime sunt utilizate pentru a înregistra istoricul valorilor senzorilor într-un fișier jurnal, iar cardul UI Web pentru acest element îl poate afișa ca un grafic.

Următoarea configurație creează cele 2 elemente jurnal pentru gaze și particule:

{

"log": {"pm": {"description": "Jurnalul pm25", "file name": "/pmlog.txt", "filesize": "10000"}, "aq": {"description": " Jurnalul calității gazului "," nume fișier ":" /aqlog.txt "," dimensiune fișier ":" 10000 "}}}

Pasul 9: Acțiuni

Acțiuni
Acțiuni

Acum trebuie să transferăm valorile reale către elementele jurnal folosind acțiuni. Acțiunile folosesc o notație URL pentru a transmite un kay și valoarea elementului țintă. Multe elemente acceptă emiterea de acțiuni pe anumite evenimente care se întâmplă, cum ar fi captarea unei noi valori a senzorului.

Acțiunile sunt configurate la elementul care emite acțiuni. Sunt necesare 2 intrări:

  • Evenimentul onvalue pms / p25 trimite valoarea reală elementului jurnal / pm folosind o acțiune de valoare.
  • Evenimentul bme680 / bd ongas trimite valoarea reală elementului log / pm folosind o acțiune de valoare.

{

"pms": {"pm25": {… "onvalue": "log / pm? value = $ v"}}, "bme680": {"bd": {… "ongas": "log / aq? value = $ v "}}}

Acum toate elementele sunt configurate.

Pasul 10: Imagini și fișiere de configurare

Imagini și fișiere de configurare
Imagini și fișiere de configurare
Imagini și fișiere de configurare
Imagini și fișiere de configurare
Imagini și fișiere de configurare
Imagini și fișiere de configurare

Iată câteva imagini cu senzorul meu final de calitate a aerului IoT.

Fișierele de configurare pentru descărcare trebuie redenumite în *.json (nr.txt) înainte de încărcare.

Linkuri și referințe

  • Depozitul de coduri sursă HomeDing:
  • Documentație:
  • Exemplu standard:
  • Element BME680:
  • Element PMS:
  • Element jurnal:
  • Element NtpTime:

Recomandat: