Ilmanlaadun mittausta kansalaissensoreilla

Ilmanlaatua, esimerkkiksi pienhiukkasia ja saasteiksi luettavia kaasuja on perinteisesti mitattu viranomaisten toimesta tarkoilla ja kalliilla mittalaitteilla. Viime vuosien aikana markkinoille on kuitenkin tullut edullisia pienhiukkas- ja kaasusensoreita, joiden mittaamien arvojen lukeminen ja lähettäminen nettiin onnistuu halvalla mikrokontrollerilla (esimerkiksi Arduino, ESP8266, ESP32) tai minitietokoneella (Raspberry Pi) sekä sopivilla ohjelmointitaidoilla.
Miten tarkkoja halvat sensorit ovat ja voisiko niiden avulla vaikka täydentää virallisten mittauspisteiden tuottamaa dataa? Vekotinverstas päätti kokeilla ja järjesti yhdessä Open Knowledge Finlandin kanssa 27.9.2018 työpajan, jossa tutkittiin tekniikan osalta tee-se-itse-ilmanlaatusensorin toimivuutta. Työpajaan osallistui asiantuntijoita Ilmatieteenlaitokselta, XAMKista, Helsingin kaupunginkirjastosta, HSL:lta, Mehackitista, Vekotinverstaalta sekä yksityishenkilöitä.
Laitteisto
Pienhiukkassensori SDS011
Edellisen syksyn ilmanlaatusensorikokeilun jäljiltä Vekotinverstaalla oli kahdeksan kappaletta NOVA SDS011 -pienhiukkassensoria, joista kuusi osoittautui vielä fyysisesti toimiviksi. (Yhdestä oli irronnut osia ja toisesta hajonnut tuuletin.) Noin 7×7 cm kokoisessa laitteessa on pieni tuuletin, joka imee ilmaa laitteen sisälle. Ilman mukana sinne päätyy pienhiukkasia, jotka sirottavat sisällä olevan laserin valoa tunnistimille, joiden signaalit lopulta muutetaan numeerisiksi arvoiksi. SDS011 tulostaa mittausarvot (PM2.5 ja PM10) sarjaporttiin ja ne on todella helppo lukea suoraan mikrokontrollerilla tai tietokoneella USB-porttiin liitettävän sovittimen avulla.
SDS011:n hinta suoraan Kiinasta, esimerkiksi Aliexpressistä tilattuna on 15-20 € rahteineen. Sen arvioitu elinikä on yhtäjaksoisessa käytössä muutamasta kuukaudesta vuoteen, sillä tuulettimen hajoamisen, laserdiodin luvatun eliniän päättymisen (8000 tuntia) tai laitteen likaantuminen lopettaa sen toiminnan suhteellisen nopeasti. Elinikää voi yrittää pidentää käyttämällä sensoria vain osan ajasta, esimerkiksi minuutin ajan kerran 5-10 minuutissa, jolloin tietenkin myös datan tarkkuus pienenee ja nopeasti ohimenevät piikit pienhiukkaspitoisuuksissa voi jäädä havaitsematta. Pitkän ajan trendejä mitatessa harvempi mittaustaajuus voi kuitenkin olla aivan riittävä.
Ilmanlaatusensori BME680

Bosch Sensortecin BME680-sensori mittaa ilman suhteellista kosteutta, lämpötilaa, painetta sekä VOC-kaasuja.
On hieman epäselvää onko VOC:ien mittaamisessa ulkoilmasta kovin paljon hyötyä vaikkapa autoliikenteen päästöjen osalta, mutta koska BME680:tä ei ole aiemmin ollut Vekotinverstaalla testissä, päätettiin ottaa se mukaan testikokoonpanoon.
BME680 ilmoittaa havaitut VOC-pitoisuudet kilo-ohmeina (kΩ): mitä pienempi on mitattu resistanssi eli ohmimäärä, sitä enemmän ilmassa on VOC:eja. Ja kääntäen: mitä puhtaampi ilma, sitä suurempi on sensorin ilmoittama ohmimäärä.
Mikrokontrolleri ESP8266

ESP8266:sta on muodostunut muutamassa vuodessa kaikenlaisten IoT-kokeilujen työjuhta edullisen hinnan, helppokäyttöisyyden (Arduino- ja PlatformIO-kehitysalustojen kanssa yhteensopiva) ja langattomuuden ansiosta.
Muutaman euron hintaisessa piirissä on mukana WLAN-radio, riittävästi muistia yksinkertaisten IoT-sovellusten ajamiseen ja jokunen GPIO-portti erilaisten sensoreiden ja muiden lisälaitteiden kytkemiseen.
ESP8266 valikoitui tämän työpajan mikrokontrolleriksi, sillä sitä on runsaasti Vekotinverstaan varastoissa ja sille löytyy valmis softakirjasto melkein jokaiselle mahdolliselle digitaaliseen väylään liitettävälle sensorille.
Työpajan kulku

Kokoonnuimme entisessä Marian sairaalassa OKF:n tiloissa ja esittelykierroksen jälkeen kertasimme työpajan tavoitteet: kytketään ilmanlaatusensorit toimintakuntoon ja lähetetään niistä saatava mittausdata reaaliajassa verkkoon. Lounaan jälkeen aloitimme laitteiden kokoamisen, joka tapahtui yhdistämällä sensorit ESP8266:een perinteisillä hyppylangoilla.
Sensoreita lukeva ja tiedot nettipalvelimen tietokantaan lähettävä ohjelma <https://github.com/VekotinVerstas/DemoSensor> oli tehty etukäteen ja työpajalaisten tehtäväksi jäi kääntää se onnistuneesti omalle tietokoneelle asennetulla Arduino IDE -kehitysalustalla.
Kääntäminen onnistui lopulta jokaisella, vaikka turhan iso osa ajasta meni puuttuvien sensorikirjastojen asentamiseen ja jopa korjaamiseen.
Tämän jälkeen metsästettiin jonkin aikaa oikeita käyttäjätunnuksia ja salasanoja, joilla sensoridatan lähetys palvelimelle onnistui.
Päivän opetukset:
- Kerää kaikki ohjelmanpätkät samaan projektiin, jos tarkoitus on että kaikki työpajaan osallitujat saavat ohjelmiston käännettyä ja asennettua ilman suurta turhautumista. Älä luota, että esimerkiksi sensorikirjastojen asennus onnistuu helposti työpajan aikana.
- Varmista, että tunnukset, salasanat, nettipalvelimen osoitteet ym. muuttuvat asetukset ovat osallistujien saatavilla heti alkuvaiheessa.
- Testaa ”puhtaalla” tietokoneella tai käyttäjäprofiililla, että projekti kääntyy aivan varmasti, jos osallistujien on tarkoitus asentaa itse ohjelma mikrokontrolleriin. Omassa ympäristössä voi olla sellaisia asetuksia tai muutoksia, joiden toistaminen muilla tietokoneilla ei onnistu työpajan aikana.
Onneksi tässä työpajassa osallistujat olivat kaikki teknisesti niin eteviä, että ongelmat selvitettiin käytettävissä olevan ajan puitteissa ja kaikki laitteet voitiin pakata yhteen laatikkoon odottamaan vientiä Mäkelänkadun kalibrointiasemalle.
Laitteiden kalibrointi

Halpojen sensoreiden ollessa kyseessä mielessä on aina pieni epäilys, voiko sensorin tuottamaan dataan luottaa. Sensorin mittapään laatu voi vaihdella, kuluvat osat voivat vaikuttaa ajan myötä mittaustulokseen tai sensori voi olla luonteeltaan sellainen, että se täytyy kalibroida ennen käyttöönottoa.
Ja jotta voidaan arvioida edullisen sensorin laatu verrattuna laadukkaisiin mittalaitteisiin, pitäisi se viedä laadukkaan mittalaitteen viereen mittaamaan samaa ilmaa riittävän pitkäksi aikaa.
Onneksi ystävälliset ihmiset HSY:ltä lupasivat, että voimme viedä tee-se-itse-sensorit HSY:n ilmanlaadun supermittausaseman katolle Mäkelänkadulle mittaamaan 1-2 viikoksi. Tällöin kaikki laitteet mittaisivat riittävän lähekkäin sijoitettuna keskenään käytännössä samaa ilmaa ja ne olisivat parin metrin päässä myös virallisesta ilmanlaadun mittauspisteestä.

Vekotinverstaan Aki asensi kaikki kuusi sensorikokoonpanoa kuumaliimalla levylle, joka asennettiin muoviseen säilytyslaatikkoon. Seuraavana aamuna laatikko vietiin Mäkelänkatu 50:n edustalla olevan kontin katolle. Sähköjohdot saatiin vietyä sisäpuolelle pistorasiaan valmiista läpiviennistä, joita on katolla useampia. Nettiin laitteet pääsivät WLAN-4G-reitittimen kautta.

Kertynyt kalibrointidata
Ilmanlaatulaatikko haettiin pois kymmenen päivän kuluttua. Kertyneessä datassa näkyy useita mielenkiintoisia ilmiöitä, joiden tulkinta jää tässä vaiheessa vielä kahvipöytäanalyysin tasolle. Tavoitteena on myöhemmin yrittää löytää tapoja käyttää, yhdistellä ja analysoida dataa.
Kaikki kertynyt data löytyy toistaiseksi visualisoituna Grafana-käyttöliittymästä sekä pakattuina CSV-tiedostoina osoitteessa
https://iot.fvh.fi/downloads/aq2/ .
Pienhiukkaset
Pienhiukkasten osalta kaikki kuusi SDS011-sensoria antoivat yllättävän samankaltaisia tuloksia. Viisi niistä tuottivat käytännössä yhteneväistä dataa, mutta yhden arvot olivat systemaattisesti suurempia ja ”piikikkäämpiä”. Tämä näkyy alla olevassa kuvassa vihreänä käyränä.

Tietokantaan tallennettiin myös kontin katolla sijaitsevan Ilmatieteenlaitoksen pienhiukkassensorin dataa Ilmatieteenlaitoksen avoimesta rajapinnasta ja se näkyy kuvissa ja datadumpissa tunnisteella (dev-id) FMI.

Kertynyt data
Dataa voi selata Grafana-käyttöliittymän kautta osoitteessa
https://iot.fvh.fi/grafana/d/43e4DXTmz/airquality-2018-test-data-diy?orgId=6&from=1538116200000&to=1538978400000
ja se on myös ladattavissa CSV-muodossa osoitteesta
https://iot.fvh.fi/downloads/aq2/
CSV-muotoinen data näyttää esimerkiksi tältä (BME680-sensorit):
time,readable_time,gas,humi,pres,temp,dev-id 1538116595134,2018-09-28T06:36:35.134000Z,0,70.8,999.48,7.05,2C:3A:E8:1F:63:D1 1538116604797,2018-09-28T06:36:44.796999Z,0,67.3,999.73,8.19,2C:3A:E8:1F:5E:0C 1538116604829,2018-09-28T06:36:44.828999Z,0,66,999.3,7.52,B4:E6:2D:1B:56:F2
Kentät:
time = unix time (sekunnit alkaen 1.1.1970 00:00:00 UTC)
readable_time = aika ISO 8601 -standardin mukaisessa muodossa
gas,humi,pres,temp jne = mittausarvot
dev-id = laitteen tunniste
Jatkosuunnitelmia
Myöhemmin syksyllä 2018 ja mahdollisesti alkuvuodesa 2019 järjestetään lisää ilmanlaatusensoreihin liittyviä työpajoja. Seuraa Vekotinverstaan nettisivuja sekä facebookia ja twitteriä, niin kuulet niistä ensimmäisenä!