PurpleAir air quality monitors send data about particles in the air to the web via WiFi. One version of the PurpleAir monitor saves the data to a microSD card. The number of particles in five size classes is reported in addition to three EPA PM standards (PM 10, PM 2.5, and PM 1.0). The devices cost $180 to $260. PurpleAir is not open source, but they provide a lot of information about the hardware. The $259 PA-II-SD seems to include the following components:
- Plantower PMS5003 air particle sensor
- BME280 temperature, humidity, and pressure sensor
- ESP8266 microcontroller
- microSD card module and card
- Real-time clock
The PA-II and PA-II-SD monitors have "dual laser counters." I don't know what this means. Do they have two Plantower PMS5003 sensors? The ESP8266 is an Arduino-like microcontroller with integrated WiFi. All PurpleAir monitors use this microcontroller.
Figure 1. A Plantower PMS7003 particle sensor. This is a newer model than the PMS5003 and is half the size. It seems to operate the same as the PMS5003 and uses the same connections and code. A tiny fan circulates air through the sensor.
I bought the five components above on eBay for $32.00. As a test, I built a prototype monitor with a Nano Data Logger instead of the ESP8266. This poor man's version does not have WiFi capability but instead saves the data to microSD card like the PA-II-SD.
Figure 2. A Nano Data Logger with PMS7003 sensor and BME280 sensor. Data from both sensors are saved to the microSD card every minute. The Nano logging shield includes a microSD card slot and real-time clock. Especially for outdoor monitoring, it is handy to have temperature and humidity data when interpreting the particle results.
The Nano Data Logger version of the particle monitor can be assembled without soldering. The Arduino Nano snaps into the logging shield which includes an SD card slot and real-time clock. The Nano is a 5 volt Arduino and the Plantower sensor requires 5 volts. The BME280 sensor requires 3 volts. The Nano has one 5v pin, one 3v pin, and two ground pins so seven DuPont wires can be slid on to make all the needed connections.
Figure 3. The PMS7003 particle sensor (blue, top) and a CCS-811 gas sensor (left, purple) installed in the case. The gas sensor and the BME280 are both I2C sensors and connect the same way (SDA to A4, SCL to A5, and the CCS-811 needs one additional wire).
Making connections to the PMS7003 sensor is a little confusing. It has a 10-pin connector which does not fit anything I have around the house. Mine came with a handy connector and cable with Molex 053261-0871 terminations. I didn't have anything to plug that connector into, but that is not required. The connector that plugs into the sensor also has regular 0.1 inch pins for the four important connections. In fact, only three of these are required to use the sensor (power, ground, TX). Adafruit has good instructions for making the connections.
I built three data loggers with PMS7003 sensors. Two also had CCS-811 gas sensors which report an estimate of volatile organic compounds (VOCs). These seemed more interesting than the BME280 temperature-humidity-pressure sensors in the PurpleAir monitors. The third monitor I built had an LCD which displayed PM 2.5 in real time (which helps explain all the ashes thrown into the woodstove fan below).
Figure 8. The three monitors with PMS7003 sensors were on my mantle for several days. The woodstove directly below was burning 24/7 for those days. Each monitor has an LED which blinks each time data is saved to the microSD card. That makes it possible to plan the timing of removing the SD card or powering down the logger so you don't do those things while data is being written to the card. I think that might corrupt the card and your data.
The first test of the monitors was to operate three of them together to see if they sensed the same thing. The monitors were directly above my woodstove so I assumed I would record a pulse of particles and gas everytime I opened the stove door to add wood. The monitors collected data from the sensors every second and computed an average of 60 readings. So an average result was saved to SD card about once per minute.
Figure 9. Six days of PM 2.5 data from three PMS7003 particle sensors on my mantle. The letters in the middle panel: a. I cooked some bacon (I have no kitchen exhaust fan and the kitchen is 15 feet from the woodstove.) b. I tossed some wood ashes into the woodstove fan (which blows into the room). c. I was invited to Thanksgiving so I took Sensor #2 and ran it during dinner. The other two sensors stayed home. d. I tossed some more ashes into the fan (fun things should be done more than once). e. I vacuumed the room (some fun things make a mess). f. I accidentally spilled some wood ashes into the fan. g. I cooked pancakes (Wow). h. I don't know what this or the later peaks are because I got tired of writing everything down.
During the test the three PMS7003 sensors responded very similarly to indoor pollution events. This is very encouraging. Wood ashes must be too big to register strongly as PM 2.5 because there were a lot of ashes in the room and the sensor response was subtle. Cooking with oil in a hot pan and adding pancake batter produces a lot of PM 2.5 (also PM 1.0 and PM 10). It was 5°F outside so I didn't open a window, but I have to remember to do that next time. It took several hours to clear the air.
Figure 10. A closer look at the data from the two days after the pancake cloud dispersed. All three PM indexes are included from one of the three sensors. Each point is the mean of 60 readings taken about once per second and saved about once per minute.
I could not detect an association between opening the woodstove door and increased particulate matter. I have not yet looked closely at the gas sensor results for the period of this test.
The files to print the small case for the Nano Data Logger and Plantower PMS7003 are at Thingiverse.
The sketch running on the Nano Data Logger (with PMS7003 and CCS-811) is here: __ NanoVOC7003v1.0.txt