INHOUDSOPGAWE:

Bou 'n interne IoT -lugkwaliteitssensor Geen wolk benodig nie: 10 stappe
Bou 'n interne IoT -lugkwaliteitssensor Geen wolk benodig nie: 10 stappe

Video: Bou 'n interne IoT -lugkwaliteitssensor Geen wolk benodig nie: 10 stappe

Video: Bou 'n interne IoT -lugkwaliteitssensor Geen wolk benodig nie: 10 stappe
Video: РАДУЖНЫЕ ДРУЗЬЯ — КАЧКИ?! НЕЗАКОННЫЕ Эксперименты VR! 2024, November
Anonim
Bou 'n interne IoT -lugkwaliteitssensor, geen wolk benodig nie
Bou 'n interne IoT -lugkwaliteitssensor, geen wolk benodig nie
Bou 'n interne IoT -lugkwaliteitssensor, geen wolk benodig nie
Bou 'n interne IoT -lugkwaliteitssensor, geen wolk benodig nie
Bou 'n interne IoT -lugkwaliteitssensor, geen wolk benodig nie
Bou 'n interne IoT -lugkwaliteitssensor, geen wolk benodig nie
Bou 'n interne IoT -lugkwaliteitssensor, geen wolk benodig nie
Bou 'n interne IoT -lugkwaliteitssensor, geen wolk benodig nie

Die kwaliteit van die binne- of buitelug hang af van baie besoedelingsbronne en ook van die weer.

Hierdie toestel maak 'n paar algemene en 'n paar van die interessantste parameters vas deur twee sensorskyfies te gebruik.

  • Temperatuur
  • Humiditeit
  • Druk
  • Organiese gas
  • Mikro-deeltjies

Die sensors wat hier gebruik word, is die BME680 vir die bereiking van temperatuur, humiditeit, druk en organiese gaswaardes en die PMS5003 om die digtheid van die mikrodeeltjies te kry.

Deur die HomeDing -biblioteek te gebruik, is dit maklik om 'n toestel te bou wat slegs aan u tuisnetwerk gekoppel is en deur enige blaaier op die netwerk bereik en beheer kan word. Dit bevat 'n verskeidenheid elemente waarmee u die mees algemene sensorskyfies, toestelle en ander dienste kan gebruik.

Dit bied ook 'n volledige oplossing vir die aanbied van 'n toestel aan die binnekant van die web in plaas van 'n wolkgebaseerde oplossing te gebruik om die sensordata te vertoon en met die toestel te kommunikeer.

Voorrade

Al wat u nodig het om hierdie projek te bou, is 'n ESP8266 -bord soos die nodemcu -bord en 'n stel sensors om die luggehalte te meet. Die HomeDing -biblioteek wat in hierdie projek gebruik word, ondersteun sommige van die algemene sensorskyfies vir temperatuur, humiditeit, druk en kwaliteit. Hier word die BMP680 -chip gebruik.

  • 'N USB-aansluiting en 'n mikro-usb-kabel vir kragtoevoer.
  • 1 nodemcu -bord met die ESP8266 -SVE.
  • 1 BME680 sensor -uitbreekbord.
  • 1 PM2.5 lugdeeltjieslasersensor tipe PMS5003

Dit is maklik om die BME680 -sensor met 'n DHT22 -sensor te ruil, aangesien dit ook onder meer deur die biblioteek ondersteun word.

Stap 1: Berei Arduino -omgewing voor vir ESP8266

Berei Arduino -omgewing voor vir ESP8266
Berei Arduino -omgewing voor vir ESP8266
  1. Installeer die nuutste weergawe van Arduino IDE (tans weergawe 1.8.2).
  2. Gebruik Board Manager om die installering van die esp8266-ondersteuning te installeer. 'N Gedetailleerde instruksie kan hier gevind word:
  3. Stel die bordopsies op vir 'n NodeMCU 1.0 met 1MByte SPIFFS -lêerstelsel, soos op die kiekie getoon

Stap 2: Sluit vereiste biblioteke in

Sluit vereiste biblioteke in
Sluit vereiste biblioteke in

Die HomeDing -biblioteek maak staat op 'n paar algemene ekstra biblioteke vir sensors en skerms om te werk.

As u die HomeDing -biblioteek installeer, sien u 'n pop -up met hierdie vereiste biblioteke wat outomaties geïnstalleer kan word, wat op die foto getoon word, en dit is maklik om dit almal te installeer.

Soms (met onbekende redes) misluk die installering van die biblioteke, sodat al die vereiste biblioteke met die hand geïnstalleer moet word.

Meer besonderhede oor die vereiste biblioteke kan gevind word op die dokumentasie webwerf by

Dit is die lys van huidige vereiste biblioteke:

  • Adafruit NeoPixel
  • LiquidCrystal_PCF8574.h
  • ESP8266 en ESP32 Oled Driver vir SSD1306 -skerm
  • RotaryEncoder
  • DHT -sensorbiblioteek vir ESPx
  • OneWire

Die PMS5003 -lugdeeltjieslasersensor kommunikeer met behulp van 'n 9600 baud -reekslynlyn. Hierdie sein word opgevang deur die SoftwareSerial -biblioteek te gebruik wat by die installering van die ESP8266 -gereedskap kom. Maak seker dat u nie 'n ouer weergawe as 'n biblioteek geïnstalleer het nie.

Stap 3: Pas die standaard voorbeeldskets aan

Pas die standaard voorbeeldskets aan
Pas die standaard voorbeeldskets aan

Die standaardvoorbeeld bevat reeds 'n paar van die meer algemene sensors as elemente, dus slegs 'n paar konfigurasies is nodig.

Dit geld vir die BME680 -sensor wat deur die BME680 -element ondersteun word.

Die PMS5003 -sensor kom minder gereeld voor en moet geaktiveer word deur die PMS -element in die firmware op te neem. Dit word gedoen deur #define HOMEDING_INCLUDE_PMS in die elementregistergedeelte van die skets te definieer

#definieer HOMEDING_INCLUDE_BME680#definieer HOMEDING_INCLUDE_PMS

Vir die eenvoudiger om die nuwe toestel by die netwerk te voeg, kan u die SSID en die wagwoordfrase van u tuis -WiFi by die secrets.h -lêer langs die standaard.ino -sketslêer voeg. Maar u kan ook die ingeboude WiFi Manager gebruik om die toestel by die netwerk te voeg sonder hierdie hardgekodeerde opset.

Nou is alles aangaande die implementering van die skets gedoen en die firmware kan saamgestel en opgelaai word.

Stap 4: Laai die web -UI op

Die standaard voorbeeld bevat 'n gegewensgids wat alle lêers vir die web -UI bevat.

Voordat u hierdie lêers oplaai, wil u moontlik die env.json- en config.json -lêer byvoeg wat u met hierdie artikel kan vind, want dit sal dinge makliker maak.

Die inhoud van hierdie lêers is wat die IoT -toestel spesiaal maak en optree as 'n luggehalte -sensor. Dit word breedvoerig in hierdie verhaal verduidelik.

Gebruik die ESP8266 -program vir die oplaai van lêers en laai al die lêers op. Dit moet herlaai word om die konfigurasie te aktiveer.

Stap 5: Voeg die BME680 -sensor by

Voeg die BME680 -sensor by
Voeg die BME680 -sensor by
Voeg die BME680 -sensor by
Voeg die BME680 -sensor by
Voeg die BME680 -sensor by
Voeg die BME680 -sensor by

Die BME680 -sensor kommunikeer met die bord met behulp van die I2C -bus.

Aangesien dit moontlik met ander uitbreidings gedeel word, soos ander sensors of skerms, word dit op die toestelvlak in env.json saam met die netwerknaam van die toestel gekonfigureer. Hier is 'n uittreksel van die toestel- en I2C -instellings:

"toestel": {

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

Op die broodbord kan u die aansluitkabels na die sensor sien: 3.3V = rooi, GND = swart, SCL = geel, SDA = blou

Die opset vir BME680 kan gebruik word in config.json:

"bme680": {

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

Ons sal die aksies later byvoeg.

Om die opstelling te toets, gebruik slegs 'n blaaier en maak https://airding/board.htm oop, en u sal die werklike waardes van die sensor sien en dit sal ongeveer elke 10 sekondes opgedateer word:

Stap 6: Voeg die PMS5003 -sensor by

Voeg die PMS5003 -sensor by
Voeg die PMS5003 -sensor by

Ek het nie 'n sensor met 'n broodbordvriendelike aansluiting gekry nie, so ek moes een van die verbindings op die kabel sny met my soldeerbout om dit direk aan die nodemcu -bord vas te maak. U kan dit nog steeds op die laaste foto's sien.

Die krag vir hierdie sensor moet geneem word uit die Vin wat normaalweg deur die USB -bus aangedryf word. GND is dieselfde, maar ook langs die Vin -pen beskikbaar.

Die data van die sensor word in 'n standaard 9600 baud -reeksformaat oorgedra, sodat die rx- en tx -penne en leestyd gekonfigureer moet word:

"pms": {

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

Ons sal die aksies later byvoeg.

Om die opstelling weer te toets, herlaai die toestel en gebruik 'n blaaier en maak https://airding/board.htm oop, en u sal die werklike pm35 -waarde van die sensor sien, en dit sal ongeveer elke 10 sekondes opgedateer word, maar hierdie waarde is normaalweg verander nie gereeld nie.

U kan hoër waardes kry deur 'n kerslig langs die sensor te plaas, aangesien 'n kers baie van hierdie deeltjies produseer.

Nou kan u alles in 'n mooi behuising plaas, want al die ander konfigurasies en selfs sagteware -opdaterings kan op afstand gedoen word.

Stap 7: Voeg enkele netwerkfunksies by

Die volgende konfigurasie -uittreksel in env.json is in staat

  • die opdatering van die firmware
  • maak dit moontlik om die netwerk op te spoor met behulp van die SSDP -netwerkprotokol en haal die huidige tyd vanaf 'n ntp -bediener op.

{

… "ota": {"0": {"poort": 8266, "passwd": "123", "beskrywing": "Luister na 'oor die lug' OTA -opdaterings '}},' ssdp ': {' 0 ": {" Manufacturer ":" yourname "}}," ntptime ": {" 0 ": {" readtime ":" 36h "," zone ": 2}}}

U moet die tydsone aanpas by u ligging. As u twyfel, kan u die webwerf https://www.timeanddate.com/ gebruik om die teenstelling van UTC/GMT te verkry. "2" is reg vir die somer in Duitsland.

U kan ook die ota -wagwoord aanpas nadat u die instruksies aangaande die stoormodus gelees het in die dokumentasie op

Na 'n herbegin vind u moontlik die lugtoestel op die netwerk en nadat u 'n antwoord van die ntp -bediener gekry het, is die plaaslike tyd beskikbaar.

Stap 8: Voeg 'n paar houtkap by

Net die werklike waardes gee moontlik nie genoeg nie, sodat nog 'n paar elemente gebruik kan word.

Vir hierdie verhaal word die Log -element en die NPTTime -element gebruik om die geskiedenis van sensorwaardes in 'n loglêer op te teken, en die Web -UI -kaart vir hierdie element kan dit as 'n grafiek vertoon.

Die volgende konfigurasie skep die 2 logelemente vir gas en deeltjies:

{

"log": {"pm": {"description": "Log van pm25", "filename": "/pmlog.txt", "filesize": "10000"}, "aq": {"description": " Logboek van gasgehalte "," lêernaam ":" /aqlog.txt "," lêergrootte ":" 10000 "}}}}

Stap 9: Handelinge

Aksies
Aksies

Nou moet ons die werklike waardes na die logelemente oordra deur aksies te gebruik. Die aksies gebruik 'n URL -notasie om 'n kay en waarde aan die doelelement oor te dra. Baie elemente ondersteun aksies op sekere gebeurtenisse wat gebeur soos om 'n nuwe sensorwaarde vas te lê.

Handelinge word gekonfigureer by die element wat aksies uitstuur. 2 inskrywings word vereis:

  • Die gebeurtenis pms/p25 onvalue stuur die werklike waarde na die log/pm -element met behulp van 'n waarde -aksie.
  • Die gebeurtenis bme680/bd ongas stuur die werklike waarde na die log/pm -element deur 'n waarde -aksie te gebruik.

{

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

Nou is al die elemente gekonfigureer.

Stap 10: Foto's en konfigurasie lêers

Foto's en konfigurasie lêers
Foto's en konfigurasie lêers
Foto's en konfigurasie lêers
Foto's en konfigurasie lêers
Foto's en konfigurasie lêers
Foto's en konfigurasie lêers

Hier is 'n foto van my laaste IoT Air Quality sensor.

Die konfigurasie lêers vir aflaai moet hernoem word na *.json (no. Txt) voordat dit opgelaai word.

Skakels en verwysings

  • HomeDing -bronkode -bewaarplek:
  • Dokumentasie:
  • Standaardvoorbeeld:
  • BME680 Element:
  • PMS -element:
  • Logelement:
  • NtpTime Element:

Aanbeveel: