Introduction: Simple Air Pollution Monitor Using an Arduino Uno and SDS011

This instructables page will show you how to make a simple air pollution monitor using an Arduino Uno and the SDS011 sensor made by NovaFitness. This sensor is widely available to purchase (eg Amazon, ebay) and is known to produce accurate results for PM2.5, PM10 – see the following links:

My goal is to show the project in several stages so that you can easily decide how many features you want the pollution monitor to have. These stages are the following:

Connect the SDS011 and read values through an Arduino Uno onto a laptop

Add an LCD display, real-time clock, battery and SD card for saving values


Step 1:
Arduino Uno

USB cable A to B


Jumper wires

Step 2:

16x2 LCD display

Micro SD card (only needs to be small eg 256MB)

Micro SD card module

DS3231 real-time clock module (with Cr2032 battery)

Battery eg 5V power pack

Step 1: Read PM Values From SDS011 Sensor

First of all, we need to add libraries into the Arduino software which will allow us to communicate with the SDS011 sensor. Go to Sketch – Include library – Manage libraries. In the search bar enter “SDS011” and then add the library SDS011 (vers 0.0.5) by R. Zschiegner.

Wire up the sensor according to the diagram shown, download the arduino sketch and send it to the arduino.

Once the code is uploaded onto the Arduino, the sensor values can be displayed on the serial monitor.

Step 2: Add an LCD Display, Real-time Clock, Battery and SD Card for Saving Values

In step 2, we will add an SD card for saving the values of the sensor
readings together with an LCD display and a RTC (real-time clock). The RTC is a small module with a battery which keeps time when the arduino is turned off.

Firstly we need to add the library “RTClib” by Adafruit.

Then wire the arduino with the LCD, RTC module and SD card module as shown.

Download the arduino ino file below and compile and run it on the arduino. The first time it runs it will update the RTC module with the current date and time.

The time, temperature (DS3231 also has a temp sensor) and PM values will display on the LCD. The data values save to a file called Pmlog.txt with comma separated values which can easily be read into a spreadsheet eg excel.

In the photo, I use a 5V battery power pack to power the arduino instead of using a laptop connection.