Measuring air quality at any particular location isn’t too complicated. Just a sensor or two and a small microcontroller is generally all that’s needed. Predicting the upcoming air quality is a little more complicated, though, since so many factors determine how safe it will be to breathe the air outside. Luckily, though, we don’t need to know all of these factors and their complex interactions in order to predict air quality. We can train a computer to do that for us as [kutluhan_aktar] demonstrates with a machine learning-capable air quality meter.
The build is based around an Arduino Nano 33 BLE which is connected to a small weather station outside. It specifically monitors ozone concentration as a benchmark for overall air quality but also uses an anemometer and a BMP180 precision pressure and temperature sensor to assist in training the algorithm. The weather data is sent over Bluetooth to a Raspberry Pi which is running TensorFlow. Once the neural network was trained, the model was sent back to the Arduino which is now capable of using it to make much more accurate predictions of future air quality.
The build goes into quite a bit of detail on setting up the models, training them, and then using them on the Arduino. It’s an impressive build capped off with a fun 3D-printed case that resembles an old windmill. Using machine learning to help predict the weather is starting to become more commonplace as well, as we have seen before with this weather station that can predict rainfall intensity.
Very cool though I would be far more impressed if it did all the computing using a lower power MCU powered with solar power. Yes, it would be slow and require additional memory but a weather station is outside in the sun and has a LOT of free time to crunch numbers to improve it’s own predictions.
Wouldn’t have to be slow – using something like a Google Coral, designed for doing this in edge devices and is surprising energy efficient. Can get it as a USB stick that’s USB powered, yet will run it faster than a high end desktop GPU.
https://coral.ai/
Yeah, here’s the thing: cloud services are completely unreliable. Sure, it may work for a couple years but then they will take it down or change it.
Honestly, I’m insulted by the mere suggestion of relying on the cloud.
This project has a lot of different technologies and techniques going on, which is good for educational purposes, but the actual project seems very questionable.
First impressions on the hardware – um…I was going to mention something about waterproofing but since you can see right through the box and in fact is completely open on the end, I think that’s clearly not present here. Combined with the fact that this is built up on a breadboard, I can’t imagine this would have any serious lifetime outdoors. Maybe the balcony provides some shelter against direct rain (despite his statement that it needs to be “sturdy and robust as possible while enduring harsh weather conditions”) but that would also impact the accuracy of the anemometer. He obviously put a lot of work into this project overall but almost zero work into making it survivable or even tidy.
On the software side – the training model is using PM2.5 data while his equipment is collecting ozone, temperature, wind speed, and pressure levels. His *sponsor* also sells PM2.5 sensors which you’d expect you would not only want to include in the model, but also for real time monitoring. Some quick googling returns papers that demonstrate a correlation between O3 and PM2.5 levels, but it appears to change from positive to negative correlation depending on the time of year. Unless the model has a full year’s worth of data I think this could introduce a huge uncertainty in the quality of the predication.
Which leads us to – the results. There are none other than the statement “the weather station operates impeccably while forecasting air quality levels :)”. I would expect to see some comparison between the predicted vs. observed air quality results. All of the TensorFlow processing in the world isn’t going to be able to make useful predictions if you have bad inputs and assumptions, such as the lack of wind direction measurement. The air quality is going to be completely different if a strong wind is blowing in from a large city or a forest.
Excellent critique!
Was extremely impressed until I realised an “arduino nano 33 BLE” is not anything like an arduino nano, and is not an ATMEGA. Stupid naming decisions.
Still, good project.
The nano 33 ble is a pretty sweet board though. Nrf52840 (m4 with native USB), plus an IMU.