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


We will post a complete material list once we have finalized the design. Here are the main components:

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.

Electrical Details

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

Software Design

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.

LED Colors

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

Serial Commands

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 \r\n.


  • 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

Additional Info

Here are some links with additional information: