Particles, specifically particulate matter, are a public discussion about our environment.Its caused by human activities, as well its a natural source. For the Netherlands, where we live with 18 million in a 'post-stamp' country, its relevant, and details can be found here (dutch):
Fijnstof (PM10) in lucht, 1992-2023 | Compendium voor de LeefomgevingClaims of health-threaths are going quite often beyond common sense, so what is better than measuring your own particles, understand the principles and your environment... and be part of a Public Measurement network :)
If you like to understand the particulate matter around you, you can peek to the public network, ie the Sensor.Comunity : Map Sensor.Community
The first sensor I came across is the Nova SDS011, used in many self-build sensors and tested alot in Europe and other regions. You can find interesting background at these websites:
Build your own particulate matter sensor.SDS011 on YouTube.Air Quality Analyzer using Arduino and Nova PM Sensor SDS011 to Measure PM2.5 and PM10
Sensor comes with a uart-2-usb interface, mostly used by PC or Raspi type of applications, but we will use it direct connected on an MCU-board, so we build a stan-alone Sensor
The SDS011 comes with one big disadvantage: its very inaccurate when humidity is higher than 60-70%. Even at lower humidity levels, there is a still an inaccuracy that needs to be compensated. First we require a Humidity (I choose the Sensirion STH44), second we need to calculate the compensation. Here it gets tricky, as its not just the Humidity that is causing the problem: The sensor works on the laser scattering measurement principle, and small particles behave differently when humidity goes up, but other environmental conditions like wind?, buildings?, temperature? have an effect it seems, read :
Microsoft Word - HumCorr010521.docxLuftfeuchte Korrektur · opendata-stuttgart/meta Wiki
So correlation tests done on different locations have show different compensation curves, so we what to choose? As i'm living in the Netherlands, our institutes RIVM / KNMI have done some tests as well, and came with this equation:
gRIVM = δ* (1-h)^-β
Now the δ and β factor differs by location/region. Tests done in Amsterdam, Amersfoort and Venlo, with a DTH22 Humidity sensor have a variation (btw: our SHT44 is more accurate). My strategy is to choose a average between Venlo and Amersfoort, meaning δ = 3.56 and β= 0.415 (PM2.5 curve, for the PM10 curve there is only one reference I use. ) Then start measuring and compare the trend lines with an existing Particle sensor in my area :
The PM10_ILM (or PM25_ILM) is the reference sensor, it posts hourly average data. My sensor posts 5 minutes actual data, therefor my sensor shows more peaks and picks up temporary local particles increases like smoke from wood-stoves.Reference Sensor is on the Dutch RIVM network, ID ILM_I18 : api-samenmeten.rivm.nl/v1.0/Things(4960)
The PM10 curve shows the same trend, the PM25 curve shows a deviation when humidity gets lower it seems. It looks I need to adapt the PM2.5 (For the β/δ tables Check the xls-sheet attached to this project)
As mentioned, we use the Sensirion STH44 for the Humidity sensing.Its a I2C based sensor with a better accuracy than the mostly use SDH22.Check my GitHub for the code : SHT4x Interfacing for MCU
Setup with Nano33 IoTFor the MCU I choose the Arduino Nano33 IOT. It can easily interface the UART - SDS011 and the I2C STH44. The MCU measures the Environment conditions (30 seconds airflow measurement), and posts this to a local MQTT server. From there this data is visible for my Home Assistant app, and data is posted to the Sensor Community Network. This is the setup :
The MCU also runs a local HTTP-server, and can be monitored from a browser (inside my network):
This network started in Germany, but is covering almost all Europe at the moment. (rest of the world is picking up?) It serves not only particle sensors, but any type that measures our environment.
Github base : Open Data Stuttgart
Online Landing page: Build your DIY sensor and become part of the worldwide citizen science, open data, civic tech network. Supported by a lot of contributors 💕
Sensor Registration : https://devices.sensor.community/
Crucial is to understand the API interfacing, and this unofficial page is the best I found to setup you API forwarding : Swagger UI
The sensor is now registered under #91477, and can be found on the map:
- Optimize compensation curves
- Build SEN55 sensor project
Comments
Please log in or sign up to comment.