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. Keep in mind throughout that low-cost air-quality sensors are not regulatory- or reference-grade: their readings are indicative and supplementary, not authoritative.
Why Low-Cost Sensors Matter
The EPA and state agencies typically maintain oneRegulatory air quality monitoringmonitors are sparse - often only a handful per metropolitan area - so a single station permay 100+represent tens of square miles in(see urbanEPA areas.AQS Thesenetwork stationsdesign arecriteria, highly40 accurateCFR butPart expensive58 (~App. D). Regulatory reference monitors cost roughly $100K15K-$40K per station)each, and capturea onlyfully-equipped regionalmulti-pollutant averages.station including siting and maintenance can run into the six figures; each represents a wide catchment area. Community mesh nodes with low-cost sensors (roughly $50-200 per node)node as a BOM estimate) can provide neighborhood-level data that reveals hotspots, traffic corridors, and industrial emission events invisible to the regional monitoring network. Community low-cost-sensor networks such as PurpleAir have demonstrated this hyperlocal value, but their readings are indicative rather than reference-grade.
Sensor Options for Air Quality
| Parameter | Sensor | Cost | Accuracy | Notes |
|---|---|---|---|---|
| PM2.5 / PM10 | Plantower PMS5003 or SDS011 | $15-25 | SDS011 ≈ max(±15%, ±10 µg/ | Most important for health; needs temperature |
| CO₂ | Sensirion SCD40 or SCD41 | $35-50 | ±(50 ppm + 5% of reading) | True NDIR sensor; |
| VOCs | SGP30 or SGP41 | $15-20 | Semi-quantitative | Good for trend and event detection; not precise absolute levels |
| NO₂ / O₃ | $50-100 each | ±20 ppb (see SPEC Sensors datasheet) | Higher cost; good for near-road | |
| Temp + Humidity | BME280 | $3-8 | ±0.5°C, ±3% RH | Essential for correcting PM sensor readings |
| Temp + Humidity | SHT31 | $3-8 | ±0.3°C, ±2% RH | More accurate alternative for PM correction |
Building a PM2.5 Monitoring Node
The following is a design sketch, not a turnkey recipe. The PMS5003 and SDS011 are UART laser particulate sensors, and stock Meshtastic's Telemetry module does not support them. For particulate matter in stock Meshtastic, use the I2C PMSA003I (I2C address 0x12), which the Telemetry module's air-quality metrics path supports. A UART PMS5003 requires custom firmware or a separate MCU/co-processor that injects readings into the mesh.
# Hardware: RAK4631 + RAK1906 (BME680) + external PMS5003
# Connect PMS5003 to UART on RAK19007 base board
# RAK1906 provides temperature/humidity for PMtemp/humidity correction
# MeshCoreFor SENSORstock firmwareMeshtastic sendsPM support, use the I2C PMSA003I (addr 0x12),
# NOT the UART PMS5003/SDS011 (those are not natively supported).
# Path A (recommended, no custom firmware):
# PMSA003I (I2C) on a Meshtastic node -> AirQualityMetrics telemetry
packets# Path B (UART PMS5003): requires a co-processor or custom firmware.
# Meshtastic:Meshtastic useenvironment Telemetrytelemetry moduleuses withfixed customprotobuf I2Cfields, sensorso supporta
# Or:raw usePMS5003 needs either:
# - an ESP32 (e.g. T-Beam) running custom Arduino firmware that reads
# packages PMS5003 + BME280 dataover intoUART/I2C Meshtasticand environmentformats telemetrythe formatdata, or a custom
# Meshtasticportnum, custom telemetry (advanced):or
# Modify device firmware to include PMS5003 data in telemetry packets
# Or: use- a Raspberry Pi co-processor that readsreading PMS5003 via UART # and injectsinjecting
formatted# messages into the mesh via the Meshtastic Python API (see the
# Meshtastic Python API send-message docs; clarify whether you send
# plain text or structured telemetry).
# MeshCore note: there is no deployable "SENSOR firmware" that broadcasts
# PM telemetry; treat the working paths above as the only buildable ones.
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: a recommended 5-15 minutes (PM sensors need averaging to reduce
noise)noise; see EPA sensor-performance guidance on averaging) - 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 the nearest EPA monitoring station
for 2-4 weeksto develop calibrationcoefficientscoefficients. Per EPA Air Sensor Toolbox collocation guidance, recommended collocation can run weeks to months and ideally spans multiple seasons.
Community Value and Partnerships
Important: low-cost PM and gas sensors are not regulatory-grade. Readings require collocation/calibration and should always be presented as indicative, supplementary data - not as authoritative air-quality measurements. Do not use uncalibrated node readings as the basis for individual health decisions; defer to official AirNow/EPA data for that.