Fijnstof meten voor makers: ESP32 + PMS5003

Een simpel project met verrassend veel leerpunten

19 keer bekeken / views

Fijnstof is zo’n onderwerp waar je meestal pas over leest als het over “gemiddelden” en “normen” gaat.

Maar wat gebeurt er bij jou thuis, in je werkplaats of tijdens het solderen?

Met een ESP32 en een PMS5003 luchtsensor bouwde ik een eenvoudige fijnstofmeter.

Hardwarematig bijna triviaal — maar onderweg kwam ik een paar interessante (en leerzame) valkuilen tegen.


Waarom zelf meten?

Als maker wil je dingen zien, meten en begrijpen.

Fijnstof (PM10 en vooral PM2.5) bestaat uit microscopisch kleine deeltjes die diep in de longen terecht kunnen komen. Je ziet ze niet, ruikt ze vaak niet, maar ze hebben wél effect op je gezondheid — zeker bij langdurige blootstelling.

Zelf meten maakt het concreet:

  • Wat doet koken met de luchtkwaliteit?
  • Is ventileren écht zo effectief?
  • Is “binnen” altijd beter dan “buiten”?

Spoiler: niet altijd.


De PMS5003 in het kort

De PMS5003 is een optische fijnstofsensor die werkt met een kleine laser.

Deeltjes die door de luchtstroom bewegen verstrooien het laserlicht; op basis daarvan berekent de sensor concentraties zoals:

  • PM1.0
  • PM2.5
  • PM10

Waarom deze sensor populair is bij makers:

  • Digitale UART-interface
  • Redelijk betaalbaar
  • Veel documentatie en praktijkvoorbeelden
  • Wordt ook in commerciële meters gebruikt

Je meet dus geen “hobby-waardes”, maar serieuze data.


De ESP32: overkill op de juiste manier

Voor de microcontroller gebruikte ik een ESP32 DevKitC, maar in principe is elk ESP32-bordje geschikt.

De ESP32 is hier eigenlijk overkill:

  • We gebruiken maar één UART
  • Nauwelijks rekenkracht nodig

Maar juist die overkill maakt uitbreiden later makkelijk.


Hardware-overzicht (uit te breiden)

De hardware is bewust simpel gehouden.

Globaal bestaat het project uit:

  • ESP32 DevKitC
  • PMS5003 luchtsensor
  • 6 verbindingen:
    • 5V (direct van de VBUS)
    • GND
    • TX
    • RX
    • SET
    • RESET


Een klassiek makers-moment: “Waarom meet ik niets?”

Hier liep ik zelf tegen iets aan dat het vermelden waard is.

De PMS5003 heeft echt 5 volt nodig om de laser te starten.

Geen 5 volt = geen laser = geen meetwaarden.

Ik voedde de sensor via de Vin-pin van de ESP32 DevKitC, ervan uitgaande dat daar netjes 5 volt op stond.

Maar: ik kreeg geen geldige data.

Na wat meten bleek:

  • De Vin-pin is niet direct verbonden met de 5V van de USB-connector
  • Er zit een zenerdiode tussen
  • Daardoor staat er op Vin minder dan 4 volt
  • Gevolg: de laser in de PMS5003 start niet

De sensor lijkt “aan”, maar meet helemaal niets.


De oplossing (en een beetje priegelwerk)

De oplossing is eenvoudig, maar niet meteen elegant:

👉 De 5V-aansluiting van de PMS5003 moet vóór de zenerdiode op het ESP32-bordje worden aangesloten.

Dat betekent:

  • Direct solderen op de 5V-rail van de USB-connector
  • Een klein beetje priegelwerk
  • Maar: daarna werkt de sensor meteen correct

Dit is precies zo’n detail dat je alleen tegenkomt als je het echt bouwt.


Software-overzicht (globaal)

De software is bewust overzichtelijk gehouden.

In grote lijnen:

  1. ESP32 leest via UART de PMS5003-frames uit
  2. Meetwaarden worden geparsed
  3. Data wordt periodiek verstuurd via MQTT

Geen ingewikkelde filtering of kalibratie.


MQTT: data delen met de buitenwereld

In dit project gebruik ik een MQTT broker om de meetgegevens te publiceren.

Dat maakt het:

  • Lichtgewicht
  • Betrouwbaar
  • Makkelijk te integreren

Home Assistant of Grafana pikken de waardes zonder moeite op, waardoor je:

  • Grafieken krijgt
  • Historie kunt bekijken
  • Automatiseringen kunt maken

De code staat op GitHub en is eenvoudig aan te passen aan je eigen setup.


Wat me opviel tijdens het meten

Een paar observaties:

  • Koken zonder afzuiging geeft directe pieken
  • Ventileren werkt sneller dan verwacht
  • Binnenlucht kan soms slechter zijn dan buiten
  • De sensor reageert verrassend snel

Dit maakt het project niet alleen technisch leuk, maar ook praktisch leerzaam.


Vervolg: portable en standalone

Dit project is bewust een eerste stap.

Een volgend project:

  • E-paper display
  • Batterijvoeding
  • Standalone werking
  • Eventueel deep sleep

Daarmee wordt het een verplaatsbare luchtkwaliteitsmeter, zonder afhankelijkheid van WiFi of Home Assistant.


Tot slot

Dit project laat mooi zien dat:

  • Simpele hardware niet gelijk staat aan simpele inzichten
  • Eén diode het verschil kan maken tussen “werkt niet” en “werkt perfect”
  • Meten leidt tot beter begrijpen

En precies dat is waarom dit zo’n leuk makers-project is.

This entry was posted in Arduino, ESP32, Firmware, Hardware, Uncategorised, WiFi and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

The maximum upload file size: 4 MB. You can upload: image, other. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop file here

This site uses Akismet to reduce spam. Learn how your comment data is processed.