Public Lab Research note

Air Sensor Project

by johnb1003 | October 24, 2018 19:26 24 Oct 19:26 | #17388 | #17388

Disclaimer: This project is still a work in progress! I adopted the project from a group of undergrad students that previously attended UMass Amherst and have since graduated. The function of this particular air sensor is to take measurements of air temperature, humidity, and dust particulate (in parts-per million). Here is a link for the sensor I was handed last year:

Originally, the sensor would take these measurements and write the data to a SD card. What I am attempting to add to this project is to give it the ability to transmit real time data to a website, as well as visualizing the data through plotting it on a graph. To do this, I am reassembling the sensor using an ESP8266 wifi shield instead of the Arduino Pro Micro so that it can connect to wifi. In addition, I have set up a account which receives the data transmitted from the sensor and plots it automatically.


After trying (unsuccessfully) for several weeks to get the plans above to work, I am heading in a new direction. The plan now is to use the ESP8266 wifi shield in addition to the Arduino Pro Micro, rather than _in place of _it. I found that the ESP8266 was giving unreliable results when trying to collect readings from the 2 different sensors by itself, and it would even completely crash at times. Now I am attempting to have the Pro Micro take the readings from the sensors and send the data to the ESP8266 which will then send the data to ThingSpeak. The means of communication between the two micro controllers will be the TX and RX pins. One thing to keep in mind and account for is that the ESP8266 is a 3.3V board while the Pro Micro is a 5V board. Thus, we must level shift the signals from the TX pins to the appropriate voltage for the RX pins on the receiving end. Below is the circuit I have come up with which I believe achieves these goals:

**Note: I do not have another Arduino Pro Micro yet, so I am temporarily using an Arduino Uno in its place.image description

I apologize if the schematic is a bit clunky, this is my first time using Fritzing!

I am currently working on the code to run on this circuit. I am getting consistent readings from the 2 sensors but the communication between the Arduino and ESP is still in the works. The (incomplete) code I have right now can be located here.


Ooh, i love the very succinct bill of materials with links and prices! Great documentation! Did you write that documentation? Copying it in here for ease of reading:

Bill of Materials

Item Cost (USD) Source
Shinyei PPD42NJ Dust Sensor $10 Aliexpress or Ebay
DHT22 Temperature Humidity Sensor $3 Aliexpress
Arduino Pro Micro, ATMega32U4-5V 16Mhz $4 Ebay
Mini Datalogger with microSD card reader and RTC $4 Ebay
MicroSD Card $5 Ebay
Datalogger/Screw Terminal Adapter $6
Plastic Chassis, 3D printed $6
USB Charger $6 Digikey or Sparkfun
#4-40 3/8" Self-Tapping Screws $1 Link
USB Battery $30 Ebay
Total $75
Total w/o battery or USB charger $39

Note: The Shinyei PPD42 is sensitive to small fluctuations in voltage. Because the quality of USB chargers vary widely it is recommended to use a USB battery or charger from a major manufacturer. See here for more information on USB charger quality.

Is this a question? Click here to post it to the Questions page.

Reply to this comment...

This looks great—also looks like others have faced similar issue with 8266 and Shinyei sensor just through googling. Here’s one example (although sensor is one letter off from yours)

Reply to this comment...

@warren I actually did not create that list / documentation. However, once I get a functioning air sensor I do planning on creating similar documentation on this Public Lab platform with the updated materials list! Also, I will definitely look into the quality of the usb charger I am currently using and test if that is causing any problems. Thanks!!

Reply to this comment...

Login to comment.