The SEN0321 ozone sensor enables precise outdoor air quality monitoring by detecting ground-level ozone (O3) — a harmful pollutant formed when nitrogen oxides from vehicle exhaust react with sunlight. In Indian cities, ground-level ozone concentration regularly exceeds safe limits during sunny afternoons, particularly in summer. Ozone causes respiratory problems, reduces crop yield, and degrades materials. This tutorial covers setting up the DFRobot SEN0321 ozone sensor with Arduino and ESP32 for outdoor air quality monitoring projects.
Table of Contents
- Ground-Level Ozone in Indian Cities
- SEN0321 Sensor Specifications
- Wiring to Arduino and ESP32
- Arduino Code for Ozone Measurement
- Calibration and Zero Point Adjustment
- Health Alert Thresholds
- Outdoor Installation for India
- Frequently Asked Questions
Ground-Level Ozone in Indian Cities
India’s CPCB standard for ozone is 100 µg/m³ (8-hour average) and 180 µg/m³ (1-hour average). However, multiple Indian cities regularly exceed these limits on sunny days:
- Delhi NCR: Ozone peaks of 200-300 µg/m³ recorded during May-June when sunlight is intense and NOx from vehicles is highest
- Mumbai: Afternoon ozone of 150-200 µg/m³ in dry season
- Bangalore: Moderate ozone due to lower vehicular density than Delhi
- Chennai and Hyderabad: Elevated ozone correlates with afternoon peak traffic and high UV radiation
Ground-level ozone also significantly reduces crop yields. Studies estimate 5-15% crop loss for wheat, rice, and soybean in Indian states with high ozone episodes. Agricultural monitoring of ozone levels near crop fields is therefore both an environmental and economic concern.
SEN0321 Sensor Specifications
The DFRobot SEN0321 is an electrochemical ozone sensor with the following characteristics:
- Measurement range: 0-10 ppm (0-20,000 µg/m³)
- Resolution: 10 ppb
- Response time: 30 seconds
- Operating temperature: -20°C to +50°C
- Operating humidity: 15-85% RH
- Interface: I2C (I2C address 0x70)
- Operating voltage: 3.3V or 5V (selectable via solder pad)
- Warm-up time: 5 minutes
- Lifespan: 2 years (electrochemical sensors have limited lifespan)
- India price: ₹2,000-3,500
The sensor uses an electrochemical cell where ozone oxidises an electrode, generating a measurable current proportional to ozone concentration. Electrochemical sensors are cross-sensitive to other oxidising gases (chlorine, NO2), which can cause false positive readings near industrial sources of these gases.
Wiring to Arduino and ESP32
The SEN0321 uses I2C interface with an I2C address of 0x70:
| SEN0321 Pin | Arduino Uno | ESP32 |
|---|---|---|
| VCC | 5V | 3.3V (set jumper) |
| GND | GND | GND |
| SDA | A4 | GPIO 21 |
| SCL | A5 | GPIO 22 |
Note: The SEN0321 I2C address (0x70) conflicts with the TCA9548A I2C multiplexer. If using a multiplexer in your project, route the SEN0321 to a dedicated I2C channel. The SEN0321’s address cannot be changed.
Arduino Code for Ozone Measurement
Install the “DFRobot_OzoneSensor” library from Arduino IDE Library Manager.
#include <Wire.h>
#include "DFRobot_OzoneSensor.h"
#define COLLECT_NUMBER 20 // Average 20 readings
DFRobot_OzoneSensor ozone;
void setup() {
Serial.begin(115200);
Wire.begin();
// Warm up: allow 5 minutes before trusting readings
Serial.println("Warming up ozone sensor (5 min)...");
delay(300000); // 5 minutes
while(!ozone.begin(Ozone_IICAddress)) {
Serial.println("Ozone sensor not found!");
delay(1000);
}
// Set mode: MEASURE_MODE_AUTOMATIC or MEASURE_MODE_PASSIVE
ozone.setModes(MEASURE_MODE_AUTOMATIC);
Serial.println("Ozone sensor ready");
}
void loop() {
int16_t ozoneConc = ozone.readOzoneData(COLLECT_NUMBER); // ppb
if (ozoneConc >= 0) {
float ozoneMicro = ozoneConc * 1.96; // Convert ppb to µg/m³ (at 25°C, 1 atm)
Serial.printf("Ozone: %d ppb = %.1f µg/m³
", ozoneConc, ozoneMicro);
// Health assessment
if (ozoneMicro < 51) Serial.println("Good");
else if (ozoneMicro < 101) Serial.println("Satisfactory");
else if (ozoneMicro < 169) Serial.println("Moderate");
else if (ozoneMicro < 209) Serial.println("Poor");
else Serial.println("Very Poor - Avoid outdoor activity");
}
delay(10000); // Read every 10 seconds
}
Calibration and Zero Point Adjustment
Electrochemical ozone sensors have a zero point that drifts over time and with temperature changes. Calibration procedure:
- Zero calibration: Place the sensor in clean outdoor air far from pollution sources (minimum 10km from major roads or industry). Activate zero calibration mode per DFRobot library documentation. This sets the current output at clean air as the baseline.
- Span calibration: Requires a certified ozone reference gas. This is impractical for most hobbyists. Instead, cross-calibrate against a CPCB reference station (if accessible) or compare with a calibrated commercial monitor.
- Temperature correction: Electrochemical sensitivity changes by approximately 3% per 10°C change. For accurate Indian summer readings (40°C), apply a correction factor.
For relative monitoring (tracking ozone changes at one location), uncalibrated readings are perfectly useful. For absolute measurements to compare against CPCB standards, calibration is necessary.
Health Alert Thresholds
India’s National AQI for ozone uses the following breakpoints (8-hour average µg/m³):
- 0-50 µg/m³: Good
- 51-100 µg/m³: Satisfactory
- 101-168 µg/m³: Moderately Polluted
- 169-208 µg/m³: Poor
- 209-748 µg/m³: Very Poor
- Above 748 µg/m³: Severe
For health protection, particularly for asthma patients and the elderly common in Indian families, configure your monitoring system to send alerts when ozone exceeds 100 µg/m³ (1-hour reading). High ozone exposure causes eye irritation, chest tightness, and aggravated respiratory conditions — advising vulnerable individuals to stay indoors during peak afternoon hours (12 pm – 4 pm) in summer prevents health impacts.
Outdoor Installation for India
The SEN0321 requires direct air exposure but is not weatherproof. For outdoor installation in India:
- Mount in a radiation shield with passive ventilation, protected from rain splash
- Keep below 85% RH — a desiccant pack near the sensor helps in monsoon conditions (change monthly)
- Avoid direct sunlight on the sensor body (UV degrades electrochemical membranes)
- Position away from vehicle exhaust — place at least 5 metres from any road for ambient readings
- Avoid locations near chlorinated swimming pools, disinfectant sprays, or bleach use — these cross-contaminate ozone readings
Electrochemical sensors age — replace the SEN0321 every 2 years for reliable readings, or sooner if you notice the baseline drifting significantly negative (indicating membrane degradation).
Frequently Asked Questions
Does the SEN0321 detect ozone from indoor sources like air purifiers?
Yes. Many ionisation-based air purifiers, some UV air sterilisers, and ozone generators deliberately produce ozone. The SEN0321 detects ozone from all sources regardless of whether it is outdoors from photochemical smog or indoors from an ozone generator. Ozone air purifiers are controversial because even therapeutic ozone concentrations (0.05 ppm) can irritate the respiratory tract.
Can I use one SEN0321 to monitor multiple rooms by moving it around?
The SEN0321 requires a 5-minute warmup after each power-on. For multi-room monitoring, either use one sensor per location or accept the 5-minute delay when moving the sensor. Ozone concentrations can vary significantly between rooms (higher near open windows, lower in sealed rooms), so point measurements by moving the sensor give a reasonable spatial survey of a home.
Why is ozone a problem if ozone in the stratosphere protects us from UV?
This is the “good ozone, bad ozone” distinction. Stratospheric ozone (at 15-35 km altitude) absorbs harmful UV radiation and is beneficial. Ground-level ozone (tropospheric) is a pollutant formed by photochemical reactions between nitrogen oxides and volatile organic compounds in sunlight. At ground level, ozone is inhaled directly, causing oxidative damage to lung tissue. The concentration of ground-level ozone in polluted Indian cities is 50-100 times higher than natural background levels.
How does cloud cover affect ozone formation in Indian cities?
Ozone formation requires UV radiation for the photochemical reactions that convert NOx and VOCs to ozone. Cloudy days with low UV radiation produce significantly less ozone even at the same NOx and VOC levels. During India’s monsoon season (June-September), cloud cover suppresses ozone formation, giving urban residents a relative reprieve. Ozone peaks are highest on clear, sunny days in April-June and September-November.
Add comment