Maak een luchtkwaliteitsmeter met Arduino

Maak een luchtkwaliteitsmeter met Arduino

Gepubliceerd op: 25-04-2022 14:19

Met behulp van verschillende sensoren voor CO2, fijnstof (PM10) en temperatuur/luchtvochtigheid maak je zelf gemakkelijk een geavanceerde luchtkwaliteitsmeter. Zo houd je zelf de controle over de luchtkwaliteit in en om jouw huis.

Hoe luchtkwaliteit meten?

De algehele luchtkwaliteit wordt bepaald aan de hand van een aantal verschillende factoren/vervuilers. De meest gebruikte componenten voor het bepalen van de luchtkwaliteit zijn de concentratie CO2, het fijnstofgehalte (PM10 / PM2.5) en de luchtvochtigheid. Met deze drie factoren kun je bepalen of de kwaliteit van de lucht goed genoeg is om geen gezondheidsklachten te ondervinden op de korte of lange termijn. Om de verschillende componenten van de luchtkwaliteit te kunnen meten heb je verschillende sensoren nodig en een computertje om de gegevens te verwerken, in dit geval een ESP8266 NodeMcu V3, een microcontroller board met ingebouwde Wifi.

ESP8266 luchtkwaliteitsmeter met CO2 en PM10 sensoren en LCD display

CO2 sensor

Het CO2-gehalte in de lucht zegt iets over hoe goed de ruimte geventileerd is. CO2 is namelijk het gas wat je als mens uitademt en wat je wilt afvoeren naar buiten. Daarnaast komt er veel CO2 vrij bij verbrandingsprocessen en is het daarmee een belangrijk broeikasgas. Voor het meten van de CO2-concentratie in de lucht gebruik ik de MH-Z19 sensor. Meer over deze sensor en hoe je hem aansluit op een Arduino lees je in het artikel CO2 meten met de MH-Z19.

Fijnstof sensor

Ook fijnstof komt vrij bij diverse verbrandingsprocessen en is schadelijk voor de longen, daarom wil je de blootstelling aan fijnstof zo laag mogelijk houden. Een betaalbare fijnstofsensor op basis van laser scattering technologie is de Plantower PMS5003. Meer informatie over het meten van fijnstof met de PMS5003 lees je in het artikel Fijnstof meten met Arduino en de PMS5003.

Luchtvochtigheid en temperatuur sensor

Een goede relatieve luchtvochtigheid ligt tussen de 40% en 60%. Wanneer de lucht te droog is (<40%) kun je last krijgen van droge ogen, keelpijn en bloedneuzen. Wanneer de lucht zeer vochtig is en de temperatuur hoog wordt de ruimte als benauwd ervaren, een soort tropisch regenwoud gevoel, wat het ademen belemmerd. Ook kan een hoge luchtvochtigheid zorgen voor condens en schimmelvorming in muren en plafonds.

De luchtvochtigheid en temperatuur meet ik met een HTU-21d, een digitale temp-hygro sensor met een goede nauwkeurigheid die via I2C is uit te lezen. Je zou ook nog kunnen kiezen voor een BME280 sensor, die meet naast de relatieve luchtvochtigheid en temperatuur ook nog de luchtdruk (barometer). Sluit de sensor aan op de I2C aansluitingen van de NodeMCU ESP8266 op D1 (SCL) en D2 (SDA).

Luchtkwaliteit sensoren aansluiten op ESP8266

De diverse sensoren verbind je eenvoudig met jumpercables aan de ESP8266 NodeMcu V3. De PMS5003 fijnstofsensor en de MH-Z19 CO2-sensor hebben een voedingsspanning van 5 Volt nodig, die haal ik van de VU-pin (V-USB), de HTU-21d draait op 3,3 Volt. De HTU-21d sluit ik via I2C aan op D1 en D2, de Transmit en Enable aansluiting van de PMS5003 sluit ik aan op D3 en D6, en de MH-Z19 Tx en Rx op D7 en D8.

LCD display voor luchtkwaliteitsmeter

Om direct inzicht te hebben in de luchtkwaliteit heb ik ook een 20x4 karakter LCD-display toegevoegd aan de luchtkwaliteitsmeter. Doordat het display over een I2C verbinding beschikt kan ik deze ook makkelijk aansluiten op D1 en D2 van de ESP8266. Het display toont de actuele meetwaardes op het display zodat je altijd inzicht hebt in de luchtkwaliteit. Als een of meer van de gemeten stoffen de veiligheidsdrempel overschrijden verschijnt er een uitroepteken achter de waarde.

Bij te hoge waardes toont de luchtkwaliteitsmeter een uitroepteken

Luchtkwaliteit data loggen en grafieken

Ik wil niet alleen de waardes direct af lezen van het display maar ook over langere tijd kunnen loggen en terugkijken. Hiervoor maak ik gebruik van mijn standaard oplossing om Arduino data naar een MySQL-database te loggen via HTTP GET-requests. Meer hierover lees je in het artikel Arduino data online loggen. Op deze manier worden alle meetwaardes één keer per minuut opgeslagen in de database zodat ik vervolgens via de webinterface in grafiekvorm het verloop van de luchtkwaliteit in de gaten kan houden.

De webinterface van de luchtkwaliteitsmeter toont de historische meetwaarden in grafiekvorm

In de grafieken toon ik ook de drempelwaardes voor de luchtkwaliteit zoals deze door de WHO zijn vastgesteld. Zo kan ik zien of en wanneer de gemeten stoffen de grenswaardes overschrijden en voor hoelang. In onderstaande grafiek van de fijnstofconcentratie in mijn woonkamer zie je het effect van de vieze houtkachel van de buren die gistermiddag en avond voor verhoogde fijnstofconcentraties zorgde. De grootste piek binnenshuis wordt veroorzaakt door het koken (ondanks afzuigkap!) rond 18.00u.

Fijnstofgrafiek toont waardes gemeten in de woonkamer

Arduino code van de luchtkwaliteitsmeter

Via deze link kun je de Arduino code van de ESP8266 luchtkwaliteitsmeter downloaden. Vergeet niet ook alle bijbehorende libraries te downloaden via de librarymanager van de Arduino IDE!

Arduino code en serial monitor van de luchtkwaliteitsmeter

2 reacties op dit artikel »

Aanbevolen artikelen