- AQI Buddy
- Background
- Pre-requisites
- Materials Needed
- Tools Needed
- Build Guide
- Things I Learned and Improvement Considerations
- References
AQI Buddy is a minimal air quality display using a Wio Terminal and Plantower PMS503. It is designed to be portable so you can measure the air quality anywhere you go. For example, the air quality when cooking, driving on the highway, outdoors, indoors, etc.
Air Quality Index (AQI) meausre PM2.5 to help determine the air quality and impacts to human health. According to World Air Quality Index Project, the US EPA standard for AQI is:
AQI | Air Pollution Level | PM 2.5 |
---|---|---|
0 - 50 | Good | 0 - 12 |
51 - 100 | Moderate | 13 - 35 |
101 - 150 | Unhealthy for Sensitive Groups | 36 - 56 |
151 - 200 | Unhealthy | 57 - 150 |
201 - 300 | Very Unhealthy | 151 - 199 |
300+ | Hazordous | 200 + |
- Soldering Skills
- Git
- PlatformIO
- Visual Studio Code
- Wio Terminal
- PLA Filament for 3D Printer
- M3 8MM Hex Screws
- M3x4x5mm Threaded Inserts
- M3 Nut
- Solder
- Male Header Pins
- Solid Electrical Wire
- USB-C Cable
- (Optional for Mobility) USB Power Bank
- 3D Printer
- Hex Key
- Soldering Iron
Follow all these steps below to setup your on AQI Buddy 😁.
- Print the following components
- aqi_buddy_body.stl - this takes the longest
- aqi_buddy_lid.stl
- aqi_buddy_wio.stl
- Add the 4 threaded inserts to the holes in aqi_buddy_body.stl with a soldering iron
I'm personally not great at CAD, so I am sharing this Onshape link if you want to improve the design yourself 😅: okyang_aqi_buddy
Solder the male header pins to the aqi sensor breakout board using the circuit diagram below:
- Plug in the male headers to the left side of wio terminal socket
- Solder your wires to the AQI sensor breakout board
- Clone this repo
git clone [email protected]:okyang/aqi_buddy.git
- Pull necessary submodules
git submodule update --init --recursive
- Plug in your wio terminal
- Upload the code
- Place Wio Terminal in the Top side of the aqi_buddy_wio and feed the connection to the AQI sensor breakout board through the rectangular opening
- Add in the aqi_buddy_body and align with the rectangular tab on the aqi_buddy_wio
- Secure the aqi_buddy_wio by threading through a M3 screw to the closer hole and secure with a M3 nut
- Slide in the AQI sensor to the aqi_buddy_body with the fan facing towards the opening (very important!)
- Connect the cable from the AQI sensor breakout board to the AQI sensor
- Finally, add the aqi_sensor_lid and screw in the four M3 screws
I am still a novice at CAD design, but I feel like there was so many little things I learned like how to use variables for my sketches, getting more familiar with the various tools in Onshape, and learning how to assemble parts together. This is probably very trivial to others, but not for me 😅.
I already knew some of this before, but setting up a Github Actions Workflow was very cool to see. I added a basic check that basically just compiles to code after each commit. This is definitely a very handy feature and very simple check make sure I didn't break the code for others.
Also, using git submodules was not a new concept to me, but definitely not something I used often. I used it in this project because of the dependencies on Adafruit_BusIO
and Adafruit_PM25AQI
. I just thought this was a handy feature of git that other novice developers should know about as well.
The basic scope of the project seemed very simple, but I still feel like there is a lot of cool features that can be added. So for now to avoid scope creep, I will just write them down:
- Upload AQI Data to Influx Data or some IoT Dashboard
- Add a GPS, to collect location data (for a more mobile aqi sensor)
- Solar Powered + Weatherproof to mount the sensor outdoors
- Improve UI with LVGL
- Add an emotional character for each AQI level
- Wio Terminal Getting Started - documentation for the Seeed studio wio terminal
- Adafruit PM2.5 Sensor Quality Overview
- Adafruit PM25AQI Library
- PLANTOWER Datasheet
- Onshape CAD Design - CAD design for if you want to make any modifications to the case design