Particulate matter measurement with the Raspberry Pi
Charly's Column – Raspberry Pi
Whether you can breathe easily or not depends on what is in the air. Is there too much particulate matter that could be harmful to your health? A particulate matter measurement provides clarity – and the Raspberry Pi can help.
How fresh is the air I breathe? To find out, I put my own particulate matter measuring station into operation. Particulate matter (PM) is a mixture of all kinds of organic and inorganic dusts, bacteria that travel through the air, and many other particles that do not exceed 10 micrometers in size.
The above measurement is why we use the term PM10. For comparison, a hair has a diameter of 50 to 75 micrometers. Today, even smaller particles with a size of only 2.5 micrometers (PM2.5) or smaller are considered separately because they penetrate deep into the airways and reach the alveoli.
There are several sensors on the market that can measure both PM classes. I chose the Nova SDS011 PM Sensor by Chinese manufacturer Nova Fitness Co., Ltd. The sensor draws air into a chamber and shoots a laser at it. It uses the dispersion of the reflected light to determine the particle size and quantity. It delivers the data via a serial interface.
A USB adapter is included with the sensor, making it easy to connect to the Raspberry Pi. After connecting, I can see from the syslog that the /dev/ttyUSB0
interface is now available:
[ 2.611448] usb 1-1.5: ch341-uart converter now attached to ttyUSB0
The manufacturer's data sheet [1] reveals that the interface must be set to 9600bps with 8 data bits, no parity, and one stop bit. The stty
command handles this:
stty -F /dev/ttyUSB0 9600 raw
The data sheet also says that the sensor operator can expect the values in hexadecimal notation in a fixed, recurring order once per second. The output looks like this:
0000000 aac0 8c00 9400 bcf9 d5ab
This means that values are now available: 8c
for the PM2.5 class and 94
for PM10, 140, and 148 decimals.
The data sheet contains the following computation formula: The decimal value of the high byte is multiplied by 256, and the decimal value of the low byte is added to it. The result has to be divided by 10 – this is finally the PM value in micrograms per cubic meter of air. In the example, this would be 14 micrograms/m3 for the PM2.5 class, a low (i.e., good) value. You can then use RRDtool [2] to show your data in graph format (Figure 1).
Infos
- Laser dust sensor control protocol: https://cdn.sparkfun.com/assets/parts/1/2/2/7/5/Laser_Dust_Sensor_Control_Protocol_V1.3.pdf
- RRDtool: https://oss.oetiker.ch/rrdtool/
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
First Release Candidate for Linux Kernel 6.14 Now Available
Linus Torvalds has officially released the first release candidate for kernel 6.14 and it includes over 500,000 lines of modified code, making for a small release.
-
System76 Refreshes Meerkat Mini PC
If you're looking for a small form factor PC powered by Linux, System76 has exactly what you need in the Meerkat mini PC.
-
Gnome 48 Alpha Ready for Testing
The latest Gnome desktop alpha is now available with plenty of new features and improvements.
-
Wine 10 Includes Plenty to Excite Users
With its latest release, Wine has the usual crop of bug fixes and improvements, along with some exciting new features.
-
Linux Kernel 6.13 Offers Improvements for AMD/Apple Users
The latest Linux kernel is now available, and it includes plenty of improvements, especially for those who use AMD or Apple-based systems.
-
Gnome 48 Debuts New Audio Player
To date, the audio player found within the Gnome desktop has been meh at best, but with the upcoming release that all changes.
-
Plasma 6.3 Ready for Public Beta Testing
Plasma 6.3 will ship with KDE Gear 24.12.1 and KDE Frameworks 6.10, along with some new and exciting features.
-
Budgie 10.10 Scheduled for Q1 2025 with a Surprising Desktop Update
If Budgie is your desktop environment of choice, 2025 is going to be a great year for you.
-
Firefox 134 Offers Improvements for Linux Version
Fans of Linux and Firefox rejoice, as there's a new version available that includes some handy updates.
-
Serpent OS Arrives with a New Alpha Release
After months of silence, Ikey Doherty has released a new alpha for his Serpent OS.