The SPS30 particulate sensor from Sensirion is known for its superior PM2.5 measurement accuracy compared to competing sensors in the hobbyist and prosumer market. As Indian cities continue to grapple with severe particulate pollution — Delhi’s AQI regularly exceeds 300 during winter, while industrial cities like Raipur, Kanpur, and Angul face year-round PM2.5 challenges — having a reliable, accurate air quality sensor is increasingly important. This comparison reviews the SPS30’s accuracy against popular alternatives (PMS5003 and SDS011) based on performance characteristics relevant to Indian deployment conditions.
Table of Contents
- SPS30 Technical Specifications
- SPS30 vs PMS5003 vs SDS011: Accuracy Comparison
- Humidity Effect in Indian Monsoon
- Wiring SPS30 to Arduino and ESP32
- Arduino Library and Code
- Cross-Calibration with Reference Instruments
- When to Choose SPS30 vs Cheaper Alternatives
- Frequently Asked Questions
SPS30 Technical Specifications
The Sensirion SPS30 is a laser particle counter using polarised light scattering. Key specifications:
- Measurement range: 0–1,000 µg/m³ (PM2.5, PM10)
- PM2.5 accuracy: ±10 µg/m³ or ±10% (whichever is greater) at 0–100 µg/m³
- Particle size resolution: 0.3–10 µm (also provides PM1.0 and PM4.0)
- Interface: I2C or UART
- Operating temperature: -10°C to +60°C
- Operating humidity: 0–95% RH (non-condensing)
- Fan lifetime: 10 years with automatic cleaning cycle
- Supply voltage: 5V, typical current 55mA
- Price in India: ₹2,500–₹4,500
The SPS30 also provides a self-cleaning function where the fan runs at maximum speed for 10 seconds to blow accumulated particles off the optical chamber. This occurs by default every 604,800 seconds (1 week) and significantly extends measurement lifetime in dusty Indian environments.
SPS30 vs PMS5003 vs SDS011: Accuracy Comparison
| Feature | SPS30 | PMS5003 | SDS011 |
|---|---|---|---|
| PM2.5 Accuracy | ±10 µg/m³ or ±10% | ±10 µg/m³ (±15% claimed) | ±10 µg/m³ or ±15% |
| PM4.0 output | Yes | No | No |
| Self-cleaning | Yes (automatic) | No | No |
| Sensor lifetime | 10 years | 3 years | 2-3 years |
| Humidity compensation | Yes (built-in) | No | No |
| Interface | I2C + UART | UART only | UART only |
| India price | ₹2,500–4,500 | ₹800–1,200 | ₹1,200–1,800 |
In independent comparison studies, all three sensors show reasonable agreement with reference instruments at PM2.5 concentrations below 100 µg/m³. Above 200 µg/m³ (common in Delhi and other Indian cities during winter inversions), sensor performance diverges significantly, with the SPS30 showing better linearity due to its wider measurement range and humidity compensation.
Humidity Effect in Indian Monsoon
High relative humidity causes hygroscopic growth of particles — aerosols absorb water and grow larger, scattering more light and causing sensors to overestimate PM2.5. At 80% RH, optical sensors can overestimate PM2.5 by 50-100%. At 95% RH (Mumbai monsoon conditions), errors can exceed 200%. The SPS30’s built-in humidity algorithm (proprietary Sensirion correction) significantly reduces this error compared to uncorrected sensors like PMS5003 and SDS011. Using BME280 humidity readings to apply the Laulainen correction formula to PMS5003 readings achieves similar accuracy to the SPS30’s built-in compensation at a lower cost.
Wiring SPS30 to Arduino and ESP32
The SPS30 uses a JST ZHR-5 connector (1.5mm pitch). Purchase a mating JST cable or use a breakout board:
| SPS30 Pin | Function | ESP32 Connection |
|---|---|---|
| 1 (VDD) | 5V Power | 5V (Vin) |
| 2 (SDA) | I2C Data | GPIO 21 |
| 3 (SCL) | I2C Clock | GPIO 22 |
| 4 (SEL) | Interface select | GND (I2C mode) |
| 5 (GND) | Ground | GND |
Arduino Library and Code
Install the “Sensirion I2C SPS30” library in Arduino IDE Library Manager.
#include <Wire.h>
#include <SensirionI2cSps30.h>
SensirionI2cSps30 sps30;
void setup() {
Serial.begin(115200);
Wire.begin();
sps30.begin(Wire);
sps30.startContinuousMeasurement();
Serial.println("SPS30 started");
}
void loop() {
sps30_measurement m;
uint16_t dataReady = 0;
while (!dataReady) {
sps30.readDataReadyFlag(dataReady);
delay(100);
}
sps30.readMeasuredValuesAsIntegers(m);
Serial.printf("PM1.0: %.1f PM2.5: %.1f PM4.0: %.1f PM10: %.1f µg/m³
",
m.mc_1p0, m.mc_2p5, m.mc_4p0, m.mc_10p0);
Serial.printf("NC0.5: %.1f NC1.0: %.1f NC2.5: %.1f counts/cm³
",
m.nc_0p5, m.nc_1p0, m.nc_2p5);
Serial.printf("Typical particle size: %.1f nm
", m.typical_particle_size);
delay(1000);
}
Cross-Calibration with Reference Instruments
Even the SPS30 benefits from cross-calibration against a reference instrument. India’s CPCB operates BAM (Beta Attenuation Monitor) reference stations in major cities. If you can place your sensor near a CPCB station for 48-72 hours, log simultaneous readings from both sources. Apply a linear correction: corrected_PM25 = (raw_PM25 * slope) + intercept, where slope and intercept are derived from linear regression of the simultaneous readings. This site-specific calibration can improve accuracy from ±10% to ±5%.
When to Choose SPS30 vs Cheaper Alternatives
Choose the SPS30 when:
- Deployment location has high humidity for extended periods (coastal India, monsoon season)
- Sensor will run continuously for more than 2 years
- Dusty environment (construction zones, roads, industrial areas) where self-cleaning is critical
- You need PM4.0 data for HVAC filter effectiveness assessment
- Reliable calibrated readings are required for health decision making
Choose PMS5003 or SDS011 when:
- Budget is the primary constraint
- Short-term project (science fair, demonstration)
- Dry climate with humidity below 70%
- Learning project where high accuracy is not required
Frequently Asked Questions
Is the SPS30 worth 3-4x the price of a PMS5003 for Indian hobbyists?
For a permanent installation in a high-humidity or dusty Indian environment, yes. The SPS30’s 10-year fan lifetime and self-cleaning cycle mean you will likely never need to replace it, while a PMS5003 may need replacement every 3 years. For a single PMS5003 lifespan, you spend ₹800-1,200 twice (₹1,600-2,400 over 6 years) versus the SPS30’s one-time ₹2,500-4,500. The SPS30 also provides PM4.0 data not available from cheaper sensors.
Does the SPS30 self-cleaning affect readings during the cleaning cycle?
Yes. During the 10-second fan cleaning cycle, measurements are unreliable and the library returns an error flag. The Sensirion library handles this automatically — the readMeasuredValues() function returns an error code during cleaning, and you should handle this in code by retrying after 15 seconds. The cleaning cycle runs at default weekly intervals; you can change frequency or trigger manually using sps30.startManualFanCleaning().
What is the warmup time required for the SPS30?
The SPS30 requires approximately 8 seconds warmup time after power-on before readings are valid. During warmup, the fan reaches operating speed and the measurement algorithm stabilises. The Sensirion library handles this internally — the dataReady flag is not set until the sensor is ready. For battery-powered deployments, this 8-second warmup contributes to power consumption; factor it into your duty-cycle calculations.
Can I use the SPS30 outdoors in Indian conditions?
The SPS30 is rated for 0-95% RH non-condensing. In outdoor Indian conditions (monsoon, coastal spray), protect it inside a radiation shield with passive ventilation — never allow rain or condensation to enter the sensor intake. The self-cleaning fan helps prevent particle accumulation but cannot remove water from the optical chamber. Use a Gore-Tex membrane vent on your enclosure to prevent pressure differentials that draw humid air in.
Add comment