Skip to main content

Air Quality and Environmental Monitoring Networks

Urban air quality monitoring is an underserved application for community mesh networks. Low-cost sensor nodes can build hyperlocal air quality maps that government monitoring stations — typically spaced miles apart — cannot provide.

Why Low-Cost Sensors Matter

The EPA and state agencies typically maintain one air quality monitoring station per 100+ square miles in urban areas. These stations are highly accurate but expensive (~$100K per station) and capture only regional averages. Community mesh nodes with low-cost sensors ($50-200 per node) can provide neighborhood-level data that reveals hotspots, traffic corridors, and industrial emission events invisible to the regional monitoring network.

Sensor Options for Air Quality

ParameterSensorCostAccuracyNotes
PM2.5 / PM10Plantower PMS5003 or SDS011$15-25±10 µg/m³Most important for health; needs temperature correction
CO₂Sensirion SCD40 or SCD41$35-50±50 ppmTrue NDIR sensor; accurate without calibration
VOCsSGP30 or SGP41$15-20Semi-quantitativeGood for trend and event detection; not precise absolute levels
NO₂ / O₃Spec Sensors electrochemical$50-100 each±20 ppbHigher cost; good for near-road monitoring
Temp + HumidityBME280 or SHT31$3-8±0.5°C, ±3% RHEssential for correcting PM sensor readings

Building a PM2.5 Monitoring Node

# Hardware: RAK4631 + RAK1906 (BME680) + external PMS5003
# Connect PMS5003 to UART on RAK19007 base board
# RAK1906 provides temperature/humidity for PM correction

# MeshCore SENSOR firmware sends telemetry packets
# Meshtastic: use Telemetry module with custom I2C sensor support
# Or: use ESP32 (T-Beam) running custom Arduino firmware that
# packages PMS5003 + BME280 data into Meshtastic environment telemetry format

# Meshtastic custom telemetry (advanced):
# Modify device firmware to include PMS5003 data in telemetry packets
# Or: use a Raspberry Pi co-processor that reads PMS5003 via UART
# and injects formatted messages into the mesh via Python API

Community Air Quality Network Design

For a neighborhood-scale (10-50 node) air quality network:

  • Spatial coverage: 1 node per 0.5-1 km² in residential areas; denser near industrial sources and major roads
  • Transmission interval: 5-15 minutes (PM sensors need averaging to reduce noise)
  • Data aggregation: Central room server or MQTT gateway with InfluxDB backend
  • Public dashboard: Grafana public dashboard showing real-time map (use Leaflet.js for geographic visualization)
  • Calibration: Collocate 2-3 nodes with nearest EPA monitoring station for 2-4 weeks to develop calibration coefficients

Community Value and Partnerships

  • Share data with PurpleAir, AirNow, or OpenAQ platforms for broader visibility
  • Partner with local universities for calibration studies and data analysis
  • Provide data to neighborhood environmental justice organizations
  • Submit findings to local air quality district as citizen science data