AQI Buddy - Portable Air Quality Monitor

by OwenY1 in Circuits > Sensors

435 Views, 7 Favorites, 0 Comments

AQI Buddy - Portable Air Quality Monitor

good_thumbnail.jpg

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. The source for all these instructions comes from my github repo: https://github.com/okyang/aqi_buddy


Background

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 +     |

Supplies

materials.png

Pre-requisites

  1. Soldering Skills
  2. Git
  3. PlatformIO
  4. Visual Studio Code

Materials Needed

  1. Wio Terminal
  2. PLA Filament for 3D Printer
  3. M3 8MM Hex Screws
  4. M3x4x5mm Threaded Inserts
  5. M3 Nut
  6. Solder
  7. Male Header Pins
  8. Solid Electrical Wire
  9. USB-C Cable
  10. (Optional for Mobility) USB Power Bank

Tools Needed

  1. 3D Printer
  2. Hex Key
  3. Soldering Iron

3D Print the Case

case_assembly_1.png
  1. Print the following components
  2. aqi_buddy_body.stl - this takes the longest
  3. aqi_buddy_lid.stl
  4. aqi_buddy_wio.stl
  5. 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

Building the Circuit!

circuit_diagram.png
circuit_assembly_1.png
circuit_assembly_2.png
  1. Plug in the male headers to the left side of wio terminal socket
  2. Solder your wires to the AQI sensor breakout board

Upload Code to Wio Terminal

1. Clone this repo

git clone git@github.com:okyang/aqi_buddy.git

2. Pull necessary submodules

git submodule update --init --recursive

3. Plug in your wio terminal

4. Upload the code

Final Assembly Steps

final_assembly_3.png
final_assembly_4.png
final_assembly_5.png
final_assembly_1.png
final_assembly_2.png
  1. 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
  2. Add in the aqi_buddy_body and align with the rectangular tab on the aqi_buddy_wio
  3. Secure the aqi_buddy_wio by threading through a M3 screw to the closer hole and secure with a M3 nut
  4. Slide in the AQI sensor to the aqi_buddy_body with the fan facing towards the opening (very important!)
  5. Connect the cable from the AQI sensor breakout board to the AQI sensor
  6. Finally, add the aqi_sensor_lid and screw in the four M3 screws


Reflections

Things I Learned and Improvement Considerations

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

References