EMC/EMI Checklist Before Your Board Goes to Certification
EMC testing is expensive, and failing it is worse than the test fee — it costs you a respin, a

Picture this: You’re hiking near a wildfire zone, traveling to a high-pollution city, or simply assessing your home’s ventilation. A pocket-sized device—built for under $50—delivers real-time air quality alerts on an OLED display while logging data offline. With an ESP32 and smart sensor choices, this isn’t just possible—it’s a weekend project waiting to happen.
Air pollution causes 7 million premature deaths yearly (WHO). While commercial monitors cost $200+, an ESP32-based solution offers:
Personalized risk assessment: Track PM2.5, VOCs, CO₂, and ozone—key triggers for asthma, headaches, and fatigue.
Portability: Smaller than a smartphone, powered by a 18650 battery.
Data ownership: No cloud subscriptions or hidden data fees.
| Sensor | Target Pollutant | Key Specs | Price |
|---|---|---|---|
| Sensirion SPS30 | PM2.5/PM10 | Laser scattering, ±10% accuracy | $35 |
| Sensirion SGP41 | VOCs/NOx | MOX-based, humidity-compensated | $15 |
| Senseair S8 | CO₂ | NDIR technology, 0–5000 ppm range | $40 |
| BME680 | Temp/Humidity/Pressure | IAQ score estimation | $10 |
Pro Tip: Avoid cheaper MQ-series gas sensors—they lack calibration and drift significantly over time.
Power Circuit:
18650 Battery (3400mAh) + TP4056 Charger
Deep Sleep Magic: ESP32 consumes <150µA between readings, extending runtime to 2+ weeks at 5-minute intervals.
Wiring Guide:
ESP32 (GPIO) → Sensors 3.3V → VCC on all sensors GND → GND GPIO21/22 → SDA/SCL (I2C for SGP41, BME680, SPS30) GPIO16 → RX (UART for Senseair S8) GPIO4 → OLED SDA GPIO15 → OLED SCL
Enclosure Tips:
Drill 2mm inlet holes near sensors
Use nylon mesh to block dust
Separate CO₂ sensor from heat sources (ESP32 can skew readings)
#include <Wire.h> // I2C #include <SensirionI2CSgp41.h> // VOC #include <SensirionI2CSps30.h> // PM2.5 #include <Adafruit_SSD1306.h> // OLED
// CO₂ baseline calibration (run in fresh air for 24h) if (s8.readCO2() > 300 && s8.readCO2() < 600) { s8.calibrateBackground(); }
// Convert PM2.5 µg/m³ to US AQI int calculateAQI(float pm25) { if (pm25 <= 12.0) return map(pm25, 0, 12, 0, 50); else if (pm25 <= 35.4) return map(pm25, 12.1, 35.4, 51, 100); else if (pm25 <= 55.4) return map(pm25, 35.5, 55.4, 101, 150); // ... Add more thresholds per EPA standards }
| Method | Best For | Implementation |
|---|---|---|
| MicroSD Card | Offline deployments | Log CSV files with timestamp + sensor values |
| Bluetooth LE | Mobile access | Broadcast data via ESP32’s BLE server |
| WiFi + MQTT | Real-time dashboards | Push to ThingsBoard/Home Assistant |
Case Study: A Tokyo maker mapped PM2.5 spikes during rush hour using SD logging + Python visualization:
https://i.imgur.com/placeholder.png
Aggressive Sleep Cycles:
#define SLEEP_MINUTES 5 esp_sleep_enable_timer_wakeup(SLEEP_MINUTES * 60 * 1000000); esp_deep_sleep_start(); // Consumes 150µA
Sensor Duty Cycling:
Power VOC/PM sensors via MOSFETs (saves 80mA when idle)
OLED Timeout: Disable display after 30s of inactivity
Wildfire Evacuation Alerts
Detects PM2.5 > 150 µg/m³ (hazardous level) → Triggers phone alert via BLE
School Classroom Ventilation
Flags CO₂ > 1000 ppm (causes drowsiness) → Activates exhaust fans
Travel Health Companion
Compares Delhi (avg PM2.5: 150 µg/m³) vs. Geneva (10 µg/m³) in real-time
"SPS30 Fan Error": Ensure 5V power (draws 70mA peak)
VOC Baseline Drift: Run 48-hour burn-in outdoors
CO₂ High Readings: Avoid exhaling near device; recalibrate monthly
Geotagging: Pair with NEO-6M GPS to map pollution hotspots
AI Prediction: Train TensorFlow Lite model on ESP32-S3 to forecast spikes
Solar Charging: Add 2W panel + TP4056 for indefinite operation
Your Health, Your Data, Your Control
Commercial monitors hide data behind paywalls. With an ESP32, you build an open-source, upgradeable guardian that travels anywhere—from Himalayan treks to subway commutes.
"Air pollution is invisible until you measure it. Suddenly, you see the world differently."
Build yours today. What will you uncover? Share your air quality maps in the comments!
References & Resources
Credits: EPA AQI standards, WHO pollution guidelines
Legal Note: This device provides indicative data. Not certified for medical or regulatory use.
======================================
Radxa eMMC to uSD Card, Designed for Radxa eMMC Module
$9.80
Throwing Star LAN Tap Passive Ethernet Tap Network Packet Capture Mod Replica Monitoring Ethernet Communication
$4.20
2pcs Nintendo Switch OLED Host Screen Socket LCD FPC Connector Compatible 43Pin Display FPC Connector Socket
$4.90
Photosensitive Sensor Module 3Pin 3.3V-5V Photoresistor Light Detection Resistance Module Photo Resistor for Arduino
$1.90
Waveshare Flexible And Expandable 6x4 Off-Road UGV, With Extension Rails and ESP32 Slave Computer
$175.90
EMC testing is expensive, and failing it is worse than the test fee — it costs you a respin, a
We review a lot of boards — some designed in-house, some by other contractors, some by founders doing their own
When a battery-powered product dies too soon, the instinct is to blame the firmware. Surely there is a sleep mode
A wearable PCB is not just a small PCB. It is a board where every constraint that normally has some
The STM32 family is the workhorse of embedded hardware, and almost every project that uses one starts the same way:
The nRF52840 is one of the most popular BLE and multiprotocol chips in the world, and for good reason: it
No account yet?
Create an Account