Bouw een eigen sensor waarmee je zelf het fijnstof in de lucht kunt gaan meten. Gebruik de kennis en ervaring van het OK Lab Stuttgart dat het Citizen Science project ‘luftdaten.info’ heeft opgestart. Het doel is het zichtbaar maken van fijn stof op plekken waar nu niet gemeten wordt door officiële instanties. De gemeten waarden zijn zichtbaar op de website van luftdaten.info. Het RIVM laat de (open) meetgegevens van deelnemers uit Nederland ook zien op het Samen Meten dataportaal.
De meest gebruikte sensor is de Nova SDS011 sensor. In het project is de sensor vergeleken met een meer geavanceerde optische monitor voor fijn stof (Grimm). Op sommige dagen is sprake van een goede overeenkomst, maar vooral bij hogere concentraties en luchtvochtigheden meet de SDS011 vaak hogere concentraties. Toch leveren de data veel informatie op, bijvoorbeeld over de variatie in de tijd of verschillen tussen locaties. Je hoeft niet te kunnen programmeren of solderen, maak je dus geen zorgen! De firmware is al kant en klaar voorgeprogrammeerd. Je hoeft deze alleen nog op de NodeMCU (ESP8266) te laden en te installeren. Dit is goed te doen en vervolgens de verschillende sensoren te verbinden met de NodeMCU (ESP8266). Er komt geen soldeerbout aan te pas.
Boodschappenlijstje
- NodeMCU ESP8266, CPU/WLAN ~€2,50
- SDS011 Feinstofsensor ~€15
- DHT22, Temperatuur & Luchtvochtigheid ~€2,10
- BMP280, Temperatuur, Luchtvochtigheid & Luchtdruk ~€0,80
- Verbindingskabeltjes ~€0,80
- USB voedingskabel micro-USB kabel en stekker netvoeding USB
- Tie wraps
- Slang, bijvoorbeeld bij de Gamma ~€4,99
- Bescherming tegen weersinvloeden, bijvoorbeeld Marley Silent bochten (DN 75 87°) of een andere behuizing, zoals de KlikAanKlikUit OWH-002 voor €14 bij de Gamma.
Bij elkaar komen de kosten rond de €40, afhankelijk van de keuze voor de behuizing. Als de boodschappen binnen zijn kun je beginnen met de firmware.
Voor communicatie met de NodeMCU (ESP8266) heb je een usb2serial-driver nodig. De chipset voor de NodeMCU’s is normalerwijze CH341. Gebruik onder Windows de USB2serialdriver van fabrikant (Zoek op het web naar ESP8266 en CH341) en installeer de driver. Vervolgens ga je de Arduino software downloaden en op je computer installeren en opstarten. In de Arduino software bij de instellingen ‘Bestand -> Voorkeuren’ in het veld ‘Additional Board Beheer URLs’ moet je deze URL invoegen: http://arduino.esp8266.com/stable/package_esp8266com_index.json
Onder ‘Schets -> Bibliotheek gebruiken -> Bibliotheken beheren’ naar ‘esp8266’ zoeken en vervolgens ‘esp8266 by ESP8266 Community’ installeren. Sluit de ESP8266 aan via USB op je computer en kijk in het Arduino IDE programma onder, ‘Hulpmiddelen -> Poort ’ welk poort nummer is toegewezen, onthoud dit nummer. Arduino IDE beëindigen (op z’n laatst voor het flashen) en ESP8266 aangesloten laten.
Download de Nederlandse firmware en sla het bestand op een te onthouden plaats op.
Open de opdrachtregel (cmd.exe) onder Windows en voor het volgende uit:
C:Users% USERPROFILE%AppDataLocalArduino15packagesesp8266toolsesptool .4.13esptool.exe -vv -cd nodemcu -cb 57600 -ca 0x00000 -cp COM1 -cf pad naar het gedownloade firmware bestand
(de poort achter -cp moet mogelijk worden aangepast)
Het scherm zal een melding geven wanneer het flashen van de luftdaten.info firmware goed is verlopen. Vervolgens kun je de ESP8266 loskoppen van de computer en ‘gewoon’ op het lichtnet aansluiten. De sensor zal een Wi-Fi toegangspunt met de naam Fijnstof sensor en ID, waarbij sensor ID de ChipID is (decimaal, in het voorbeeld 4426284) gaan uitzenden. Maak verbinding met dit toegangspunt met bijvoorbeeld je telefoon.
Wacht even tot de verbinding tot stand is gebracht. Open in de browser de pagina http://192.168.4.1/ om de de sensor te configureren. Selecteer onder ‘Configureren’ de SSID van je thuisnetwerk en vul vervolgens het WiFi wachtwoord van het eigen netwerk in en sla dit op. Selecteer de sensoren. Na het opslaan wordt de sensor opnieuw opgestart. Deze is daarna niet meer op deze manier te benaderen, maar via een IP adres binnen je eigen netwerk. Gebruik een netwerkscanner om achter het IP adres te komen.
Begin pas met het samenbouwen nadat je de firmware met succes hebt geïnstalleerd. Mocht de firmware toch niet goed op de NodeMCU te zijn geïnstalleerd dan hoef je niet alles uit elkaar te halen en daarna weer opnieuw samen te bouwen. Het vermindert ook het risico dat verbindingen zonder dat je merkt bij het het aansluiten en loskoppelen van de USB-kabel los raken. Ik heb gekozen voor de KlikAanKlikUit OWH-002 behuizing en heb de DHT22 sensor passend gemaakt.
Zorg ervoor dat bij het aansluiten de kabels echt op de pinnen zitten, aangezien de meeste Dupont-kabels ook “naast” de pennen passen. Sluit de sensoren volgens onderstaande afbeelding en schema’s aan.
Verbinding SDS011, de pinnen zijn genummerd van RECHTS naar LINKS:
- SDS011 Pin 1 -> Pin D1 / GPIO5
- SDS011 Pin 2 -> Pin D2 / GPIO4
- SDS011 Pin 3 -> GND
- SDS011 Pin 4 -> Ongebruikt
- SDS011 Pin 5 -> VU (NodeMCU v3) / VIN (NodeMCU v1,v2)
- SDS011 Pin 6 -> Ongebruikt
- SDS011 Pin 7 -> Ongebruikt
Verbinding van de DHT22, de pinnen zijn genummerd van LINKS naar RECHTS, voorkant is het “rooster”:
- DHT22 Pin 1 -> Pin 3V3 (3.3V)
- DHT22 Pin 2 -> Pin D7 (GPIO13)
- DHT22 Pin 3 -> Ongebruikt
- DHT22 Pin 4 -> Pin GND
Verbinding van de BMP280 sensor via I2C:
- VCC -> Pin 3V3
- GND -> Pin GND
- SCL -> Pin D4 (GPIO2)
- SDA -> Pin D3 (GPIO0)
Uiteindelijk ziet mijn behuizing en sensor er als volgt uit:
Om jouw sensor in het Luftdaten.info netwerk te kunnen opnemen dien je een e-mail naar [email protected] te sturen met de volgende gegevens:
- Het ID van de ESP8266 (NodeMCU) wordt als een getal weergegeven in de het WiFi netwerk en op de configuratiepagina (zie hier boven).
- Het adres waar de sensor is opgehangen: straat met huisnummer, postcode en plaats. Wij maken hieruit de GPS coördinaten van jouw sensor (alleen afgerond).
- Beschrijving van de omgeving van jouw meetstation, zoals de hoogte boven de grond, langs de weg, veel verkeer, open veld en dergelijke.
- Jouw e-mailadres (wordt niet gepubliceerd).
- Indien mogelijk een afbeelding van de plaats waar de sensor is opgehangen (wordt niet gepubliceerd).
De sensor kan je ook toevoegen aan OpenSenseMap. Je registreert hiervoor een zogenoemde senseBox via https://opensensemap.org/register Je vult op het registratieformulier gebruikersnaam, woonplaats enz. in. Onder ‘Hardware’, ‘meine senseBox’ klap je het menu voor de invulvelden van ‘luftdaten.info’ uit en vul je in welke sensoren je aan je meetstation hebt aangesloten. Dan sla je de gegevens op. Je krijgt dan je eigen senseBox ID te zien. Kopieer dit (je krijgt hem ook per mail) en vult het senseBox ID in op de de configuratie pagina van je luftdaten.info sensor en kiest voor de pagina ‘Verdere API’s’. ‘Verzenden naar OpenSenseMap’, vink je aan en je voert het net verkregen senseBox ID in en slaat de instellingen op.
Als laatste willen de de data van de luftdaten.info meetstation kunnen invoeren in Domoticz. Op het Domoticz forum vond ik deze post. Als je net als ik ook over een SDS011, DHT22 en BME280 sensor beschikt moet je 4 dummy devices aanmaken in Domoticz. De namen moeten precies overeenkomen met de namen in het script.
- Name: “Luftdaten PM10”, Type: custom sensor, X-axis: µg/m3
- Name: “Luftdaten PM2.5”, Type: custom sensor, X-axis: µg/m3
- Name: “Luftdaten DHT22”, Type: Temp + Humidity
- Name: “Luftdaten BME280”, Type: Temp + Humidity + Baro
Maak een lua script aan, dat bijvoorbeeld de naam ‘luftdaten.lua’ krijgt en plaats dit in de ‘scripts/dzVents/scripts’ directory. Voeg onderstaande toe als script.
local FQDN = 'luftdaten.xxxx.xx' return { active = true, on = { timer = { 'every minute' }, httpResponses = { 'luftdatenRetrieved' } -- matches callback string below }, execute = function(domoticz, item) if (item.isTimer) then domoticz.openURL({ url = 'http://' .. FQDN .. '/data.json', method = 'GET', callback = 'luftdatenRetrieved' }) elseif (item.isHTTPResponse) then if (item.ok and item.isJSON) then -- statusCode == 2xx if tonumber(item.json.age) < 60 then -- 1: SDS_P1 PM10, 2: SDS_P2 PM2.5, 3: DHT22 temp, 4: DHT22 hum, 5: BME280 temp, 6: BME280 hum, 7: BME280 baro domoticz.devices('Luftdaten PM10').updateCustomSensor(item.json.sensordatavalues[1].value) domoticz.devices('Luftdaten PM2.5').updateCustomSensor(item.json.sensordatavalues[2].value) domoticz.devices('Luftdaten DHT22').updateTempHum(item.json.sensordatavalues[3].value,item.json.sensordatavalues[4].value,0) -- Comment out the next 3 lines if you dont have the BME280 sensor if (tonumber (item.json.sensordatavalues[5].value) < 100) and (tonumber (item.json.sensordatavalues[7].value)/100 < 1050) then domoticz.devices('Luftdaten BME280').updateTempHumBaro(item.json.sensordatavalues[5].value,item.json.sensordatavalues[6].value,0,(item.json.sensordatavalues[7].value/100),0) end end else -- oops domoticz.log('Error fetching Luftdaten data', domoticz.LOG_ERROR) domoticz.log(item.data, domoticz.LOG_ERROR) end end end }
Meer informatie:
- De website waarop mijn uitleg is gebaseerd.
- Voor foto’s, Duitse uitleg en installatie via MacOS kijk je hier.
- Luftdaten en Domoticz.
Bijgewerkt op 20 februari 2023
Het aanmelden per mail hoeft niet meer. Het vostaat om je aan te melden via de website van Luftdaten.
Het aanmelden per mail hoeft niet meer. Het volstaat om je aan te melden via de website van Luftdaten.