Inhoudsopgave:
- Benodigdheden
- Stap 1: Bereid de Arduino-omgeving voor op ESP8266
- Stap 2: Vereiste bibliotheken opnemen
- Stap 3: Pas de standaardvoorbeeldschets aan
- Stap 4: Upload de webgebruikersinterface
- Stap 5: Voeg de BME680-sensor toe
- Stap 6: Voeg de PMS5003-sensor toe
- Stap 7: Enkele netwerkfuncties toevoegen
- Stap 8: wat logboekregistratie toevoegen
- Stap 9: Acties
- Stap 10: Afbeeldingen en configuratiebestanden
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01
De kwaliteit van de binnen- of buitenlucht is afhankelijk van vele bronnen van vervuiling en ook van het weer.
Dit apparaat legt enkele veelvoorkomende en enkele van de meest interessante parameters vast door gebruik te maken van 2 sensorchips.
- Temperatuur
- Vochtigheid
- Druk
- Organisch gas
- Micro-deeltjes
De sensoren die hier worden gebruikt zijn de BME680 voor het verkrijgen van temperatuur, vochtigheid, druk en organische gaswaarden en de PMS5003 om de dichtheid van de microdeeltjes te krijgen.
Door de HomeDing-bibliotheek te gebruiken, is het eenvoudig om een apparaat te bouwen dat alleen met uw thuisnetwerk is verbonden en dat door elke browser op het netwerk kan worden bereikt en beheerd. Het wordt geleverd met een selectie van elementen waarmee u de meest voorkomende sensorchips, apparaten en andere services kunt gebruiken.
Het biedt ook een complete oplossing voor het hosten van een webside in het apparaat in plaats van een cloudgebaseerde oplossing te gebruiken om de sensorgegevens weer te geven en met het apparaat te communiceren.
Benodigdheden
Het enige dat u nodig hebt om dit project te bouwen, is een op ESP8266 gebaseerd bord zoals het nodemcu-bord en een set sensoren om de luchtkwaliteit te meten. De HomeDing-bibliotheek die in dit project wordt gebruikt, ondersteunt enkele van de gebruikelijke sensorchips voor temperatuur, vochtigheid, druk en kwaliteit. Hier wordt de BMP680-chip gebruikt.
- Een USB-stekker en een micro-usb-kabel voor voeding.
- 1 nodemcu bord met de ESP8266 CPU.
- 1 BME680 sensor breakout board.
- 1 PM2.5 lasersensor voor luchtdeeltjes type PMS5003
Het is gemakkelijk om de BME680-sensor te verwisselen met een DHT22-sensor, omdat deze ook door de bibliotheek en vele andere wordt ondersteund.
Stap 1: Bereid de Arduino-omgeving voor op ESP8266
- Installeer de nieuwste versie van Arduino IDE (momenteel versie 1.8.2).
- Gebruik Board Manager om de esp8266-ondersteuning te installeren. Een gedetailleerde instructie vindt u hier:https://arduino-esp8266.readthedocs.io/en/latest/i…
- Stel de bordopties in voor een NodeMCU 1.0 met 1 MByte SPIFFS-bestandssysteem zoals weergegeven in de schermafbeelding
Stap 2: Vereiste bibliotheken opnemen
De HomeDing-bibliotheek is afhankelijk van enkele veelvoorkomende extra bibliotheken om sensoren en displays te laten werken.
Wanneer u de HomeDing-bibliotheek installeert, ziet u een pop-up met deze vereiste bibliotheken die automatisch kunnen worden geïnstalleerd en weergegeven in de afbeelding en het is eenvoudig om ze allemaal te installeren.
Soms (om onbekende redenen) mislukt de installatie van de bibliotheken, zodat alle vereiste bibliotheken handmatig moeten worden geïnstalleerd.
Meer details over de vereiste bibliotheken zijn te vinden op de documentatiewebsite op
Dit is de lijst met momenteel vereiste bibliotheken:
- Adafruit NeoPixel
- LiquidCrystal_PCF8574.h
- ESP8266 en ESP32 Oled-stuurprogramma voor SSD1306-display
- RotaryEncoder
- DHT-sensorbibliotheek voor ESPx
- OneWire
De PMS5003 luchtdeeltjeslasersensor communiceert via een serieel lijnsignaal van 9600 baud. Dit signaal wordt opgevangen met behulp van de SoftwareSerial-bibliotheek die bij de installatie van de ESP8266-tools wordt geleverd. Zorg ervoor dat u geen oudere versie als bibliotheek hebt geïnstalleerd.
Stap 3: Pas de standaardvoorbeeldschets aan
Het standaardvoorbeeld bevat al enkele van de meest voorkomende sensoren als elementen, dus er is slechts enige configuratie vereist.
Dit geldt voor de BME680-sensor die wordt ondersteund door het BME680-element.
De PMS5003-sensor komt minder vaak voor en moet worden geactiveerd door het PMS-element in de firmware op te nemen. Dit wordt gedaan door #define HOMEDING_INCLUDE_PMS te definiëren in het elementregistergedeelte van de schets
#define HOMEDING_INCLUDE_BME680#define HOMEDING_INCLUDE_PMS
Om het nieuwe apparaat eenvoudig aan het netwerk toe te voegen, kunt u de SSID en wachtwoordzin van uw wifi thuis toevoegen in het bestand secrets.h naast het standaard.ino-schetsbestand. Maar je kunt ook de ingebouwde WiFi Manager gebruiken om het apparaat zonder deze hard-coded configuratie aan het netwerk toe te voegen.
Nu is alles met betrekking tot de implementatie van de schets gedaan en kan de firmware worden gecompileerd en geüpload.
Stap 4: Upload de webgebruikersinterface
Het standaardvoorbeeld wordt geleverd met een gegevensmap die alle bestanden voor de web-UI bevat.
Voordat u deze bestanden uploadt, wilt u misschien het env.json- en config.json-bestand toevoegen dat u bij dit artikel kunt vinden, omdat dit de zaken gemakkelijker maakt.
De inhoud van deze bestanden is wat het IoT-apparaat speciaal maakt en zich gedraagt als een luchtkwaliteitssensor. In dit verhaal wordt het uitgebreid uitgelegd.
Gebruik het ESP8266-hulpprogramma voor het uploaden van bestanden en upload alle bestanden. Het heeft een herstart nodig om de configuratie te activeren.
Stap 5: Voeg de BME680-sensor toe
De BME680-sensor communiceert met het bord via de I2C-bus.
Aangezien dit mogelijk wordt gedeeld met andere extensies zoals andere sensoren of displays, wordt dit op apparaatniveau in env.json geconfigureerd samen met de netwerknaam van het apparaat. Hier is een uitgepakt voorbeeld van apparaat- en I2C-instellingen:
"apparaat": {
"0": { "name": "airding", "description": "Luchtkwaliteitssensor", … "i2c-scl": "D2", "i2c-sda": "D1" } }
Op het breadboard zie je de aansluitkabels naar de sensor: 3.3V=rood, GND=zwart, SCL=geel, SDA=blauw
De configuratie voor BME680 kan worden gebruikt in config.json:
"bme680": {
"bd": { "adres": "0x77", "readtime": "10s" } }
We zullen de acties later toevoegen.
Om de setup te testen, gebruikt u gewoon een browser en opent u https://airding/board.htm en u ziet de werkelijke waarden van de sensor weergegeven en deze worden ongeveer elke 10 seconden bijgewerkt:
Stap 6: Voeg de PMS5003-sensor toe
Ik had geen sensor met een breadboard-vriendelijke connector, dus ik moest een van de connectoren op de kabel afsnijden en mijn soldeerbout gebruiken om deze rechtstreeks op het nodemcu-bord te bevestigen. Je kunt het nog zien op de laatste foto's.
De voeding voor deze sensor moet worden genomen van de Vin die normaal gesproken wordt gevoed door de USB-bus. GND is hetzelfde, maar ook beschikbaar naast de Vin-pin.
De gegevens van de sensor worden overgedragen in een standaard 9600 baud serieel formaat, dus de rx- en tx-pinnen en de leestijd moeten worden geconfigureerd:
"pm": {
"pm25": { "description": "pm25-deeltjessensor", "pinrx": "D6", "pintx": "D5", "readtime": "10s" } }
We zullen de acties later toevoegen.
Om de installatie opnieuw te testen, start u het apparaat opnieuw op en gebruikt u een browser en opent u https://airding/board.htm en u ziet de werkelijke pm35-waarde van de sensor weergegeven en deze wordt ongeveer elke 10 seconden bijgewerkt, maar deze waarde is normaal niet vaak wisselen.
U kunt hogere waarden krijgen door een kaarslicht naast de sensor te plaatsen, aangezien een kaars veel van deze deeltjes produceert.
Nu kun je alles in een mooie behuizing stoppen omdat alle andere configuraties en zelfs software-updates op afstand kunnen worden gedaan.
Stap 7: Enkele netwerkfuncties toevoegen
Het volgende configuratie-extract in env.json is ingeschakeld:
- de firmware via de ether bijwerken
- maakt detectie van het netwerk mogelijk met behulp van het SSDP-netwerkprotocol en haalt de huidige tijd op van een ntp-server.
{
… "ota": { "0": { "port": 8266, "passwd": "123", "description": "Luister naar 'over-the-air' OTA-updates" } }, "ssdp": { "0 ": { "Fabrikant": "uwnaam" } }, "ntptime": { "0": { "readtime": "36h", "zone": 2 } } }
U moet de tijdzone aanpassen aan uw locatie. Als u twijfelt, kunt u de website https://www.timeanddate.com/ gebruiken om de compensatie van UTC/GMT te krijgen. "2" is geschikt voor de zomer in Duitsland.
U kunt het ota-wachtwoord ook aanpassen na het lezen van de instructies met betrekking tot de opslagmodus in de documentatie op
Na een herstart kunt u het uitgezonden apparaat op het netwerk vinden en na het ontvangen van een antwoord van de ntp-server is de lokale tijd beschikbaar.
Stap 8: wat logboekregistratie toevoegen
Alleen de werkelijke waarden geven misschien niet genoeg, dus er kunnen wat meer elementen worden gebruikt.
Voor dit verhaal worden het Log-element en het NPTTime-element gebruikt om de geschiedenis van sensorwaarden in een logbestand vast te leggen en de Web UI-kaart voor dit element kan het als een grafiek weergeven.
De volgende configuratie creëert de 2 log-elementen voor gas en deeltjes:
{
"log": { "pm": { "description": "Log of pm25", "filename": "/pmlog.txt", "filesize": "10000" }, "aq": { "description": " Log van gaskwaliteit", "bestandsnaam": "/aqlog.txt", "bestandsgrootte": "10000" } } }
Stap 9: Acties
Nu moeten we de werkelijke waarden overbrengen naar de log-elementen met behulp van acties. De acties gebruiken een URL-notatie om een kay en waarde door te geven aan het doelelement. Veel elementen ondersteunen het uitzenden van acties op bepaalde gebeurtenissen die plaatsvinden, zoals het vastleggen van een nieuwe sensorwaarde.
Acties worden geconfigureerd bij het element dat acties uitvoert. Er zijn 2 vermeldingen vereist:
- De pms/p25 onvalue-gebeurtenis stuurt de werkelijke waarde naar het log/pm-element met behulp van een waardeactie.
- De bme680/bd ongas-gebeurtenis stuurt de werkelijke waarde naar het log/pm-element met behulp van een waardeactie.
{
"pms": { "pm25": { … "onvalue": "log/pm?value=$v" } }, "bme680": { "bd": { … "ongas": "log/aq?value= $v" } } }
Nu zijn alle elementen geconfigureerd.
Stap 10: Afbeeldingen en configuratiebestanden
Hier zijn enkele foto's van mijn laatste IoT-luchtkwaliteitssensor.
De configuratiebestanden om te downloaden moeten worden hernoemd naar *.json (geen.txt) voordat ze worden geüpload.
Links en referenties
- HomeDing Broncode Repository:
- Documentatie:
- Standaardvoorbeeld:
- BME680-element:
- PMS-element:
- Log-element:
- NtpTime-element:
Aanbevolen:
Circadiaanse vriendelijke LED-bureaulamp (geen programmering vereist!): 7 stappen (met afbeeldingen)
Circadiaanse vriendelijke LED-bureaulamp (geen programmering vereist!): Ik heb deze lamp ontworpen om circadiaans ritmevriendelijk te zijn. 'S Nachts is het gemakkelijker voor je slaap omdat alleen de warm gekleurde LED's kunnen branden. Overdag kan hij je wakker houden omdat zowel de koelwitte als de warmgekleurde LED's aan de s
Pocket PC (geen weergave vereist): 7 stappen
Pocket PC (NoDisplayRequired): Ooit een watchdogs 2 willen maken zoals een pocket PC die je overal mee naartoe kunt nemen? Zo ja, dan is dit de perfecte instructable voor jou. De pc heeft een op Linux gebaseerd besturingssysteem, maar je kunt vrijwel elk op ARM gebaseerd besturingssysteem gebruiken, je kunt ook Windows 10 gebruiken. De totale co
Arduino/Android voor beginners, geen codering vereist - Gegevens en besturing: 15 stappen
Arduino/Android voor beginners, geen codering vereist - Gegevens en besturing: update 23 april 2019 -- Voor datum-/tijdplots die alleen Arduino millis() gebruiken, zie Arduino Datum/tijd plotten/logging met Millis() en PfodApp De nieuwste gratis pfodDesigner V3 .0.3610+ genereerde complete Arduino-schetsen om gegevens uit te zetten tegen datum/tijd-u
Zoeken naar dingen in Google Chrome met behulp van Microsoft Excel-macro's (GEEN CODEERKENNIS VEREIST): 10 stappen
Zoeken naar dingen in Google Chrome met behulp van Microsoft Excel-macro's (GEEN CODEERKENNIS VEREIST): Wist u dat u eenvoudig een zoekfunctie aan uw Excel-spreadsheet kunt toevoegen?! Ik kan u laten zien hoe u dit in een paar eenvoudige stappen doet! Hiervoor heeft u het volgende nodig: Een computer - (CHECK!) Microsoft Excel Google Chrome op u geïnstalleerd
Robot Gong: Ultiem Hackaton-projectidee voor verkoop- en productnerds (geen codering vereist) - 17 stappen (met afbeeldingen)
Robot Gong: Ultiem hackaton-projectidee voor verkoop- en productgeeks (geen codering vereist): laten we een robotachtige muzikale gong bouwen die wordt geactiveerd door e-mail. Hiermee kunt u geautomatiseerde e-mailwaarschuwingen instellen om de gong af te vuren… (via SalesForce, Trello, Basecamp…)Uw team zal nooit meer vergeten om "GONGGG" wanneer nieuwe code wordt vrijgegeven, een deal