Get Started Building a PM Monitoring Station




Introduction: Get Started Building a PM Monitoring Station

We're a group of fun-loving, electronic DIY'ers with We hope to share usef...

I’m especially interested in air pollution levels, because I live in China and while my city, Shenzhen, is probably one of the cleanest cities in China, it still has its bad days.

So, I wanted to build my own to compare to the half-a-dozen air quality monitor apps I have on my phone. Why do I have so many? Because the reported levels are sometimes incredibly different and unreliable (maybe due to their different monitoring locations)--the two screenshots above were taken at the same time. Additionally, I wanted to be able to measure PM 1.0 in my indoor environment.

Particulate Matter (PM) are microscopic liquid or solid matter floating around in the air. Besides being able to impact the environment, they also adversely affect our health!

PM 2.5 and PM 10 are generally the concentration sizes that are measured by agencies and governments around the globe, so many people overlook PM 1.0. But it’s also important to measure this particulate matter size, because it’s more dangerous. The smaller the PM, the greater the chance it can sneak into the lungs and bloodstreams.

If you're interested in monitoring the PM levels around you, build an air quality monitoring station. There are plenty of other applications for a PM sensor including creating a smart air filter, integrating one into your weather station, create a warning system if you’ve forgotten to change your air filter in the A/C unit and save some energy costs…

This short little how-to will set you up with example code that will let you monitor PM 1.0 levels in addition to PM 2.5 and PM 10.0. I use an OLED display to show the sensor’s data. Coincidentally, I organized this project when the pollution was at an alarming level for Shenzhen--not uncommon during the winter--but usually, it's much, much better than this.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Collect Your Materials

Here's what you'll need:



  • Arduino IDE
  • Adafruit SSD1351 Library (for the OLED display)
  • Adafruit GFX Library (for the OLED display)
  • Example Code

Step 2: Hook Up the Components

First, let's hook up the display to the Arduino Uno. Here are the connections:

OLED > Arduino Uno


VCC > 3.3V

SCL > D2

SDA > D3

RES > D6

DC > D4

CS > D5

Now the PM sensor. Refer to the pinout picture above for the sensor's pins.

PM Sensor > Arduino Uno

GND (pin 2) > GND

VCC (pin 1) > VCC (5V)

TX (pin 5) > RX (disconnect until the code has been uploaded)

Step 3: Run the Code

Run the example code provided above. Don't forget to keep the RX pin disconnected from the Arduino until it's been uploaded.

Wait a few seconds for the sensor to stabilize and wallah! You can now see in real-time your air quality in relation to dust concentrations.

You can see our results which I matched to a couple of the pollution apps. These monitoring stations are the closest to my position, but not as close as I'd like. I live in a little bit more denser area, so it stands to reason my little PM sensor would be reading higher numbers.

All the pictures above were taken within 5 minutes of each other for reference. The picture of the city was taken through glass, indoors.

You can expand on this further by adding a VOC chemical sensor to create a more comprehensive air monitoring station, incorporate the sensor into a weather station, or use it to make an air filter smart. These are just a few ideas of what you could do with a PM sensor.

Now, excuse me while I go buy a mask. Thanks for reading!

Be the First to Share


    • Magnets Challenge

      Magnets Challenge
    • Raspberry Pi Contest 2020

      Raspberry Pi Contest 2020
    • Wearables Contest

      Wearables Contest

    3 Discussions


    Question 8 months ago

    Hello! your project seems interesting but i cannot download your code , (i can see it but it seems to miss some important part and the program looks really strange ) can you send your Arduino code again please ?

    Answer 8 months ago

    oh i just found how to download it correctly, sorry