Air Quality Monitor I

The Adafruit Feather M0 has a lot more power than most Arduino boards. This was handy as this project was working with 5 different IO devices: particulate sensor, screen, GPS, SD card reader, USB serial for debugging, and a Lipo battery.

The process I use for building up all complex Physical Computing projects is the same. Divide it into chunks, get each part working separately, then add them to the whole one at a time. Building up the system, debugging, and cleaning as I go.

First, getting the Plantronics Particulate Matter Sensor PMS-7003 to work.

PMS7003 working

Next get the display and SD card working.

Working Display

Now I have the GPS working, I’m listening to satellites in my back garden! It’s picking up 6 different satellites – this suddenly feels like unobtainable high technology… in my hands.

GPS and Screen

I went through multiple iterations of the visual display. It’s a great way to experiment with interaction design, and a bit of Tufte. This version wasn’t final – it has the current particulate levels top left, GPS on the right, and the histogram to display the recent historic levels.
My favourite suggestion was a kind of Tamagotchi that would look sad or shrivel up if exposed to bad air.

Bar Graph

Circuits working and the code is getting close, so time to transfer to a soldered protoboard.


I like to use protoboards and JST-XH 2.54mm sockets for one-off prototypes.

Building Protoboard

This is the worst form factor in the world! My professional work would have made it easy for me to design a 3D printed plastic box, but I like to use play projects to experiment and learn. I had an idea that this might be a big bold wearable like a necklace or an epaulette. It’s clumsy and awkward, and by challenging the conventions I learned a lot about why we make products the way that we do.

The worst Form factor in the world

Here is the air quality sensor working on a laser cutter. The laser cutter is making a plywood dome lampshade.

Particulate sensor in use on the laser cutter

While writing to screen, it also data logs a string with time, date, location and particulate levels to the SD card in a format that neatly imports to spreadsheets for handling graphing. Can you tell when we turned the laser cutter on?

Graphing PMS output

Yes, that is a tribute to Burning Dan’s watermelon welder image.


I tried building up the code with Circuit Python – here is the particulate sensor working. I think Circuit Python has a lot of potential to replace Arduino – it has a lot of advantages and the awesome team at Adafruit are putting a lot of effort into it, so it keeps getting better with every release. I’m not skilled enough with Python yet, and at the moment Arduino has a lot more online resources, so I went back to Arduino. But one day I think I will move to Circuit Python.

Circuit Python

When I get back to this I will rework the form factor, either to be more sensible or more ridiculously improbable.

I’ve put the code up on Github: M0 Air Quality Monitor