Air quality

We’re prototyping affordable open source systems for monitoring air quality. Right now these measure particulate matter, temperature, and humidity.

You can see the live data from our prototype version of this on the Adafruit IO website here: https://io.adafruit.com/sevold/dashboards/my-air-quality-sensor (there’s a chance you might need to create an account to see it)

Our last version is displayed on this website, with download options: https://science.brenchies.com/aq/air-quality/mainstreet.php

And our visualization prototype is here: https://editor.p5js.org/sevold/sketches/6Cthym-Ym

We designed and assembled a basic air quality monitoring station to start collecting air quality data in Aruba, which was not being done in any public way until now. The idea is to have the design process open, to have the sensor stations cheap and easy to put together, and to share the data openly.

Working design

The system we’re using for our initial pilot is based on an ESP8266 D1 mini, a wifi-enabled Arduino board, which is connected to two sensors, a PMS5003 particulate matter sensor, and an SHT31 temperature and humidity sensor. Many air quality parameters are difficult to measure using cheap sensors, but particulate matter can be reliably measured by a few different sensors that are available for under $50 USD. Temperature and humidity data can also be reliably measured using an affordable sensor, so our pilot was limited to these two sensors. Links to descriptions and datasheets for the components we used are below.

Prototype components

Wiring and programming

The wiring is pretty straightforward, the PMS5003 sensor operates on a serial connection, with its TX pin connected to the D5 pin on the board (which is set up as a serial receiving pin using a software serial connection). The SHT31 sensor is connected using an I2C protocol so the SCL pin connects to SCL (D1) on the board, and SDA to SDA (D2).

The code is hosted on github, with different versions being posted as we improve things. The link for that is here: https://github.com/brenchies/airuba

For programming the ESP8266 D1 mini, you’ll need to install the ESP8266 boards, and select the LOLIN(WEMOS) D1 R2 & mini from the Tools > Boards menu for programming

You’ll also need to install the Adafruit_SHT31 library using the library manager.

Preliminary results

So far we’ve set up stations at four locations around the island, and are reporting data live to our website:

https://science.brenchies.com/aq/air-quality/mainstreet.php

We also had an open workshop to develop a more intuitive interface for this data, which resulted in the following animation (currently not live):

http://caribbeanwebsolutions.com/brenchies/aq

The code for the animation was developed using p5 and can be found at:

http://www.brenchies.com/p5

== Sensors we considered ==

=== Particulate matter ===

;Parameters

:PM1.0, PM2.5, PM10 in μg/m3

;Sensor

:Plantower PMS5003, PMS7003

;Datasheet

:https://cdn-shop.adafruit.com/product-files/3686/plantower-pms5003-manual_v2-3.pdf

;User guide

:https://learn.adafruit.com/pm25-air-quality-sensor/overview

=== Carbon dioxide ===

;Parameters

:CO2 concentration in ppm

;Sensor 1

:Atlas Scientific EZO-CO2

;Datasheet

:https://www.atlas-scientific.com/_files/_datasheets/_probe/EZO_CO2_Datasheet.pdf

;User guide

:https://www.atlas-scientific.com/product_pages/probes/ezo-co2.html

;Sensor 2

:MH-Z14A NDIR CO2 Module

;Datasheet

:https://www.winsen-sensor.com/d/files/infrared-gas-sensor/mh-z14a_co2-manual-v1_01.pdf

;User guide

:http://www.doctormonk.com/2018/03/review-and-test-of-mh-z14a-ndir-co2.html

;Alternative sensor to test

:SGP30 (also does VOC)

;Link

:https://www.sparkfun.com/products/14813

===Nitrogen dioxide===

;Parameters

:NO2 concentration in ppm

;Sensor

:MiCS-2714

;Datasheet

:https://sgx.cdistore.com/datasheets/sgx/1107-Datasheet-MiCS-2714.pdf

;User guide

:https://www.cooking-hacks.com/no2-gas-sensor-7596

:https://sgx.cdistore.com/Products/Detail/MICS2714-SGX-Sensortech/333416/

===Volatile organic compounds===

;Parameters

:VOC concentration in ppm

;Sensor

:MiCS-5524

;Datasheet

:https://cdn-shop.adafruit.com/product-files/3199/MiCS-5524.pdf

;User guide

:https://learn.adafruit.com/adafruit-mics5524-gas-sensor-breakout/usage?view=all

===Ozone===

;Parameters

:O3 concentration in ppm

;Sensor

:MQ131

;Datasheet

:http://www.sensorsportal.com/DOWNLOADS/MQ131.pdf

;User guide

:http://playground.arduino.cc/Main/MQGasSensors

:http://mtsacelectricalballoon.blogspot.no/2014/08/mq131-semiconductor-ozone-sensor.html

:http://www.instructables.com/id/How-to-use-MQ2-Gas-Sensor-Arduino-Tutorial/

;Alternative sensor to test

:MiCS-2614

;Link

:https://aqicn.org/air/view/sensor/spec/o3.sgx-mics2614.pdf

===Temperature===

;Parameters

:Precision temperature in degrees celsius

;Sensor

:MCP9808

;Datasheet

:www.adafruit.com/datasheets/MCP9808.pdf

;User guide

:https://learn.adafruit.com/adafruit-mcp9808-precision-i2c-temperature-sensor-guide

===Humidity===

;Parameters

:% relative humidity

;Sensor

:DHT22

;Datasheet

:www.adafruit.com/datasheets/DHT22.pdf

;User guide

:https://learn.adafruit.com/dht

===Carbon monoxide===

;Parameters

:CO concentration in ppm

;Sensor

:MQ-7

;Datasheet

:https://www.sparkfun.com/datasheets/Sensors/Biometric/MQ-7.pdf

;User guide

:http://playground.arduino.cc/Main/MQGasSensors

:http://www.learningaboutelectronics.com/Articles/MQ-7-carbon-monoxide-sensor-circuit-with-arduino.php

===Sulfur dioxide===

;Parameters

:

;Sensor

:

;Datasheet

:

;User guide

:

===Sulfur oxides===

;Parameters

:

;Sensor

:

;Datasheet

:

;User guide

:

===Nitrous oxides===

;Parameters

:

;Sensor

:

;Datasheet

:

;User guide

:

===Lead===

;Parameters

:

;Sensor

:

;Datasheet

:

;User guide

:

==Arduino boards==

===ESP8266===

===WeMos D1 R2===

ESP8266 based wifi-enabled Arduino UNO footprint 3.3V logic

;Tutorials

:https://cyaninfinite.com/getting-started-with-the-wemos-d1-esp8266-wifi-board/

:https://www.instructables.com/id/Programming-the-WeMos-Using-Arduino-SoftwareIDE/

;Documentation

:https://wiki.wemos.cc/products:d1:d1

;Schematic

:https://wiki.wemos.cc/_media/products:d1:d1_v2.0.0.pdf

;Steps

:#File>Preferences>Additional Board Manager URL:http://arduino.esp8266.com/stable/package_esp8266com_index.json

:#Tools>Board>Boards Manager search and install esp8266

:#Tools>Board>LOLIN(WeMos) D1 R2 & mini

:#Tools>Port>COM##

==Components==

;Solar battery charger

:https://learn.adafruit.com/usb-dc-and-solar-lipoly-charger

:https://www.adafruit.com/product/390

;Internal voltage meter

:https://code.google.com/archive/p/tinkerit/wikis/SecretVoltmeter.wiki

:https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/

;SD card shield

:https://www.osepp.com/electronic-modules/shields/47-micro-sd-shield

:https://www.osepp.com/downloads/pdf/microSD%20Shield.PDF

:https://github.com/adafruit/SD

:https://learn.adafruit.com/adafruit-micro-sd-breakout-board-card-tutorial/arduino-library

;LCD screen

:https://osepp.com/electronic-modules/shields/45-16-2-lcd-display-keypad-shield

== Relevant links ==

;Arduino course material for environmental science

:https://docs.google.com/document/d/1hyRTMhZN4TzOi1P1D3fZbgv_KO8QyXcPvAWYt8RaqsM/edit?usp=sharing

;Adafruit example setup

:https://blog.adafruit.com/2015/05/26/make-an-air-pollution-detector-with-arduino/

;Instructable

:https://www.instructables.com/id/Air-Pollution-Detector/

Posted in Air