Introduction: A Simple Air Quality Monitor

About: I’m a lifelong maker. I became involved with the maker movement because of my children. I was looking for a way to supplement what they were doing in school with some hands-on activity.

We have done RGB LED panel projects over the years to show specific information, such as the time, local weather, school arrival and dismissal, schedules for inbound and outbound trains, and train delays. Information from Octaprint displays the status of jobs running on various 3-D printers in the workroom to other locations in the house. Some panels display only a single piece of information, while others display information in a ten to fifteen-second "display slice" on a rotating basis. The information modules are developed on a standalone basis before being integrated into the rotation on one of the multi-information displays. This instructable describes the creation of a module.

After reading articles about the potential health impacts of microplastics in 3D printing, fine particles from woodworking, and other sources of indoor air pollution, We decided to create an indoor air Quality module to add to the workroom, kitchen, and garage display boards.

The difference for this module is that the conditions in each location are monitored locally. Reporting the local conditions back to a central repository is not required.

The information of primary interest was airborne particles and CO2 ( Gas heaters in the garage during the winter.)

Supplies

Step 1: The Requirments.

Unlike a project that started from scratch, this project used existing infrastructure which will constrain the operational environment. Which is consultant speak for "We have to use the stuff already in place." Unfortunately, in this particular case, the development has already split.

The original project used the Raspberry Pi to drive an RGB LED matrix panel. Later project versions used an Adafruit Matrix Portal board to drive the RGB LED matrix. The original software development environment was C. The Adafruit boards use Circuit Python. A further minor complication is that there are two versions of the Matrix Portal board, the S3 and M4. So, for simplicity's sake, we will only be using the Adafruit Matrix Porthole boards and the Circuitpython environment from now on.

So the requirements:

  1. Use the Adafriut Circuit Python environment on a Matrix portal board to display information on a minimum 64 x 32 LED panel.
  2. Display information about Particulate matter per 0.1L air at the 0.3um size
  3. Display information about Particulate matter per 0.1L air at the 0.5um size
  4. Display information about Particulate matter per 0.1L air at the 1.0um size
  5. Display C02 in PPM
  6. Display temperature
  7. Display relative humidity
  8. Display other information as display space available
  9. Display information about Particulate matter per 0.1L air at the 2.5um size
  10. Display information about Particulate matter per 0.1L air at the 5.0um size
  11. Display information about Particulate matter per 0.1L air at the 10um size
  12. Display PM 1.0 in Standard units
  13. Display PM 2.5 in Standard units
  14. Display PM 10 in Standard units
  15. Display PM 1.0 in Environmental units
  16. Display PM 2.5 in Environmental units
  17. Display PM 10 in Environmental units
  18. Display a visual indication of environmental conditions that are of concern.


So why these requirements? At this time, I am most concerned about the smallest particles. We have active dust collection for woodworking tools and room dust collectors near the 3D printers. I always wear a mask or respirator when cutting, sanding, or finishing work. It is nice to know how efficiently or inefficient the collectors are running.

Step 2: Assemble the Frame



Instructions for some of the frames we used are found here or here. :

While we still recommend using a 15mm din rail for projects, a 7.5mm din rail can be used for short distances. A link to an 8020 series ten bracket for a short span of 7.5 mm din rail can be found here.

An interesting point to note is that while we used din rail in horizontal and vertical configurations, the PMSA003I in the horizontal configuration was slower to react. It took several minutes for the sensors to come close to the same value. The CO2 sensors (SCD-30) always stayed within a couple of percentage points of each other.

A diffuser may be added over the LED Matirx to improve visibility.

Step 3: Add the Controler and Sensors

Each sensor was mounted to a DIN rail connection plate, which was attached to a DIN rail on the back of the LED panel mounting frame.

The mounting plates for the sensors we used can be found here.

Adafruit SCD-30: Printabels or Thingiverse

Adafruit PMSA003I Air Quality Breakout: Printabels or Thingiverse

The sensor modules are all connected with Sparkfun Qwiic cables.

Step 4: Load the Code

The Code attached to this instructable is an example that will demonstrate what can be accomplished. It is not polished and does not demonstrate the integration into our household display system. It mostly cobbles together with the example code that Adafruti provides.

You will need some familiarity with the Circuit Python environment to run it. It also requires a working secrets.py file and a working internet connection. Not all of the fonts referenced are used for this example.

This link will get you started.

Depending on the RGB LED panel(s) used, you may need to adjust the display configuration. This link will help.

The demonstration code is attached below.

Attachments

Step 5: Future Enhancements

Integrate the module into the Home Assistant.

Download local Air quality information for display and comparison.