This DIY air quality monitor will measure:
- temperature
- humidity
- pressure
- gas
- CO2
- number of particles
- ozone (expansion)
- earthquakes through an IMU (expansion)
- radioactivity (expansion)
There's an optional case and screen for both. The code is set up to allow you to only use a subset of sensors.
By default, results are uploaded periodically to Freedom Robotics for easy inspection and alerting.
If you want to encase the electronics, an STL file for 3D printing a case is in the design folder. Make sure you get the right case for either base or base+expansion set.
| item | function | ~price | no 71FB tes | | Adafruit FeatherS2 - ESP32-S2 | microcontroller | $22 | adafruit boards are often available on digikey and amazon if adafruit is sold out | | Adafruit BME680 |Temp/Humidity/Pressure/Gas| $19|incredibly sensitive pressure sensor, can possibly detect which floor of a building robot is on| | Adafruit PMSA003I | PM1, PM2.5, PM10 particle sensor | $45 | this messes up the I2C bus it is placed on, thankfully ESP32-S2 has 2 I2C buses so this can have its own bus | | SeeedStudio SCD30 | CO2/temp/humidity sensor | $60 | NDIR CO2 sensor (much better than chemical); buy from Mouser for faster shipping to US destinations | For a total of ~$146 excluding screen and case.
The STL files for 3D printing the base case can be found in the
These are extra sensors you can purchase in addition to the base set. | item | function | ~price | notes | | Adafruit BNO085 | IMU (Earthquake detection) | $20 | this is a really good IMU | | SeeedStudio Multichannel Gas Sensor v2 | CO, VOC, alcohol, NO2 | $35 | buy from Mouser for faster shipping to US destinations | | DFRobot I2C Ozone Sensor | ozone | $49 | buy from Mouser for faster shipping to US destinations | | Geiger Counter | Radioactivity | $45 | ships from Russia; not yet tested; couldn't find a US-stocked I2C Geiger counter |
| item | function | ~price | notes | | Monochrome 0.91" 128x32 I2C OLED Display | screen | $12.5 | optional |
See pictures
- Download the code and open
wifi.json
. Enter your Wifi name (SSID) and password. The microcontroller needs WiFi access to be able to upload the sensor data. - Create a new device on your FreedomRobotics account. When you get to the installation page, from the link that is shown, copy the
account
,device
,token
, andsecret
embedded in it into thecredentials.json
file. This lets the microcontroller send the sensor data to the Freedom API. - Open code.py and modify any of the parameters (
LOAD_XXX
) at the top to match your configuration.
Plug the microcontroller into your computer using a USB-C cable. It should appear in your file explorer. Copy and replace the files from the code
folder including the files you modified into the CIRCUITPY
folder.
Press reset. You should see data coming through in the Stream tab of FreedomRobotics.
From a terminal window, you can log into the Feather S2 microcontroller to read the logs using
sudo screen /dev/ttyACM0 115200
The actual device name might be different. This opens up a python terminal. You can re-run the code by typing import code
.