Air Quality Monitoring with Portable PM Sensors

SOP-F502 Revision 0.2
Author

Marc Los Huertos

Environmental Analysis, Pomona College

Published

2026-06-26

1 Purpose

This SOP describes the assembly, deployment, data retrieval, and post-processing of low-cost particulate matter (PM) sensor networks built around Raspberry Pi single-board computers and Plantower PMS5003/PMS5004 laser-scattering sensors. These sensors estimate PM1, PM2.5, and PM10 mass concentrations and report particle counts in six size bins (>0.3, >0.5, >1.0, >2.5, >5.0, >10.0 \(\mu\)m).

Low-cost PM sensors (LCS) provide spatial and temporal resolution that is not achievable with Federal Reference Method (FRM) or Federal Equivalent Method (FEM) monitors alone (Snyder et al., 2013). However, LCS data require quality screening, relative humidity correction, and calibration against reference instruments to produce scientifically defensible results (Ardon-Dryer et al., 2023; Barkjohn et al., 2021). When properly corrected and quality-controlled, LCS networks can complement regulatory monitoring by filling spatial gaps, supporting community exposure studies, and providing near-real-time information during wildfire smoke events (Morawska et al., 2018).

2 Scope

  • Applies to: Outdoor ambient air quality monitoring using EA Program Raspberry Pi + PMS5003/PMS5004 sensor units for PM1, PM2.5, and PM10.
  • Does not apply to: Indoor air quality monitoring (different correction factors apply), gas-phase pollutant monitoring (O3, NO2, CO), or regulatory compliance monitoring.
  • Location: Field deployment sites in the Pomona College area and surrounding Inland Empire communities.

3 Responsibilities

Role Responsibility
Lab PI Approve deployment plan, oversee data quality
Field Lead Coordinate site access, logistics, and safety
Trained Personnel Assemble, deploy, retrieve, and process data
New Students Complete training before independent deployment

4 Definitions

  • PM2.5: Particulate matter with aerodynamic diameter less than 2.5 \(\mu\)m. PM2.5 is a criteria pollutant regulated by the US EPA because of its association with cardiovascular and respiratory health effects.
  • PM10: Particulate matter with aerodynamic diameter less than 10 \(\mu\)m. Includes both fine (PM2.5) and coarse (2.5–10 \(\mu\)m) fractions.
  • Low-cost sensor (LCS): A PM sensor costing less than approximately $250 per unit, as distinct from regulatory-grade FRM or FEM instruments costing $10,000–$50,000 (Snyder et al., 2013).
  • Federal Reference Method (FRM): The EPA-designated reference method for measuring criteria pollutants. For PM2.5, the FRM is a gravimetric filter-based method (see SOP-F503).
  • Federal Equivalent Method (FEM): An air quality measurement method approved by the US EPA as equivalent to the FRM (e.g., beta attenuation monitors).
  • CF=1: “Standard particles” output from the Plantower sensor, factory-calibrated against Chinese ambient aerosol. This is the starting value for the EPA US-wide correction (Barkjohn et al., 2021).
  • AQI: Air Quality Index. A standardized index for reporting daily air quality developed by the US EPA, with breakpoints tied to health-based PM2.5 standards.
  • Collocation: Placing LCS units alongside a reference instrument (or alongside each other) to assess accuracy, precision, and drift. Pre-deployment collocation is a minimum QC requirement.
  • Sensor drift: Gradual degradation of sensor accuracy over months to years of continuous operation, caused by fan wear, laser aging, and contamination of the optical chamber (Malings et al., 2020).
  • Hygroscopic growth: The increase in particle size (and thus light scattering) that occurs when ambient RH exceeds approximately 70%, causing LCS to overestimate PM mass concentration. The EPA correction includes an RH term to account for this (Barkjohn et al., 2021; Jayaratne et al., 2018).
  • PMS-O / PMS-U: Original (pre-mid-2021) and updated (post-mid-2021) versions of the Plantower PMS5003, which differ in internal calibration. PMS-U sensors read lower at concentrations below approximately 16 \(\mu\)g/m\(^3\) (Ardon-Dryer et al., 2023).

5 Safety and Hazards

WarningHazards
  • Electrical: Raspberry Pi units and USB power supplies. Do not expose connections to rain or standing water. Use weatherproof enclosures for outdoor deployment.
  • Heat: Enclosures can reach high temperatures in direct sunlight, especially in summer in the Inland Empire. Use ventilated or shaded enclosures.
  • Traffic and site access: Many monitoring locations are near roadways. Follow all traffic safety procedures in SOP-F001.
  • Working at height: If mounting sensors on poles or structures, follow ladder safety protocols.

5.1 Required PPE

6 Prerequisites

  • SOP-F001 Field Safety
  • Basic familiarity with Raspberry Pi OS (command line, SSH, file transfer)
  • Basic familiarity with R for data processing

7 Background

7.1 How the Sensors Work

The Plantower PMS5003 and PMS5004 are optical particle counters that use a laser (680 \(\pm\) 10 nm) and a photodiode to detect light scattered by individual particles drawn through the sensing chamber by a small fan. The sensor reports particle counts in six size bins and uses a proprietary algorithm to estimate PM1, PM2.5, and PM10 mass concentrations in \(\mu\)g/m\(^3\) (Barkjohn et al., 2021).

The sensor outputs data in two formats: CF=1 (“standard particles,” factory-calibrated against Chinese urban aerosol) and CF_atm (“atmospheric environment,” with an additional adjustment at higher concentrations). For ambient monitoring in the US, the CF=1 output is used as the starting point for correction (Barkjohn et al., 2021).

7.2 Known Limitations

  • Relative humidity sensitivity: At RH >70%, hygroscopic particle growth inflates readings. An RH correction term is essential (Barkjohn et al., 2021; Jayaratne et al., 2018).
  • Particle size dependence: The sensors underestimate PM2.5 when coarse particles (dust) dominate the size distribution. They perform best for fine-mode aerosol (PM1) (Jaffe et al., 2023; Ouimette et al., 2026).
  • Batch variability: Plantower changed the PMS5003 calibration in mid-2021, producing sensors that read lower at low concentrations. These can be identified by their particle count ratios and corrected (Ardon-Dryer et al., 2023).
  • Sensor aging: Fan and laser degradation over months to years of continuous operation can reduce sensitivity. Long-term field evaluations show measurable drift after 6–12 months of continuous outdoor deployment (Malings et al., 2020). Periodic collocation with a reference instrument is needed.

8 Equipment and Materials

8.1 Sensor Unit Components

Item Qty per Unit Notes
Raspberry Pi Zero+ (or 3+/4+) 1 With microSD card (32 GB min)
Plantower PMS5004 (or PMS5003) 1 With ribbon cable
BME280 sensor module 1 Temperature, RH, pressure
USB power supply (5V, 2.5A) 1 Or solar panel + battery
Weatherproof enclosure 1 Ventilated; inlet tube for PM
microSD card (32 GB) 1 Pre-loaded with sensor software
Ethernet or Wi-Fi dongle 1 If Pi Zero (built-in on Pi 3+/4+)

8.2 Field Deployment Supplies

Item Notes
Zip ties, mounting brackets For securing enclosures
Extension cord or solar panel Power supply for remote sites
GPS unit or smartphone For recording coordinates
Field notebook Site metadata
Laptop with SSH client For on-site diagnostics

9 Procedure

9.1 Sensor Assembly and Software Setup

  1. Flash the microSD card with Raspberry Pi OS Lite.
  2. Install the sensor-reading Python script (maintained in the project repository). The script reads the PMS5003/5004 via serial (UART) and the BME280 via I2C, logging timestamped readings to a CSV file on the SD card.
  3. Configure the Pi for headless operation (enable SSH, set Wi-Fi credentials if applicable, set timezone to America/Los_Angeles).
  4. Connect the PMS sensor ribbon cable and the BME280 module.
  5. Power on the unit and verify that the sensor LED illuminates and the fan spins. Check the log file for valid readings.
  6. Allow at least 30 seconds of warm-up before trusting data (Plantower Technology, 2016).

9.2 Collocation (Pre-Deployment Calibration)

Before field deployment, collocate all sensor units at a single location for a minimum of 48 hours:

  1. Place all units within 1 m of each other, at the same height, with inlets facing the same direction.
  2. Compare readings across units to identify outliers or malfunctioning sensors.
  3. If a reference instrument (FRM, FEM, or BAM) is available, collocate sensors with it to develop a site-specific correction factor (Barkjohn et al., 2021).
  4. Calculate inter-sensor coefficients of variation (CV). Units with CV >15% relative to the group median should be inspected and recalibrated or replaced.

9.3 Site Selection

  • Mount sensors 2–4 m above ground level, away from direct emission sources (exhaust vents, barbecues, construction).
  • Orient the inlet away from prevailing wind to reduce rain intrusion.
  • Ensure access to power (AC outlet, solar panel, or battery).
  • Record GPS coordinates, mounting height, distance to nearest road, and land use context.

9.4 Deployment

  1. Secure the enclosure at the selected location using zip ties, brackets, or straps.
  2. Connect power.
  3. Verify operation by SSH into the Pi and checking the live log.
  4. Record the deployment date/time, site ID, sensor serial number, and any notes in the field notebook and project metadata file.

9.5 Data Retrieval

Retrieve data at regular intervals (weekly to monthly):

  1. SSH into the Pi and copy the CSV log file to your laptop using scp or rsync.
  2. Alternatively, remove the microSD card and copy files directly.
  3. Archive the raw file immediately; never edit the original.
  4. Check the log for gaps (power outages, sensor freezes).

9.6 Sensor Maintenance

  • Inspect the inlet for debris, spider webs, or insect nests at each data retrieval visit.
  • Replace sensors after approximately 2 years of continuous outdoor operation, or sooner if collocation checks show degraded performance (Malings et al., 2020).
  • Clean the exterior of the enclosure. Do not open the PMS sensor housing.

9.7 Decommissioning

  1. Power off the unit.
  2. Retrieve the final data file.
  3. Remove the enclosure and all mounting hardware.
  4. Leave no trace at the site.

10 Data Processing and Correction

10.1 Overview

Raw PM2.5 readings from PMS5003/5004 sensors overestimate FRM/FEM concentrations by approximately 40% under typical US ambient conditions (Barkjohn et al., 2021). The EPA US-wide correction reduces root mean square error from approximately 8 \(\mu\)g/m\(^3\) to 3 \(\mu\)g/m\(^3\) (Barkjohn et al., 2021).

10.2 Data Cleaning

Code
library(tidyverse)

raw <- read_csv("data/raw/site01_20260101_20260201.csv")

raw <- raw %>%
  filter(
    pm25_cf1 >= 0,
    pm25_cf1 < 1000,
    rh_pct >= 0,
    rh_pct <= 100,
    temp_c > -40,
    temp_c < 60
  )

# Flag and remove sensor freeze periods
raw <- raw %>%
  mutate(frozen = pm25_cf1 == lag(pm25_cf1) &
                  pm25_cf1 == lag(pm25_cf1, 2) &
                  pm25_cf1 == lag(pm25_cf1, 3)) %>%
  filter(!frozen | is.na(frozen)) %>%
  select(-frozen)

10.3 EPA US-Wide Correction (Barkjohn et al., 2021)

\[ \text{PM}_{2.5,\text{corrected}} = 0.524 \times \text{PM}_{2.5,\text{cf1}} - 0.0862 \times \text{RH} + 5.75 \]

where PM2.5,cf1 is the CF=1 output (\(\mu\)g/m\(^3\)) and RH is relative humidity (%) (Barkjohn et al., 2021).

Code
raw <- raw %>%
  mutate(
    pm25_corrected = 0.524 * pm25_cf1 - 0.0862 * rh_pct + 5.75,
    pm25_corrected = pmax(pm25_corrected, 0)
  )
Important

This correction was developed for typical ambient and smoke-impacted conditions. It underestimates PM2.5 during dust-dominated events. For dust correction, see Jaffe et al. (2023) and Ouimette et al. (2026).

10.4 Identifying Updated (Post-2021) PMS5003 Sensors

If your sensors are PMS-U (post-mid-2021), apply the additional linear correction from Ardon-Dryer et al. (2023) before the EPA correction. PMS-U sensors can be identified by a count0.3/count0.5 ratio approximately 3 times lower than PMS-O sensors.

10.5 Hourly and Daily Averaging

Code
hourly <- raw %>%
  mutate(hour = floor_date(timestamp, "hour")) %>%
  group_by(hour) %>%
  summarize(
    pm25_mean = mean(pm25_corrected, na.rm = TRUE),
    pm25_sd   = sd(pm25_corrected, na.rm = TRUE),
    rh_mean   = mean(rh_pct, na.rm = TRUE),
    temp_mean = mean(temp_c, na.rm = TRUE),
    n_obs     = n(),
    .groups   = "drop"
  ) %>%
  filter(n_obs >= 45)

daily <- hourly %>%
  mutate(date = as_date(hour)) %>%
  group_by(date) %>%
  summarize(
    pm25_daily = mean(pm25_mean, na.rm = TRUE),
    n_hours    = n(),
    .groups    = "drop"
  ) %>%
  filter(n_hours >= 18)

10.6 AQI Calculation

Code
calc_aqi <- function(pm25) {
  breakpoints <- tibble(
    lo_pm  = c(0.0, 9.1, 35.5, 55.5, 125.5, 225.5),
    hi_pm  = c(9.0, 35.4, 55.4, 125.4, 225.4, 325.4),
    lo_aqi = c(0, 51, 101, 151, 201, 301),
    hi_aqi = c(50, 100, 150, 200, 300, 500)
  )
  bp <- breakpoints %>% filter(pm25 >= lo_pm, pm25 <= hi_pm)
  if (nrow(bp) == 0) return(NA_real_)
  with(bp, lo_aqi + (hi_aqi - lo_aqi) / (hi_pm - lo_pm) * (pm25 - lo_pm))
}

daily <- daily %>%
  mutate(aqi = map_dbl(pm25_daily, calc_aqi))

11 Quality Control

11.1 Pre-Deployment

  • All sensors pass collocation check (inter-sensor CV <15%).
  • Software logging verified (valid timestamps, all columns populated).

11.2 During Deployment

  • Weekly data check (via SSH or at retrieval) for gaps and anomalies.
  • Inspect enclosure and inlet monthly.

11.3 Post-Processing QC Flags

Flag Condition Action
F1 RH >95% for >4 consecutive hours Flag; consider excluding
F2 PM2.5 >500 \(\mu\)g/m\(^3\) for >1 hour Verify against regional monitors
F3 Sensor freeze (identical readings >10 min) Exclude
F4 Hourly data completeness <75% Exclude hour
F5 Daily data completeness <75% of hours Exclude day

11.4 Periodic Collocation

Re-collocate sensors with a reference instrument (or with each other) at least once per year and after any sensor replacement. Document drift and update correction factors if needed (Malings et al., 2020).

12 Data Management

  • Archive raw CSV files unmodified in data/raw/ with the naming convention: siteID_YYYYMMDD_YYYYMMDD_raw.csv
  • Processed/corrected files in data/processed/
  • Metadata in data/metadata/
  • All processing scripts version-controlled per SOP-L801

13 Reporting

When reporting LCS data in publications or reports, include (Morawska et al., 2018):

  • Sensor make and model (Plantower PMS5003 or PMS5004)
  • Platform (Raspberry Pi model)
  • Correction equation used (cite the reference)
  • Whether sensors were collocated with a reference instrument
  • Data completeness and QC criteria applied
  • Known limitations (RH sensitivity, dust underestimation, sensor age)

14 References

Ardon-Dryer, K., Kelp, M. M., Stamber, B., & Kohl, S. (2023). Technical note: Identifying a performance change in the Plantower PMS 5003 particulate matter sensor. Journal of Aerosol Science, 173, 106215. https://doi.org/10.1016/j.jaerosci.2023.106215
Barkjohn, K. K., Gantt, B., & Clements, A. L. (2021). Development and application of a United States-wide correction for PM\(_{2.5}\) data collected with the PurpleAir sensor. Atmospheric Measurement Techniques, 14(6), 4617–4637. https://doi.org/10.5194/amt-14-4617-2021
Jaffe, D. A., Miller, C., Thompson, K., Finley, B., Nelson, M., Ouimette, J., & Andrews, E. (2023). An evaluation of the U.S. EPA’s correction equation for PurpleAir sensor data in smoke, dust, and wintertime urban pollution events. Atmospheric Measurement Techniques, 16(5), 1311–1322. https://doi.org/10.5194/amt-16-1311-2023
Jayaratne, R., Liu, X., Thai, P., Dunbabin, M., & Morawska, L. (2018). The influence of humidity on the performance of a low-cost air particle mass sensor and the effect of atmospheric fog. Atmospheric Measurement Techniques, 11(8), 4883–4890. https://doi.org/10.5194/amt-11-4883-2018
Malings, C., Tanzer, R., Hauryliuk, A., Saha, P. K., Robinson, A. L., Presto, A. A., & Subramanian, R. (2020). Fine particle mass monitoring with low-cost sensors: Corrections and long-term performance evaluation. Aerosol Science and Technology, 54(2), 160–174. https://doi.org/10.1080/02786826.2019.1623863
Morawska, L., Thai, P. K., Liu, X., Asumadu-Sakyi, A., Ayoko, G., Bartonova, A., Bedber, A., Chai, F., Christensen, B., Dunbabin, M., et al. (2018). Applications of low-cost sensing technologies for air quality monitoring and exposure assessment: How far have they gone? Environment International, 116, 286–299. https://doi.org/10.1016/j.envint.2018.04.018
Ouimette, J. R., Jaffe, D. A., & Andrews, E. (2026). Correction of PM\(_{2.5}\) underestimation in low-cost sensors under elevated dust loading using only sensor measurements. Atmospheric Measurement Techniques, 19, 1077–1094. https://doi.org/10.5194/amt-19-1077-2026
Plantower Technology. (2016). Digital universal particle concentration sensor: PMS5003 series data manual. http://www.aqmd.gov/docs/default-source/aq-spec/resources-page/plantower-pms5003-manual_v2-3.pdf
Snyder, E. G., Watkins, T. H., Solomon, P. A., Thoma, E. D., Williams, R. W., Hagler, G. S. W., Shelow, D., Hindin, D. A., Kilaru, V. J., & Preuss, P. W. (2013). The changing paradigm of air pollution monitoring. Environmental Science & Technology, 47(20), 11369–11377. https://doi.org/10.1021/es4022602

16 Training Record

Before deploying air quality sensors independently, personnel must:

  1. Read this SOP and SOP-F001 Field Safety in full
  2. Demonstrate Raspberry Pi setup (OS flash, SSH, sensor script configuration) under supervision
  3. Participate in a supervised collocation and deployment
  4. Perform a data retrieval and run the correction/QC pipeline
  5. Be signed off by the PI or field lead