Kazalo:

Zgradite hišni senzor kakovosti zraka IoT brez oblaka: 10 korakov
Zgradite hišni senzor kakovosti zraka IoT brez oblaka: 10 korakov

Video: Zgradite hišni senzor kakovosti zraka IoT brez oblaka: 10 korakov

Video: Zgradite hišni senzor kakovosti zraka IoT brez oblaka: 10 korakov
Video: Ави Леб: Сознание, UAP, Жак Валле 2024, Junij
Anonim
Zgradite hišni senzor kakovosti zraka IoT brez oblaka
Zgradite hišni senzor kakovosti zraka IoT brez oblaka
Zgradite hišni senzor kakovosti zraka IoT brez oblaka
Zgradite hišni senzor kakovosti zraka IoT brez oblaka
Zgradite hišni senzor kakovosti zraka IoT, oblak ni potreben
Zgradite hišni senzor kakovosti zraka IoT, oblak ni potreben
Zgradite hišni senzor kakovosti zraka IoT brez oblaka
Zgradite hišni senzor kakovosti zraka IoT brez oblaka

Kakovost notranjega ali zunanjega zraka je odvisna od številnih virov onesnaženja in tudi od vremena.

Ta naprava zajema nekatere običajne in nekatere najbolj zanimive parametre z uporabo 2 senzorskih čipov.

  • Temperatura
  • Vlažnost
  • Pritisk
  • Organski plin
  • Mikrodelci

Tukaj uporabljeni senzorji so BME680 za merjenje temperature, vlažnosti, tlaka in organskih plinov ter PMS5003 za pridobivanje gostote mikro delcev.

Z uporabo knjižnice HomeDing je enostavno sestaviti napravo, ki je povezana samo z vašim domačim omrežjem in je dostopna in nadzorovana s katerim koli brskalnikom v omrežju. Na voljo je z izbiro elementov, ki omogočajo uporabo najpogostejših senzorskih čipov, naprav in drugih storitev.

Prinaša tudi popolno rešitev za gostovanje spletne strani v napravi namesto uporabe rešitve v oblaku za prikaz podatkov senzorja in interakcijo z napravo.

Zaloge

Za izdelavo tega projekta potrebujete le ploščo na osnovi ESP8266, kot je plošča nodemcu in niz senzorjev za merjenje kakovosti zraka. Knjižnica HomeDing, uporabljena v tem projektu, podpira nekatere običajne senzorske čipe za temperaturo, vlažnost, tlak in kakovost. Tu se uporablja čip BMP680.

  • Priključek USB in kabel micro-usb za napajanje.
  • 1 nodemcu plošča s procesorjem ESP8266.
  • 1 Odklopna plošča senzorja BME680.
  • 1 PM2,5 laserski senzor delcev zraka tipa PMS5003

Senzor BME680 je enostavno zamenjati s senzorjem DHT22, saj jih knjižnica podpira tudi med mnogimi drugimi.

1. korak: Pripravite okolje Arduino za ESP8266

Pripravite okolje Arduino za ESP8266
Pripravite okolje Arduino za ESP8266
  1. Namestite najnovejšo različico Arduino IDE (trenutno različica 1.8.2).
  2. Namestite podporo za esp8266 z upraviteljem Board. Podrobna navodila najdete tukaj:
  3. Nastavite možnosti plošče za NodeMCU 1.0 z datotečnim sistemom 1MByte SPIFFS, kot je prikazano na posnetku zaslona

2. korak: Vključite potrebne knjižnice

Vključite obvezne knjižnice
Vključite obvezne knjižnice

Knjižnica HomeDing temelji na nekaterih običajnih dodatnih knjižnicah za delovanje senzorjev in zaslonov.

Ko namestite knjižnico HomeDing, boste videli pojavno okno s temi zahtevanimi knjižnicami, ki jih je mogoče samodejno namestiti, kot je prikazano na sliki, in jih je enostavno namestiti.

Včasih (iz neznanih razlogov) namestitev knjižnic ne uspe, zato je treba vse potrebne knjižnice namestiti ročno.

Več podrobnosti o zahtevanih knjižnicah najdete na spletni strani dokumentacije na naslovu

To je seznam trenutno potrebnih knjižnic:

  • Adafruit NeoPixel
  • LiquidCrystal_PCF8574.h
  • ESP8266 in ESP32 Oled Driver za zaslon SSD1306
  • RotaryEncoder
  • Knjižnica senzorjev DHT za ESPx
  • OneWire

Laserski senzor zračnih delcev PMS5003 komunicira z uporabo signala serijske linije 9600 baud. Ta signal se zajame s knjižnico SoftwareSerial, ki je priložena namestitvi orodij ESP8266. Pazite, da starejša različica ni nameščena kot knjižnica.

3. korak: Prilagodite standardno primerno skico

Prilagodite standardno primerno skico
Prilagodite standardno primerno skico

Standardni primer že vključuje nekatere pogostejše senzorje kot elemente, zato bo potrebna le določena konfiguracija.

To velja za senzor BME680, ki ga podpira element BME680.

Senzor PMS5003 je manj pogost in ga je treba aktivirati z vključitvijo elementa PMS v vdelano programsko opremo. To naredite tako, da v razdelku registra elementov skice določite #define HOMEDING_INCLUDE_PMS.

#define HOMEDING_INCLUDE_BME680#define HOMEDING_INCLUDE_PMS

Za poenostavitev pri dodajanju nove naprave v omrežje lahko dodate datoteko SSID in geslo za vašo domačo WiFi v datoteki secrets.h poleg datoteke s skico standard.ino. Lahko pa uporabite tudi vgrajen WiFi Manager, da napravo dodate v omrežje brez te strogo kodirane konfiguracije.

Zdaj je vse v zvezi z izvedbo skice končano, vdelano programsko opremo pa lahko sestavite in naložite.

4. korak: naložite spletni uporabniški vmesnik

Standardni primer vsebuje podatkovno mapo, ki vsebuje vse datoteke za spletni uporabniški vmesnik.

Preden naložite te datoteke, boste morda želeli dodati datoteki env.json in config.json, ki jih najdete v tem članku, ker bo to olajšalo stvari.

Vsebina teh datotek je tisto, zaradi česar je naprava IoT posebna in se obnaša kot senzor kakovosti zraka. Podrobno je opisano v tej zgodbi.

Uporabite pripomoček za nalaganje datotek ESP8266 in naložite vse datoteke. Za aktiviranje konfiguracije je potreben ponovni zagon.

5. korak: Dodajte senzor BME680

Dodajte senzor BME680
Dodajte senzor BME680
Dodajte senzor BME680
Dodajte senzor BME680
Dodajte senzor BME680
Dodajte senzor BME680

Senzor BME680 komunicira s ploščo prek vodila I2C.

Ker je to mogoče v skupni rabi z drugimi razširitvami, kot so drugi senzorji ali zasloni, je konfigurirano na ravni naprave v env.json skupaj z omrežnim imenom naprave. Tu je izvlečen vzorec nastavitev naprave in I2C:

"naprava": {

"0": {"name": "airding", "description": "Senzor kakovosti zraka",… "i2c-scl": "D2", "i2c-sda": "D1"}}

Na matični plošči lahko vidite priključne kable na senzor: 3,3 V = rdeča, GND = črna, SCL = rumena, SDA = modra

Konfiguracijo za BME680 lahko uporabite v config.json:

"bme680": {

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

Dejanja bomo dodali kasneje.

Če želite preizkusiti nastavitev, uporabite brskalnik in odprite https://airding/board.htm, prikazane bodo dejanske vrednosti senzorja, ki se bodo posodabljale približno vsakih 10 sekund:

6. korak: Dodajte senzor PMS5003

Dodajte senzor PMS5003
Dodajte senzor PMS5003

Nisem dobil senzorja s prijaznim priključkom za ploščo, zato sem moral s spajkalnikom za neposredno pritrditev na ploščo nodemcu odrezati enega od priključkov na kablu. Še vedno ga lahko vidite na končnih slikah.

Napajanje tega senzorja je treba vzeti iz Vina, ki ga običajno napaja vodilo USB. GND je enak, vendar je na voljo tudi poleg pin Pin.

Podatki iz senzorja se prenašajo v standardni 9600 baud serijski obliki, zato je treba konfigurirati zatiče rx in tx ter čas branja:

"pms": {

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

Dejanja bomo dodali kasneje.

Če želite znova preizkusiti namestitev, znova zaženite napravo in uporabite brskalnik ter odprite https://airding/board.htm in videli boste dejansko vrednost PM35 prikazanega senzorja, ki se bo posodabljala približno vsakih 10 sekund, vendar je ta vrednost običajno se ne spreminja pogosto.

Večje vrednosti lahko dobite tako, da poleg senzorja postavite svečo, saj sveča proizvaja veliko teh delcev.

Zdaj lahko vse postavite v lepo ohišje, saj je vse ostale konfiguracije in celo posodobitve programske opreme mogoče opraviti na daljavo.

7. korak: Dodajanje nekaterih omrežnih funkcij

Spodnji izvleček konfiguracije v env.json omogoča

  • brezžično posodabljanje vdelane programske opreme
  • omogoča odkrivanje omrežja z uporabo omrežnega protokola SSDP in pridobiva trenutni čas s strežnika ntp.

{

… "Ota": {"0": {"port": 8266, "passwd": "123", "description": "Poslušajte posodobitve OTA" po zraku ""}}, "ssdp": {"0 ": {" Proizvajalec ":" vaše ime "}}," ntptime ": {" 0 ": {" čas branja ":" 36h "," cona ": 2}}}

Časovni pas morate prilagoditi svoji lokaciji. Če ste v dvomih, lahko uporabite odmik od UTC/GMT na spletnem mestu https://www.timeanddate.com/. "2" je primerno za poletje Nemčije.

Geslo ota lahko prilagodite tudi po branju navodil glede načina shranjevanja v dokumentaciji na naslovu

Po ponovnem zagonu boste morda našli napravo za zračenje v omrežju in po prejemu odgovora s strežnika ntp je na voljo lokalni čas.

8. korak: Dodajte nekaj beleženja

Dejanske vrednosti morda ne dajejo dovolj, zato je mogoče uporabiti še nekaj elementov.

Za to zgodbo se element Log in NPTTime Element uporabljata za beleženje zgodovine vrednosti senzorjev v datoteki dnevnika, kartica spletnega uporabniškega vmesnika za ta element pa ga lahko prikaže kot graf.

Naslednja konfiguracija ustvari dva dnevnika za plin in delce:

{

"log": {"pm": {"description": "Dnevnik pm25", "filename": "/pmlog.txt", "filesize": "10000"}, "aq": {"description": " Dnevnik kakovosti plina "," ime datoteke ":" /aqlog.txt "," velikost datoteke ":" 10000 "}}}

9. korak: Dejanja

Dejanja
Dejanja

Zdaj moramo z dejanji prenesti dejanske vrednosti v elemente dnevnika. Dejanja uporabljajo zapis URL -ja za posredovanje ključa in vrednosti ciljnemu elementu. Mnogi elementi podpirajo oddajanje dejanj ob določenih dogodkih, ki se zgodijo, na primer zajem nove vrednosti senzorja.

Dejanja so konfigurirana pri elementu, ki oddaja dejanja, potrebna sta 2 vnosa:

  • Dogodek pms/p25 onvalue pošlje dejansko vrednost elementu log/pm z dejstvom vrednosti.
  • Dogodek bme680/bd ongas pošlje dejansko vrednost elementu log/pm z dejstvom vrednosti.

{

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

Zdaj so vsi elementi konfigurirani.

10. korak: Slike in konfiguracijske datoteke

Slike in konfiguracijske datoteke
Slike in konfiguracijske datoteke
Slike in konfiguracijske datoteke
Slike in konfiguracijske datoteke
Slike in konfiguracijske datoteke
Slike in konfiguracijske datoteke

Tukaj je nekaj slik mojega zadnjega senzorja kakovosti zraka IoT.

Konfiguracijske datoteke za prenos je treba pred nalaganjem preimenovati v *.json (št. Txt).

Povezave in reference

  • Repozitorij izvorne kode HomeDing:
  • Dokumentacija:
  • Standardni primer:
  • BME680 Element:
  • Element PMS:
  • Element dnevnika:
  • Element NtpTime:

Priporočena: