Notes on sensor components for a low-cost air quality monitoring device

Poor air quality is an increasing global concern and has significant health impacts. For researchers and citizen scientists to monitor air quality effectively, they need access to air pollution sensors that collect reliable data. Commercial air quality monitoring devices are often expensive, and so many citizen science projects have turned to DIY devices assembled from affordable components. At Then Try This, we are looking to develop our own low-cost, portable (and perhaps wearable) device that will allow users to collect reliable air quality data. We are in the early stages of this project, and as a first step I have been researching and evaluating sensor components, with a view to choosing sensors for our device that strike the balance between data quality, size, and cost. My focus has been on sensors that measure Particulate Matter (PM), Nitrogen Oxides (NOx), and Volatile Organic Compounds (VOCs).

Particulate matter (PM)

All of the PM sensors I found use optical technology that measure PM using a laser beam . As particles move through the beam the light is scattered and detected by a photodiode (photodiodes convert photons, or light, into electrical current). The intensity of the signal depends on the size of the particle. Here are the PM sensors I found during my research:

Nova PM SDS011 (~£12, 71x70x23mm) - widely used in the open-source devices used in citizen science projects e.g. Sensor.Community, HackAir, SenseBox.

Pros: This is the most affordable PM sensor I found and gives accurate readings (measurement error ±15%) despite its low cost, and apparently has good reproducibility between units. This sensor also measures PM up to concentrations of 1000µg/m3.

Cons: A little chunkier than some of the other options, which could be an important limitation when we go to integrate multiple sensors into the same device. Some issues with humidity levels affecting readings.

Outputs: digital UART tx/rx (with example python script) for separate PM2.5 and PM10.

Plantower PMS7003 (~£17, 48x37x12 mm)

Pros: One of the advantages of this sensor is that it has been independently field-tested and its PM readings show a high correlation with Automatic Urban and Rural Network (AURN) reference stations. The datasheets also indicate that it gives accurate readings (measurement error ±10%). It is also small in size and very affordable, is less affected by humidity than the SDS011 and apparently has good reproducibility between units.

Cons: This sensor measures PM up to 500 µg/m3, which is less than some other sensors. However, WHO guideline levels for PM2.5 are 10µg/m3 annual mean and 25 µg/m3 24hr mean, which means this sensor will still be able to detect unsafe PM levels.

Outputs: digital UART for PM concentrations and particle counts.

This is the air quality sensor that we chose to use for the Sonic Kayaks, see publication here

Grove HM3301 (~£30, 40x38x15 mm)

Pros: Readings are consistent (±10 µg/m3 for readings under 100µg/m3 and ±10% for readings 100-500µg/m3), although this does not necessarily mean high accuracy.

Cons: Like the PMS7003, this sensor has a lower “effective measurement range” (of up to 500µg/m3) although it has a maximum range of up to 1000µg/m3. This presumably means that data quality is best at concentrations of up to 500µg/m3.

Outputs: digital I2C or UART values PM1.0, PM2.5 and PM10 concentrations

Honeywell HPMA115S0 (~£30, 44x36x14 mm)

Pros: Small and gives accurate readings (measurement error ±15%) and measures PM concentrations of up to 1000 µg/m3.

Cons: More expensive than other sensors (e.g. the PMS7003) and based on the manufacturer’s datasheets there doesn’t seem to be a clear benefit for going for this more expensive option.

Outputs: digital UART interface with values for concentrations and counts for PM1.0 PM2.5 and PM10.

Sensirion SPS30 (~£45, 40x40x12 mm) used in devices for CanAirIO and Open Seneca air quality citizen science projects.

Pros: One of the smallest PM sensors I encountered and gives high accuracy readings (measurement error ±10% for PM2.5) and measures up to 1000 µg/m3. A popular choice in citizen science projects, which suggests this sensor has been road-tested.

Cons: On the more expensive side. Lower accuracy for PM10 readings (measurement error ±25%).

Outputs: switchable UART/i2C with concentrations for PM1.0, PM2.5, PM4.0, PM10.0 and counts for PM0.5, PM1.0, PM2.5, PM4.0, PM10.0.

EcologicSense NEXT-PM (~£60, 62x53x23 mm) and Temtop PM-900M (~£60, 50x43x20 mm)

Pros: These sensors produce accurate readings (measurement error ±10%) and measure PM concentrations of up to 1000 µg/m3.

Cons: These are much more expensive sensors and a little larger than many of the other options. Based on the datasheets alone, it looks as though a cheaper sensor would perform just as well.

Outputs: UART digital with counts and concentrations for PM1.0, PM2.5, PM10.


We are also interested in integrating a sensor that measures Nitrogen Oxides (NOx) into our design. Interestingly, the majority of air quality citizen science projects I’ve seen only monitor PM, despite the significant health impacts of NO2 pollution.

Electrochemical sensors are typically used to detect NOx. These are essentially fuel cells consisting of electrodes and an ion conductor/electrolyte reservoir. When a target gas comes into contact with the surface of a sensing electrode, redox reactions occur and cause detectable changes in current. Electrochemical sensors are specific to target gases, which means separate sensors are necessary to measure the concentration of nitric oxide (NO) and nitrogen dioxide (NO2). I have focused on NO2 sensors here, as this pollutant seems to be the most relevant to human health.

A potential problem with electrochemical NO2 sensors is that they are sensitive to ozone. This is likely to be an issue because ground-level ozone is formed from chemical reactions between other pollutants (NOx, CO, VOCs) emitted from vehicle exhausts, and so both NOx and ozone may be present in air at street level. A possible solution could be to also integrate an ozone sensor into our design (which would allow correction of the NO2 measurement) or go for a sensor with an ozone filter. Here are the sensors I found during my research:

SPEC sensors: 3SP-NO2-5F (~£17, 20x20x3mm) - also available as part of a digital DGS-NO2 (~£100, 45x21x9mm) or analogue ULPSM-NO2 (~£35, 44x20x12mm) sensor module.

Pros: The 3SP-NO2-5F is very affordable and gives high-resolution measurements (<20ppb). The DGS-NO2 sensor module gives accurate measurements (measurement error typically <15%) and converts sensor readings to a digital signal. The ULPSM-NO2 module allows for even more accurate readings (measurement error <±2%), and converts the sensor’s current signal to a voltage. This sensor is not sensitive to other interfering gases, and contains an ozone filter.

Cons: The datasheet for the ULPSM-NO2 module suggests that the sensor gives readings at a lower resolution (<0.1ppm) than as part of the DGS-NO2 module (<20ppb).

Module outputs:

  • DGS-NO2; digital UART
  • ULPSM-NO2; analogue 0-3V

Community open source code example for reading on Arduino

Amphenol sensors: SGX-4NO2 (~£38, 20x17mm), SGX-4NO2-2E (~£40, 20x17mm), and EC4-20-NO2 (~£112, 20x17mm)

Pros: These sensors have very low cross-sensitivity to a number of interfering gases (except the EC4-20-NO2, which is sensitive to SO2).

Cons: Measurement resolution is 0.1ppm, which may be a problem when WHO considers safe levels to be around 0.1ppm (24-hour mean). I was unable to find any information on the accuracy of these sensors from the datasheets, or information regarding ozone cross-sensitivity. These sensors also don’t seem to have an ozone filter.


  • SGX-4NO2; 600±150 nA / ppm
  • SGX-4NO2-2E; 300 ± 100 nA / ppm
  • EC4-20-NO2; presumably in nA / ppm

No modules converting this signal to voltage or digital seem easily accessible.

Alphasense sensors: NO2-A43F (<£50, 20x17mm) and NO2-B43F (<£50, 32x17mm)

Pros: These sensors measure in the ppb (parts per billion) range and are able to detect low concentrations of NO2. The NO2-B43F has good linearity of <±0.5ppb (i.e. the accuracy across the range of measurements), which is better than the NO2-A43F (<±0.5ppm). They are also very affordable. These sensors don’t appear to filter out ozone.

Cons: The datasheets indicate that these sensors are cross-sensitive to a number of interfering gases.

Outputs: similar current output to others above.

No easily accessible breakout module boards - some community open source projects:

Volatile organic compounds (VOCs)

We’ve been asked by a council about measuring indoor pollutants so have also done a bit of research into VOC sensors that could be used in a modified version of our design. Low-cost options for sensing VOCs tend to use metal oxide semiconductor technology (although there are also electrochemical sensors available). Metal oxide sensors work by heating a gas-sensitive metal oxide layer (e.g. tin dioxide) that is exposed to the air. In clean air, the current is higher than in the presence of air containing pollutants. Metal oxide sensors are non-specific (i.e. they do not target specific gases), and therefore only give a broad indication of the amount of air pollution (although this is probably desirable when measuring VOCs due to the large variety of VOC compounds). Here are some of the metal oxide VOC sensors available:

Waveshare MQ-135 (~£5, 40x21mm)

Pros: Cheap and small.

Cons: Non-specific and senses a range of gases including non-VOCs (e.g. NOx, CO2, PM). We are looking for more specific sensors for our device that distinguish VOCs from NOx and PM, but for those interested in broad sensing of air pollutants these are very affordable.

Outputs: simple threshold digital “presence of gas” signal, and analogue “amount” value. Very easy to use but uncalibrated values.

Adafruit MiCS5524 (~£11, 19x13mm) - breakout version of SGX Sensortech sensor

Pros: Small and affordable.

Cons: Sensitive to other non-VOCs such as carbon monoxide, ammonia, and hydrogen. Detection in the ppm (parts per million) range.

Outputs: analogue “amount” value, uncalibrated

Adafruit SGP30 (~£12, 25x18mm) and SGP40 (~£12, 27x20mm) - breakout versions of Sensirion sensors

Pros: Cheap and tiny! The SGP30 gives measurements in the ppb range and measures a wide range of concentrations (0-60,000 ppb). The SGP30 gives accurate readings (typically 15% of measured value).

Cons: The SGP40 gives VOC index as an overall measure of air quality rather than actual concentration of VOCs. It wasn’t clear to me which VOCs these sensors actually detect, or whether they are cross-sensitive to other gases.

SGP30 outputs: separate eCO2 and VOC values as digital numbers via i2c serial

SGP40 outputs: single 0-500 “air quality” number via i2c serial

Amphenol MICS-VZ-89TE (~13, 23x14mm)

Pros: This sensor has a fast response time (<5s), is able to detect low concentrations (<1ppm), and outputs concentration in ppb.

Cons: The gas-sensitive layer can be poisoned by high concentrations of organic solvents, ammonia, and cigarette smoke (although this may be general across metal oxide type sensors). This sensor measures up to 1000ppb so may not be effective in measuring large spikes in indoor VOCs.

Outputs: separate VOC and CO2 via i2c serial (and complicated multiplexed PWM output)

Adafruit BME680 (~£14, 25x18mm) - breakout version of Bosch sensor

Pros: Small and affordable.

Cons: Accuracy varies from 10 to 90% across measurement range. Outputs an air quality index rather than a concentration. This air quality index is computed from the recent history of measurements recorded by the sensor and gives an estimation of the air quality relative to “typical” levels in its operating environment. This means that this sensor may not be suitable for a portable device.

Outputs: i2c or SPI digital outputs

Adafruit CCS811 (~£15, 25x18mm) - breakout version of AMS sensor

Pros: Small in size and detects a wide range of VOCs (alcohols, aldehydes, ketones, organic acids, amines, aliphatic and aromatic hydrocarbons). Measures in ppb range.

Cons: Sensitive to humidity and hydrogen. VOC concentration is calibrated to reflect a typical VOC “mixture in an indoor environment”, and so this sensor may not be appropriate for a portable device intended for short-term monitoring.

Outputs: integrated analogue to digital converter / i2c digital output

Renesas ZMOD4410 (~£4, 3x3x0.7mm) and SGAS707 (~£19, 14x10mm)

Pros: The ZMOD4410 is able to output the total VOC (tVOC) concentration and accuracy is good (±25% without additional calibration and ±15% with additional calibration. The SGAS707 is responsive to a wide range of VOCs including acetone, ethanol, formaldehyde, isobutylene, octane, toluene, and xylenes.

Cons: Both the SGAS707 and the ZMOD4410 are sensitive to humidity and compounds other than VOCs such as carbon monoxide.

ZMOD4410 outputs: VOC and an “indoor air quality” (IAQ) measurements via digital signal (i2c)

SGAS707 outputs: analogue signal [in ohms] (an expensive sensor module SMOD707 is available to convert to digital signal via i2c).

Figaro TGS2602 (~£26, 9x9x10mm)

Pros: Very small and measures gas concentration (not an index like some of the other sensors).

Cons: Detection in ppm rather than ppb. Sensitive to other compounds such as hydrogen sulfide and ammonia (although these would also indicate poor air quality).

Outputs: analogue signal [sensor resistance] (available as part of a sensor module AM-1-2602 for ~£90 that converts signal to “pollution level” on 5-point scale.

There are also electrochemical (consisting of electrodes and electrolyte/ion source) VOC sensors available, which use the same technology as the NO2 sensors described above:

SPEC IAQ100 (~£14, 20x20x3mm) - available as part of sensor module ULPSM-IAQ (~£44, 21x44mm)

Pros: Small in size and measurements not affected by humidity. High accuracy (<±2% of reading).

Cons: Cannot detect low VOC concentrations (lower detection limit is 0.3ppm). Cross-sensitive to a number of other non-VOCs.

Outputs: analogue 0-3V

As with the SPEC NO2 sensor module (see above), there is community open source code available for reading on Arduino

Alphasense VOC-A4 (<£50, 20x16mm) and VOC-B4 (<£50, 32x17mm)

Pros: These sensors detect VOCs in the ppb range and have good linearity (<0.13ppm across measurement range 0-2ppm).

Cons: They are cross sensitive to a number of non-VOCs (e.g. ozone, hydrogen sulfide, chlorine, although these compounds would also be indicative of poor air quality). They are also highly sensitive to carbon monoxide, and so a CO sensor would also need to be integrated into the air quality device in order to distinguish between VOCs and CO.

Outputs: Analogue signal (as a current). I was unable to find any breakout boards for easy conversion of the signal to a concentration or air quality index.

Image above: "PM2.5 Air Quality Sensor and Breadboard Adapter Kit - PMS5003" by adafruit is licensed under CC BY-NC-SA 2.0