{"id":8551,"date":"2026-02-20T14:59:12","date_gmt":"2026-02-20T13:59:12","guid":{"rendered":"https:\/\/willem.aandewiel.nl\/?p=8551"},"modified":"2026-03-16T14:51:16","modified_gmt":"2026-03-16T13:51:16","slug":"measuring-fine-dust-for-makers-esp32-pms5003","status":"publish","type":"post","link":"https:\/\/willem.aandewiel.nl\/index.php\/2026\/02\/20\/measuring-fine-dust-for-makers-esp32-pms5003\/","title":{"rendered":"Measuring Fine Dust for Makers: ESP32 + PMS5003"},"content":{"rendered":"\n<p>A simple project with surprisingly many learning points.<\/p>\n\n\n\n<p>344 keer bekeken \/ views<\/p>\n\n\n\n<p class=\"has-blue-color has-text-color has-link-color wp-elements-cebfcde26b49c4e1daef7a0fb6354e10\">Een Nederlandse vertaling van de post kunt u <a href=\"https:\/\/willem.aandewiel.nl\/index.php\/2026\/01\/28\/fijnstof-meten-voor-makers-esp32-pms5003\/\">hier<\/a> vinden.<\/p>\n\n\n\n<p>Fine dust is one of those topics you usually only read about when it comes to <em>\u201caverages\u201d<\/em> and <em>\u201cstandards.\u201d<\/em> But what happens in <strong>your home<\/strong>, in your workshop, or while soldering? <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/02\/particulateMatter.png\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/02\/particulateMatter.png\" alt=\"\" class=\"wp-image-8547\" style=\"width:264px;height:auto\" srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/02\/particulateMatter.png 500w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/02\/particulateMatter-300x300.png 300w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/02\/particulateMatter-150x150.png 150w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p><br><br>With an ESP32 and a PMS5003 air sensor I built a simple fine-dust meter. Hardware-wise almost trivial \u2014 but along the way I encountered a few interesting (and instructive) pitfalls.<\/p>\n\n\n\n<div style=\"height:9px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why measure it yourself?<\/strong><\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-large is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-box.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"765\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-box-1024x765.jpg\" alt=\"\" class=\"wp-image-8520\" style=\"width:227px;height:auto\" srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-box-1024x765.jpg 1024w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-box-300x224.jpg 300w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-box-768x573.jpg 768w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-box.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>As a maker you want to see, measure, and understand things. Fine dust (PM10 and especially PM2.5) consists of microscopic particles that can reach deep into the lungs. You can\u2019t see them, often can\u2019t smell them, but they <em>do<\/em> have an effect on your health \u2014 especially with long-term exposure. Measuring it yourself makes it concrete:<br><br><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>What does cooking do to air quality?<\/li>\n\n\n\n<li>Is ventilation really that effective?<\/li>\n\n\n\n<li>Is \u201cindoors\u201d always better than \u201coutdoors\u201d?<\/li>\n<\/ul>\n\n\n\n<p>Spoiler: not always<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The PMS5003 in short<\/strong><\/h2>\n\n\n\n<p>The PMS5003 is an optical fine dust sensor that operates with a small laser. Particles moving through the airstream scatter the laser light; based on that the sensor calculates concentrations such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PM1.0<\/li>\n\n\n\n<li>PM2.5<\/li>\n\n\n\n<li>PM10<\/li>\n<\/ul>\n\n\n\n<p>Why this sensor is popular with makers:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Digital UART interface<\/li>\n\n\n\n<li>Reasonably affordable<\/li>\n\n\n\n<li>Lots of documentation and practical examples<\/li>\n\n\n\n<li>Also used in commercial meters<\/li>\n<\/ul>\n\n\n\n<p>So you\u2019re not measuring \u201chobby values,\u201d but serious data.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-a.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"835\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-a-1024x835.png\" alt=\"\" class=\"wp-image-8511\" srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-a-1024x835.png 1024w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-a-300x245.png 300w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-a-768x627.png 768w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/pms5003-a.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The ESP32: overkill in the right way<\/strong><\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-large is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9015.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9015-1024x768.jpg\" alt=\"\" class=\"wp-image-8561\" style=\"width:317px;height:auto\" srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9015-1024x768.jpg 1024w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9015-300x225.jpg 300w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9015-768x576.jpg 768w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9015.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>For the microcontroller I used an ESP32 DevKitC, but in principle any ESP32 board is suitable. The ESP32 is actually overkill here:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>We only use one UART<\/li>\n\n\n\n<li>Hardly any computing power is needed<\/li>\n<\/ul>\n\n\n\n<p>But that overkill makes extension later easy.<\/p>\n\n\n\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Hardware overview (expandable)<\/strong><\/h2>\n\n\n\n<p>The hardware is deliberately kept simple. In general the project consists of:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ESP32 DevKitC<\/li>\n\n\n\n<li>PMS5003 air sensor<\/li>\n\n\n\n<li>6 connections:\n<ul class=\"wp-block-list\">\n<li>     5V (direct from the VBUS)<\/li>\n\n\n\n<li>GND<\/li>\n\n\n\n<li>TX<\/li>\n\n\n\n<li>RX<\/li>\n\n\n\n<li>SET<\/li>\n\n\n\n<li>RESET<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/aansluitingenPMS5003.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"848\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/aansluitingenPMS5003-1024x848.png\" alt=\"\" class=\"wp-image-8512\" style=\"width:508px;height:auto\" srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/aansluitingenPMS5003-1024x848.png 1024w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/aansluitingenPMS5003-300x249.png 300w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/aansluitingenPMS5003-768x636.png 768w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/aansluitingenPMS5003.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<div class=\"wp-block-envira-envira-gallery\"><div id=\"envira-gallery-wrap-8528\" class=\"envira-gallery-wrap envira-gallery-theme-base envira-lightbox-theme-base\" itemscope itemtype=\"https:\/\/schema.org\/ImageGallery\"><div data-row-height=\"150\" data-gallery-theme=\"normal\" id=\"envira-gallery-8528\" class=\"envira-gallery-public envira-gallery-justified-public envira-gallery-0-columns envira-clear enviratope envira-gallery-css-animations\" data-envira-columns=\"0\"><div id=\"envira-gallery-item-8526\" class=\"envira-gallery-item enviratope-item envira-gallery-item-1 envira-lazy-load\" style=\"padding-left: 3px; padding-bottom: 5px; padding-right: 3px;\"  itemscope itemtype=\"https:\/\/schema.org\/ImageObject\"><div class=\"envira-gallery-item-inner\"><div class=\"envira-gallery-position-overlay  envira-gallery-top-left\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-top-right\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-bottom-left\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-bottom-right\"><\/div><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/PMS5003-pins.png\" class=\"envira-gallery-8528 envira-gallery-link\" rel=\"enviragallery8528\" title=\"PMS5003-pins\" data-envira-caption=\"PMS5003-pins\" data-envira-retina=\"\" data-thumbnail=\"\"  itemprop=\"contentUrl\"><img decoding=\"async\" id=\"envira-gallery-image-8526\" class=\"envira-gallery-image envira-gallery-image-1 envira-normal envira-lazy\" data-envira-index=\"1\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/PMS5003-pins-920x1024-640x480.png\" data-envira-src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/PMS5003-pins-920x1024-640x480.png\" data-envira-gallery-id=\"8528\" data-envira-item-id=\"8526\" data-envira-caption=\"PMS5003-pins\" alt=\"\" title=\"PMS5003-pins\"  itemprop=\"thumbnailUrl\" data-envira-srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/PMS5003-pins-920x1024-640x480.png 400w,https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/PMS5003-pins-920x1024-640x480.png 2x\" data-envira-width=\"270\" data-envira-height=\"300\" srcset=\"data:image\/gif;base64,R0lGODlhAQABAIAAAP\/\/\/\/\/\/\/yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-safe-src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAP\/\/\/\/\/\/\/yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" \/><\/a><\/div><\/div><div id=\"envira-gallery-item-8529\" class=\"envira-gallery-item enviratope-item envira-gallery-item-2 envira-lazy-load\" style=\"padding-left: 3px; padding-bottom: 5px; padding-right: 3px;\"  itemscope itemtype=\"https:\/\/schema.org\/ImageObject\"><div class=\"envira-gallery-item-inner\"><div class=\"envira-gallery-position-overlay  envira-gallery-top-left\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-top-right\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-bottom-left\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-bottom-right\"><\/div><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-a.jpg\" class=\"envira-gallery-8528 envira-gallery-link\" rel=\"enviragallery8528\" title=\"psm5003Verbindingen-a\" data-envira-caption=\"psm5003Verbindingen-a\" data-envira-retina=\"\" data-thumbnail=\"\"  itemprop=\"contentUrl\"><img decoding=\"async\" id=\"envira-gallery-image-8529\" class=\"envira-gallery-image envira-gallery-image-2 envira-normal envira-lazy\" data-envira-index=\"2\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-a-1024x768-640x480.jpg\" data-envira-src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-a-1024x768-640x480.jpg\" data-envira-gallery-id=\"8528\" data-envira-item-id=\"8529\" data-envira-caption=\"psm5003Verbindingen-a\" alt=\"\" title=\"psm5003Verbindingen-a\"  itemprop=\"thumbnailUrl\" data-envira-srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-a-1024x768-640x480.jpg 400w,https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-a-1024x768-640x480.jpg 2x\" data-envira-width=\"300\" data-envira-height=\"225\" srcset=\"data:image\/gif;base64,R0lGODlhAQABAIAAAP\/\/\/\/\/\/\/yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-safe-src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAP\/\/\/\/\/\/\/yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" \/><\/a><\/div><\/div><div id=\"envira-gallery-item-8530\" class=\"envira-gallery-item enviratope-item envira-gallery-item-3 envira-lazy-load\" style=\"padding-left: 3px; padding-bottom: 5px; padding-right: 3px;\"  itemscope itemtype=\"https:\/\/schema.org\/ImageObject\"><div class=\"envira-gallery-item-inner\"><div class=\"envira-gallery-position-overlay  envira-gallery-top-left\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-top-right\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-bottom-left\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-bottom-right\"><\/div><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-c.jpg\" class=\"envira-gallery-8528 envira-gallery-link\" rel=\"enviragallery8528\" title=\"psm5003Verbindingen-c\" data-envira-caption=\"psm5003Verbindingen-c\" data-envira-retina=\"\" data-thumbnail=\"\"  itemprop=\"contentUrl\"><img decoding=\"async\" id=\"envira-gallery-image-8530\" class=\"envira-gallery-image envira-gallery-image-3 envira-normal envira-lazy\" data-envira-index=\"3\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-c-1024x768-640x480.jpg\" data-envira-src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-c-1024x768-640x480.jpg\" data-envira-gallery-id=\"8528\" data-envira-item-id=\"8530\" data-envira-caption=\"psm5003Verbindingen-c\" alt=\"\" title=\"psm5003Verbindingen-c\"  itemprop=\"thumbnailUrl\" data-envira-srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-c-1024x768-640x480.jpg 400w,https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-c-1024x768-640x480.jpg 2x\" data-envira-width=\"300\" data-envira-height=\"225\" srcset=\"data:image\/gif;base64,R0lGODlhAQABAIAAAP\/\/\/\/\/\/\/yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-safe-src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAP\/\/\/\/\/\/\/yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" \/><\/a><\/div><\/div><div id=\"envira-gallery-item-8563\" class=\"envira-gallery-item enviratope-item envira-gallery-item-4 envira-lazy-load\" style=\"padding-left: 3px; padding-bottom: 5px; padding-right: 3px;\"  itemscope itemtype=\"https:\/\/schema.org\/ImageObject\"><div class=\"envira-gallery-item-inner\"><div class=\"envira-gallery-position-overlay  envira-gallery-top-left\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-top-right\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-bottom-left\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-bottom-right\"><\/div><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9013.jpg\" class=\"envira-gallery-8528 envira-gallery-link\" rel=\"enviragallery8528\" title=\"IMG_9013\" data-envira-caption=\"IMG_9013\" data-envira-retina=\"\" data-thumbnail=\"\"  itemprop=\"contentUrl\"><img decoding=\"async\" id=\"envira-gallery-image-8563\" class=\"envira-gallery-image envira-gallery-image-4 envira-normal envira-lazy\" data-envira-index=\"4\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9013-768x1024-640x480.jpg\" data-envira-src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9013-768x1024-640x480.jpg\" data-envira-gallery-id=\"8528\" data-envira-item-id=\"8563\" data-envira-caption=\"IMG_9013\" alt=\"\" title=\"IMG_9013\"  itemprop=\"thumbnailUrl\" data-envira-srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9013-768x1024-640x480.jpg 400w,https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9013-768x1024-640x480.jpg 2x\" data-envira-width=\"225\" data-envira-height=\"300\" srcset=\"data:image\/gif;base64,R0lGODlhAQABAIAAAP\/\/\/\/\/\/\/yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-safe-src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAP\/\/\/\/\/\/\/yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" \/><\/a><\/div><\/div><div id=\"envira-gallery-item-8535\" class=\"envira-gallery-item enviratope-item envira-gallery-item-5 envira-lazy-load\" style=\"padding-left: 3px; padding-bottom: 5px; padding-right: 3px;\"  itemscope itemtype=\"https:\/\/schema.org\/ImageObject\"><div class=\"envira-gallery-item-inner\"><div class=\"envira-gallery-position-overlay  envira-gallery-top-left\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-top-right\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-bottom-left\"><\/div><div class=\"envira-gallery-position-overlay  envira-gallery-bottom-right\"><\/div><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-b2.png\" class=\"envira-gallery-8528 envira-gallery-link\" rel=\"enviragallery8528\" title=\"psm5003Verbindingen-b2\" data-envira-caption=\"psm5003Verbindingen-b2\" data-envira-retina=\"\" data-thumbnail=\"\"  itemprop=\"contentUrl\"><img decoding=\"async\" id=\"envira-gallery-image-8535\" class=\"envira-gallery-image envira-gallery-image-5 envira-normal envira-lazy\" data-envira-index=\"5\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-b2-993x1024-640x480.png\" data-envira-src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-b2-993x1024-640x480.png\" data-envira-gallery-id=\"8528\" data-envira-item-id=\"8535\" data-envira-caption=\"psm5003Verbindingen-b2\" alt=\"\" title=\"psm5003Verbindingen-b2\"  itemprop=\"thumbnailUrl\" data-envira-srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-b2-993x1024-640x480.png 400w,https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-b2-993x1024-640x480.png 2x\" data-envira-width=\"291\" data-envira-height=\"300\" srcset=\"data:image\/gif;base64,R0lGODlhAQABAIAAAP\/\/\/\/\/\/\/yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-safe-src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAP\/\/\/\/\/\/\/yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" \/><\/a><\/div><\/div><\/div><\/div><noscript><img decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/PMS5003-pins.png\" alt=\"\" \/><img decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-a.jpg\" alt=\"\" \/><img decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-c.jpg\" alt=\"\" \/><img decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9013.jpg\" alt=\"\" \/><img decoding=\"async\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/psm5003Verbindingen-b2.png\" alt=\"\" \/><\/noscript><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>But &#8230; \u201cWhy am I not measuring anything?\u201d<\/strong><\/h2>\n\n\n\n<p>Here I ran into something worth mentioning. The PMS5003 <strong>really <em>needs<\/em> 5 volts<\/strong> to start the laser. <\/p>\n\n\n\n<p>No 5 volts = no laser = no measurement values. <\/p>\n\n\n\n<p>I powered the sensor via the <strong>Vin pin<\/strong> of the ESP32 DevKitC, assuming that there would be a nice 5 volts there. But: I got no valid data. After some measuring I found:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The Vin pin is <strong>not directly <\/strong>connected to the 5V of the USB connector<\/li>\n\n\n\n<li>There is a <strong>Zener diode<\/strong> in between<\/li>\n\n\n\n<li>That results in <strong>less than 4 volts<\/strong> on Vin<\/li>\n\n\n\n<li>Consequence: the laser in the PMS5003 does not start<\/li>\n<\/ul>\n\n\n\n<p>The sensor appears to be \u201con\u201d but is not measuring anything because 4 volts is not enough to fire the laser.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The solution (and a bit of fiddling)<\/strong><\/h2>\n\n\n\n<p>The solution is simple, but not immediately elegant: The 5V connection of the PMS5003 must be connected <em>before<\/em> the Zener diode on the ESP32 board. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9013-768x1024.jpg\" alt=\"\" class=\"wp-image-8563\" style=\"width:227px;height:auto\" srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9013-768x1024.jpg 768w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9013-225x300.jpg 225w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/IMG_9013.jpg 900w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n<\/div>\n\n\n<p>This means:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Solder directly to the 5V rail of the USB connector<\/li>\n\n\n\n<li>A little fiddling<\/li>\n\n\n\n<li>But: after that the sensor works correctly immediately<\/li>\n<\/ul>\n\n\n\n<p>This is exactly the kind of detail you only run into when you actually build it.<\/p>\n\n\n\n<div style=\"height:4px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Software overview (general)<\/strong><\/h2>\n\n\n\n<p>The software is deliberately kept overviewable. In broad terms:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>ESP32 reads the PMS5003 frames via UART<\/li>\n\n\n\n<li>Measurement values are parsed<\/li>\n\n\n\n<li>Data is periodically sent via MQTT<\/li>\n<\/ol>\n\n\n\n<p>No complicated filtering or calibration.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"189\" height=\"338\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/mqtt-architecture-lkuctsensor.png\" alt=\"\" class=\"wp-image-8517\" srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/mqtt-architecture-lkuctsensor.png 189w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/mqtt-architecture-lkuctsensor-168x300.png 168w\" sizes=\"auto, (max-width: 189px) 100vw, 189px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><br><strong>MQTT: sharing data with the outside world<\/strong><\/h2>\n\n\n\n<p>In this project I use an MQTT broker to publish the measurement data. That makes it:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lightweight<\/li>\n\n\n\n<li>Reliable<\/li>\n\n\n\n<li>Easy to integrate<\/li>\n<\/ul>\n\n\n\n<p>Home Assistant or Grafana can pick up the values effortlessly, allowing you to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Get graphs<\/li>\n\n\n\n<li>View history<\/li>\n\n\n\n<li>Make automations<\/li>\n<\/ul>\n\n\n\n<p>The code is on <a href=\"https:\/\/github.com\/mrWheel\/mqttAerosolSensor\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a> and is easy to adapt to your own setup.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/GrafanaPresentatie.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/GrafanaPresentatie-1024x640.jpeg\" alt=\"\" class=\"wp-image-8518\" srcset=\"https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/GrafanaPresentatie-1024x640.jpeg 1024w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/GrafanaPresentatie-300x188.jpeg 300w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/GrafanaPresentatie-768x480.jpeg 768w, https:\/\/willem.aandewiel.nl\/wp-content\/uploads\/2026\/01\/GrafanaPresentatie.jpeg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What I noticed during the measurements<\/strong><\/h2>\n\n\n\n<p>A few observations:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cooking without extraction hood gives immediate spikes<\/li>\n\n\n\n<li>Ventilating works faster than expected<\/li>\n\n\n\n<li>Indoor air can sometimes be worse than outdoors<\/li>\n\n\n\n<li>The sensor reacts surprisingly quickly<\/li>\n<\/ul>\n\n\n\n<p>This makes the project not only technically fun but also practically educational.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Follow-up: portable and standalone<\/strong><\/h2>\n\n\n\n<p>This project is deliberately a first step. A <a href=\"https:\/\/willem.aandewiel.nl\/index.php\/2026\/03\/16\/portable-fine-dust-meter-on-batteries\/\" target=\"_blank\" rel=\"noreferrer noopener\">next project<\/a>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>E-paper display<\/li>\n\n\n\n<li>Battery power<\/li>\n\n\n\n<li>Standalone operation<\/li>\n\n\n\n<li>Possibly deep sleep<\/li>\n<\/ul>\n\n\n\n<p>That would make it a portable air quality meter, without dependency on Wi-Fi or Home Assistant.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>In conclusion<\/strong><\/h2>\n\n\n\n<p>This project nicely shows that:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Simple hardware does not equal simple insights<\/li>\n\n\n\n<li>One diode can make the difference between \u201cnot working\u201d and \u201cworking perfectly\u201d<\/li>\n\n\n\n<li>Measuring leads to better understanding<\/li>\n<\/ul>\n\n\n\n<p>And that\u2019s exactly why this is such a fun maker project.<\/p>\n\n\n\n<p>If you have questions or want to leave a reply please add them <a href=\"https:\/\/willem.aandewiel.nl\/index.php\/2026\/01\/28\/fijnstof-meten-voor-makers-esp32-pms5003\/\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A simple project with surprisingly many learning points. 344 keer bekeken \/ views Een Nederlandse vertaling van de post kunt u hier vinden. Fine dust is one of those topics you usually only read about when it comes to \u201caverages\u201d &hellip; <a href=\"https:\/\/willem.aandewiel.nl\/index.php\/2026\/02\/20\/measuring-fine-dust-for-makers-esp32-pms5003\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[153,2,3,157,143,10,20],"tags":[189,188],"class_list":["post-8551","post","type-post","status-publish","format-standard","hentry","category-3d-printing","category-arduino","category-computer","category-esp32","category-firmware","category-hardware","category-wifi","tag-aerosol","tag-luchtsensor"],"views":344,"_links":{"self":[{"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/posts\/8551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/comments?post=8551"}],"version-history":[{"count":11,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/posts\/8551\/revisions"}],"predecessor-version":[{"id":8694,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/posts\/8551\/revisions\/8694"}],"wp:attachment":[{"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/media?parent=8551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/categories?post=8551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/willem.aandewiel.nl\/index.php\/wp-json\/wp\/v2\/tags?post=8551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}