Innholdsfortegnelse:

Bygg en intern IoT luftkvalitetssensor Ingen sky kreves: 10 trinn
Bygg en intern IoT luftkvalitetssensor Ingen sky kreves: 10 trinn

Video: Bygg en intern IoT luftkvalitetssensor Ingen sky kreves: 10 trinn

Video: Bygg en intern IoT luftkvalitetssensor Ingen sky kreves: 10 trinn
Video: Дэниел Шмахтенбергер: Уничтожат ли нас технологии? 2024, Juni
Anonim
Bygg en intern IoT luftkvalitetssensor Ingen sky kreves
Bygg en intern IoT luftkvalitetssensor Ingen sky kreves
Bygg en intern IoT luftkvalitetssensor Ingen sky kreves
Bygg en intern IoT luftkvalitetssensor Ingen sky kreves
Bygg en intern IoT luftkvalitetssensor Ingen sky kreves
Bygg en intern IoT luftkvalitetssensor Ingen sky kreves
Bygg en intern IoT luftkvalitetssensor Ingen sky kreves
Bygg en intern IoT luftkvalitetssensor Ingen sky kreves

Kvaliteten på innendørs eller utendørs luft avhenger av mange forurensningskilder og også av været.

Denne enheten fanger noen vanlige og noen av de mest interessante parameterne ved å bruke 2 sensorbrikker.

  • Temperatur
  • Luftfuktighet
  • Press
  • Organisk gass
  • Mikropartikler

Sensorene som brukes her er BME680 for å få temperatur, fuktighet, trykk og organiske gassverdier og PMS5003 for å få tetthet av mikropartiklene.

Ved å bruke HomeDing -biblioteket er det enkelt å bygge en enhet som bare er koblet til hjemmenettverket ditt og som kan nås og kontrolleres av hvilken som helst nettleser på nettverket. Den kommer med et utvalg av elementer som tillater bruk av de vanligste sensorbrikkene, enhetene og andre tjenester.

Det gir også en komplett løsning for å være vert for en intern side på enheten i stedet for å bruke en skybasert løsning for å vise sensordata og samhandle med enheten.

Rekvisita

Alt du trenger for å bygge dette prosjektet er et ESP8266 -basert kort som nodemcu -kortet og sett med sensorer for å måle luftkvaliteten. HomeDing -biblioteket som ble brukt i dette prosjektet støtter noen av de vanlige sensorbrikkene for temperatur, fuktighet, trykk og kvalitet. Her brukes BMP680 -brikken.

  • En USB-kontakt og en mikro-usb-kabel for strømforsyning.
  • 1 nodemcu -kort med ESP8266 CPU.
  • 1 BME680 sensor breakout board.
  • 1 PM2,5 luftpartikkel lasersensor type PMS5003

Det er enkelt å bytte BME680 -sensor med en DHT22 -sensor, ettersom de også støttes av biblioteket blant mange andre.

Trinn 1: Forbered Arduino -miljøet for ESP8266

Forbered Arduino -miljøet for ESP8266
Forbered Arduino -miljøet for ESP8266
  1. Installer siste versjon av Arduino IDE (nåværende versjon 1.8.2).
  2. Bruk Board Manager for å installere installasjonen av esp8266-støtten. En detaljert instruksjon finner du her:
  3. Sett opp brettalternativene for en NodeMCU 1.0 med 1MByte SPIFFS File System som vist på skjermbildet

Trinn 2: Inkluder nødvendige biblioteker

Inkluder nødvendige biblioteker
Inkluder nødvendige biblioteker

HomeDing -biblioteket er avhengig av noen vanlige ekstrabiblioteker for sensorer og skjermer for å fungere.

Når du installerer HomeDing -biblioteket, vil du se en popup med disse nødvendige bibliotekene som kan installeres automatisk og vises på bildet, og det er enkelt å installere dem alle.

Noen ganger (med ukjente årsaker) mislykkes installasjonen av bibliotekene, så alle nødvendige biblioteker må installeres manuelt.

Flere detaljer om de nødvendige bibliotekene finnes på dokumentasjonsnettstedet på

Dette er listen over gjeldende nødvendige biblioteker:

  • Adafruit NeoPixel
  • LiquidCrystal_PCF8574.h
  • ESP8266 og ESP32 Oled Driver for SSD1306 -skjerm
  • RotaryEncoder
  • DHT -sensorbibliotek for ESPx
  • OneWire

PMS5003 luftpartikkel lasersensor kommuniserer ved hjelp av et 9600 baud serielt linjesignal. Dette signalet fanges opp ved å bruke SoftwareSerial -biblioteket som følger med installasjonen av ESP8266 -verktøyene. Sørg for å ikke ha en eldre versjon installert som et bibliotek.

Trinn 3: Tilpass standardeksempelskissen

Tilpass standardeksempelskissen
Tilpass standardeksempelskissen

Standardeksemplet inneholder allerede noen av de mer vanlige sensorene som elementer, så bare noen konfigurasjon vil være nødvendig.

Dette gjelder BME680 -sensoren som støttes av BME680 -elementet.

PMS5003 -sensoren er mindre vanlig og må aktiveres ved å inkludere PMS -elementet i fastvaren. Dette gjøres ved å definere #define HOMEDING_INCLUDE_PMS i elementregisterdelen av skissen

#define HOMEDING_INCLUDE_BME680#definere HOMEDING_INCLUDE_PMS

For enkelhet ved å legge den nye enheten til nettverket kan du legge til SSID og passordfrasen til ditt hjemmenett -WiFi i secrets.h -filen ved siden av standard.ino -skissefilen. Men du kan også bruke den innebygde WiFi Manager til å legge enheten til nettverket uten denne hardkodede konfigurasjonen.

Nå er alt angående implementering av skissen gjort, og fastvaren kan kompileres og lastes opp.

Trinn 4: Last opp webgrensesnittet

Standardeksemplet kommer med en datamappe som inneholder all fil for webgrensesnittet.

Før du laster opp disse filene, vil du kanskje legge til env.json- og config.json -filen du kan finne med denne artikkelen fordi dette vil gjøre ting enklere.

Innholdet i disse filene er det som gjør IoT -enheten spesiell og oppfører seg som en luftkvalitetssensor. Det er forklart i detalj i denne historien.

Bruk opplastingsverktøyet ESP8266 og last opp alle filene. Den trenger en omstart for å aktivere konfigurasjonen.

Trinn 5: Legg til BME680 -sensoren

Legg til BME680 -sensoren
Legg til BME680 -sensoren
Legg til BME680 -sensoren
Legg til BME680 -sensoren
Legg til BME680 -sensoren
Legg til BME680 -sensoren

BME680 -sensoren kommuniserer med kortet ved hjelp av I2C -bussen.

Siden dette muligens deles med andre utvidelser som andre sensorer eller skjermer, er det konfigurert på enhetsnivå i env.json sammen med nettverksnavnet til enheten. Her er et uttrukket utvalg av enhets- og I2C -innstillinger:

"enhet": {

"0": {"name": "airding", "description": "Air Quality Sensor", … "i2c-scl": "D2", "i2c-sda": "D1"}}

På brødbrettet kan du se tilkoblingskablene til sensoren: 3.3V = rød, GND = svart, SCL = gul, SDA = blå

Konfigurasjonen for BME680 kan brukes i config.json:

"bme680": {

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

Vi vil legge til handlingene senere.

For å teste oppsettet, bare bruk en nettleser og åpne https://airding/board.htm, og du vil se de faktiske verdiene til sensoren som vises, og de vil bli oppdatert omtrent hvert 10. sekund:

Trinn 6: Legg til PMS5003 -sensoren

Legg til PMS5003 -sensoren
Legg til PMS5003 -sensoren

Jeg fikk ikke en sensor med en brødbrettvennlig kontakt, så jeg måtte kutte av en av kontaktene på kabelen med loddejernet mitt for å feste den direkte til nodemcu -brettet. Du kan se det fremdeles på de siste bildene.

Strømmen til denne sensoren må tas fra Vin som normalt drives av USB -bussen. GND er det samme, men også tilgjengelig ved siden av Vin -pinnen.

Dataene fra sensoren overføres i et standard 9600 baud serielt format, slik at rx- og tx -pinnene og lesetid må konfigureres:

"pms": {

"pm25": {"description": "pm25 particle sensor", "pinrx": "D6", "pintx": "D5", "readtime": "10s"}}

Vi vil legge til handlingene senere.

For å teste oppsettet igjen, bare start enheten på nytt og bruk en nettleser og åpne https://airding/board.htm, og du vil se den faktiske pm35 -verdien til sensoren, og de vil bli oppdatert omtrent hvert 10. sekund, men denne verdien er normalt ikke endres ofte.

Du kan få høyere verdier ved å plassere et stearinlys ved siden av sensoren et lys produserer mye av disse partiklene.

Nå kan du sette alt i et fint hus fordi alle de andre konfigurasjonene og til og med programvareoppdateringer kan gjøres eksternt.

Trinn 7: Legge til noen nettverksfunksjoner

Følgende konfigurasjonsutdrag i env.json er mulig

  • oppdatering av fastvaren over air
  • lar detektere nettverket ved hjelp av SSDP -nettverksprotokollen og henter gjeldende tid fra en ntp -server.

{

… "Ota": {"0": {"port": 8266, "passwd": "123", "description": "Lytt etter" over the air "OTA -oppdateringer"}}, "ssdp": {"0 ": {" Manufacturer ":" yourname "}}," ntptime ": {" 0 ": {" readtime ":" 36h "," zone ": 2}}}

Du bør justere tidssonen til posisjonen din. Hvis du er i tvil kan du bruke nettstedet https://www.timeanddate.com/ for å få forskyvningen fra UTC/GMT. "2" er riktig for Tyskland om sommeren.

Du kan også justere ota -passordet etter å ha lest instruksjonene angående lagringsmodus i dokumentasjonen på

Etter en omstart kan du finne airding -enheten på nettverket, og etter å ha fått svar fra ntp -serveren er lokal tid tilgjengelig.

Trinn 8: Legge til litt logging

Bare de faktiske verdiene gir kanskje ikke nok, så noen flere elementer kan brukes.

For denne historien brukes Log -elementet og NPTTime -elementet til å registrere historien til sensorverdier i en loggfil, og Web -brukergrensesnittkortet for dette elementet kan vise det som en graf.

Følgende konfigurasjon oppretter de 2 loggelementene for gass og partikler:

{

"log": {"pm": {"description": "Logg av pm25", "filnavn": "/pmlog.txt", "filesize": "10000"}, "aq": {"description": " Logg over gasskvalitet "," filnavn ":" /aqlog.txt "," filesize ":" 10000 "}}}

Trinn 9: Handlinger

Handlinger
Handlinger

Nå må vi overføre de faktiske verdiene til loggelementene ved å bruke handlinger. Handlingene bruker en URL -notasjon for å overføre en kay og verdi til målelementet. Mange elementer støtter å sende ut handlinger på visse hendelser som skjer som å fange en ny sensorverdi.

Handlinger er konfigurert på elementet som sender ut handlinger. 2 oppføringer er nødvendige:

  • Hendelsen pms/p25 onvalue sender den faktiske verdien til logg/pm -elementet ved hjelp av en verdihandling.
  • Hendelsen bme680/bd ongas sender den faktiske verdien til logg/pm -elementet ved hjelp av en verdihandling.

{

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

Nå er alle elementene konfigurert.

Trinn 10: Bilder og konfigurasjonsfiler

Bilder og konfigurasjonsfiler
Bilder og konfigurasjonsfiler
Bilder og konfigurasjonsfiler
Bilder og konfigurasjonsfiler
Bilder og konfigurasjonsfiler
Bilder og konfigurasjonsfiler

Her er noen bilder av min siste IoT luftkvalitetssensor.

Konfigurasjonsfilene for nedlasting må gi nytt navn til *.json (nr. Txt) før de lastes opp.

Lenker og referanser

  • HomeDing kildekodelager:
  • Dokumentasjon:
  • Standardeksempel:
  • BME680 Element:
  • PMS -element:
  • Loggelement:
  • NtpTime Element:

Anbefalt: