Luftdaten.info

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

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%\AppData\Local\Arduino15\packages\esp8266\tools\esptool\0.4.13\esptool.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 rajko@codefor.de 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:

Reacties

reacties

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

*