Air Quality Measurement Station
This page describes setting up an air quality monitoring station developed as part of a Creative Commons project funded by the Robert Wood Johnson Foundation.
This device sends air quality data and diagnostic information to data sets on the Manylabs server. Each device has it's own SIM card (and phone number); it uses the SIM card to transmit data via HTTP POST messages. Here is a data set from one of our test systems.
If you'd like additional information about the hardware and software, contact firstname.lastname@example.org.
We will post a complete material list once we have finalized the design. Here are the main components:
- echem328 board from Circuits for Science
- CO-B4 carbon monoxide sensor from Alphasense
- Shinyei PPD60PV dust sensor
- Fona GSM module from Adafruit
- SIM card from Truphone
- HIH9131 temperature and humidity sensor (Digi-Key part 480-5909-ND)
- RGB LED from Seeed Studio
- miniature fan (Digi-Key part 259-1532-ND)
- bridge circuit board (with voltage regulators, etc.)
- 12V 3A DC power supply
- 4" diameter, 8" long PVC pipe with end cap
The bridge board provides a connection between the echem328 board, the Fona board, and other devices. It includes power management (with regulators producing 5V and 3.6V) and power safety (a MOV and reverse-polarity diode). The board's schematics, PCB layout, and BOM are here.
Here is a photo of some of the air quality stations undergoing testing in the Manylabs office:
We recommend placing the device in a somewhat shaded location with good air flow. The location needs a decent GSM cell phone signal and electrical power. The DC power cable should be thin enough to run through a door or window without preventing it from closing.
The device can be attached using heavy-duty zip ties and/or large-diameter hose clamps. You can secure the power cable using zip ties.
Once the device is plugged in, it should begin transmitting. No additional setup is necessary.
To open the device remove the (optional) security screws, then rotate the device in the PVC tube so that the middle section can be pulled out. To access the circuit boards, remove the two screws holding the flat cover plate.
The following Arduino pins are used (from the echem328 board):
- Pin 2: dust sensor pulse timing (on interrupt 0)
- Pin 3: fan speed measurement (on interrupt 1)
- Pin 4: GSM reset
- Pins 6/7: GSM serial
- Pins A0/A1: RGB LED
- Pins A4/A5: I2C communication with the HIH9131 sensor and various devices onboard the echem328
The software periodically checks reads the sensor values and sends them to the server over GSM. Once an hour it also sends assorted diagnostic information.
The system uses different LED colors to indicate what part of the process the system is in and whether the upload has succeeded.
Every 10 minutes (by default) the system will read the sensors and attempt to send the data to the server. Every 10 seconds the LED will flash the last color that was shown.
- Yellow: Booting up. If there is is problem initializing the GSM module during this step, the LED will also flash red then yellow.
- Cyan: Reading sensors
- Blue: Sending Data
- Green: Success sending data
- Orange: Manylabs server error
- Magenta: Error connecting to the server
- Red: GSM module error
The software stores settings in EEPROM onboard the echem328 board. These settings can be changed via serial commands. Serial communication is 9600/8N1.
Important All commands must be followed with
0: Show the menu
1: Read sensors and show current values
2: Show current settings
3: Load default settings
4: Edit Settings
The Load default settings and Edit settings options take additional arguments
that will be displayed when you choose those menu options. To load the default
settings, send the command
3:confirm. This is to prevent accidentally overwriting
the current settings.
The_Edit settings_ item will show a list of settings that are available to be edited and how to submit a command to edit them. The available settings are described below.
dsId: The Manylabs data set ID to send data to.
pInterval: How long, in minutes, to wait between posting data to the server. Default: 10
dInterval: How long, in minutes, to wait between including diagnostic data when posting to the server. This should be a multiple of
pInterval. Default: 60
sens: The sensitivity for the CO sensor
offset: The offset for the CO sensor
Here are some links with additional information: