After last years terrible fire season I got interested in particulate matter air pollution from smoke and other sources and It’s effect on health. Inspired by this post I ended up buying some parts so that I could put together my own PM2.5 and PM10 detector. There are plenty of ready made detectors you can buy but I figured if I made my own I’d be able to customise it and add functionality that you’d normally have to pay a premium for. It’s also a lot of fun to build these projects and learn along the way!
Last Friday there was a planned hazard reduction burn in our area carried out by NSW RFS, Fire and Rescue NSW and the NSW National Parks and Wildlife Service. We got some advance warning from a friend in the RFS so were expecting it. This would be the first proper test of my PM detector!
The core of the detector is an old Raspberry Pi2. For the actual pollution measurement I used a SDS011 particulate matter detector. I also had a tiny little OLED display left over from another project that was used for a simple screen. I wrote some Python code to read the pollution values from the detector, display them on the screen and also post them to an online data recording platform. Initially I used code from the the raspberrypi.org post to read values from the detector. It worked but it was simplistic. It had the detector and the fan running around the clock even though I was only taking a reading every 5 minutes. After learning that the SDS011 has a limited operational life of 8000 hours I decided to take a different approach. By issuing commands to the detector it’s possible to only switch it on when making a reading and then switch it off again. The SDS011 is a popular part and there were already several Python libraries out there that handled the low level details, perfect! I went with Ivan Kalchev’s py-sds011 Running the detector, screen and Python code required some setup and configuration of the Raspberry Pi, I automated this using Ansible so the details would be saved and could then quickly be rerun again as needed. Here’s what I did
OK, back to the fire. The burn was over a 33ha area of nearby bushland with the closest point only 2 streets away. As it started on the Friday morning huge plumes of smoke appeared, for most of the day air quality at our house actually was fine. All the smoke went straight up into the sky. At around 5pm that changed.
I had the detector running inside the house with all windows closed. PM2.5 levels quickly rose to about 300, the smell was awful and it became very hazy, ash was dropping from the sky. It was still like this when I went to bed.
At 4am Saturday morning I was woken with a sore throat and a heavy feeling in my chest, I got up and the whole house was full of smoke, the indoor PM2.5 reading was almost 1000 at that point! I got up put on a mask and went for a walk around the streets and through to bush to take some photos. The air must have cooled overnight and brought the smoke down with it. It was pretty interesting that it was not evenly distributed, some streets were thick with it others relatively clear.
The smoke started to clear at around 8am, levels dropped rapidly over the next hour then by 10am it was on the way to normal.
As bad as it was it was over reasonably quickly and it was important to get the burn done to reduce the chances of an out of control fire. The PM numbers were sobering though, even short term exposure to elevated PM2.5 results in increased mortality from cardiac arrest, especially for people over 65 and other vulnerable members of the community. Smoke from the 2019/2020 summer fires killed almost 450 people, more than 10x the fires themselves.
The NSW government provides hourly, daily and monthly pollution data. The nearest monitoring station is at Macquarie Park is 6.5km away, on the day of the smoke it measured virtually no elevation above normal background levels for PM2.5 or PM10.
I’m going to try to keep my detector running full time and make the readings public, here are the live daily and weekly stats.
Links and further info
- NSW Govt info on particulate matter (PM)
- Effects of short term exposure to PM2.5
- “No safe level” of PM2.5 pollution
- Smoke from Black summer fires kills almost 450 people
- List of most polluted cities by particulate matter concentration
- National Environment Protection Measure maximum allowable PM levels
- Air pollution may be damaging every organ in the body
- Impact of air pollution on health may be far worse than though, study suggests
- Monitor air quality with a Raspberry PI
- The SDS011 PM sensor
- Python SDS011 library
- SDS011 control protocol
- Code used in my sensor
- 24hr live data from my PM sensor
- 7 day live data from my PM sensor