Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
The most capable practical design is an ESP32-S3 connected to a Sensirion SEN55 and SCD40 or SCD41. It can report PM1.0, PM2.5, PM4, PM10, temperature, humidity, VOC index and NOx index, while the SCD4x adds genuine CO₂ measurement. Add a display, battery and Wi-Fi publishing to create a portable monitor for a workshop, home, jobsite office or construction vehicle.
This is a trend-monitoring and automation device, not a certified regulatory instrument. Optical particle readings are estimates, VOC and NOx are indices rather than gas concentrations, and CO₂ indicates ventilation conditions rather than every form of pollution.
Choose the measurement goal first
“Air quality” describes several different measurements. Decide what you need before buying hardware:
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →- Ventilation monitoring: use an SCD40 or SCD41 to track CO₂ and identify when a room or site office needs more fresh air.
- Dust and particle monitoring: use a particulate sensor such as the SEN55 or PMSA003I/PMS5003.
- Full indoor-air trend monitoring: combine the SEN55 with an SCD4x sensor.
- Home Assistant or MQTT automation: use an ESP32-S3 with ESPHome for the shortest route to dashboards, alerts and history.
CO₂ is not a direct measurement of construction dust, smoke or chemical pollution. Likewise, a raw PM2.5 value is not automatically an AQI. AQI requires a defined calculation method and jurisdiction.
#1 Best Overall
- 2.4GHz Dual Mode WiFi + Bluetooth Development Board
- Support LWIP protocol, Freertos
- SupportThree Modes: AP, STA, and AP+STA
- Ultra-Low power consumption, Compatible with Arduino IDE
- ESP32 is a safe, reliable, and scalable to a variety of applications
Recommended architecture
For a custom build, use:
- ESP32-S3 development board
- Sensirion SEN55 for PM, temperature, humidity, VOC index and NOx index
- Sensirion SCD40 or SCD41 for CO₂
- 3.7 V protected LiPo battery and a board with suitable charging and power-path circuitry
- Optional OLED or e-paper display
- Ventilated enclosure with separated air inlet and outlet
The sensors share I²C but use different documented addresses: the SEN55 is 0x69 and the SCD40/SCD41 is 0x62. The SEN55 product information is available from Sensirion. The SCD41 specifies a 400–5,000 ppm CO₂ range, a typical 60-second response time, 2.4–5.5 V supply and 15 mA average current; check the current product documentation before finalising a design.
What the device actually measures
| Reading | Meaning | What it does not mean |
|---|---|---|
| PM1.0, PM2.5, PM4, PM10 | Estimated airborne particle mass concentration in µg/m³. | It is not a certified regulatory measurement and is affected by humidity, particle composition and airflow. |
| CO₂ | A useful indicator of ventilation and occupancy. | It is not a complete pollution or safety measurement. |
| Temperature and relative humidity | Environmental conditions that also influence comfort and sensor compensation. | They do not by themselves describe air cleanliness. |
| VOC index | A relative indicator of changing volatile-organic-compound conditions. | It is not ppm of a named chemical and cannot identify a specific solvent or pollutant. |
| NOx index | A manufacturer-defined relative air-quality indicator. | It is not a direct NO₂ or total nitrogen-oxide concentration. |
| AQI | A calculated public-health index based on specified pollutants and a published standard. | A raw PM2.5 value should not be labelled “the AQI” without stating the conversion method. |
ESP32 board selection
An ESP32-S3 Feather-style board is a strong choice for a new portable build. It combines 2.4 GHz Wi-Fi, BLE 5, native USB, LiPo support on suitable boards and deep-sleep capability. ESPHome describes the original ESP32 as having the most mature support, while the ESP32-S3 is attractive when you want native USB, newer BLE features, a display or more substantial firmware. See the ESPHome ESP32 documentation.
An ESP32-C3 can reduce size and cost for a basic sensor node. Choose the S3 when you want a display, USB convenience, BLE or more room for custom features. A Feather-style board is maker-friendly, but verify the exact board’s voltage, GPIO layout, charger and regulator specifications. Product prices and stock change by country and date; the Adafruit ESP32-S3 Feather product page is the appropriate place to check current availability.
Two practical build routes
Custom DIY build
Use an ESP32-S3 Feather or similar board, SEN55 breakout, SCD40/SCD41 breakout, battery and your own enclosure. This is the best educational route because you control the airflow, battery switching, display and firmware. It is also the route most likely to require troubleshooting.
Integrated portable unit
The M5Stack Air Quality v1.1 combines an ESP32-S3, SEN55, SCD40, e-ink display, RTC, power management and 600 mAh battery. Its documented I²C pins are SDA GPIO 11 and SCL GPIO 12, with the same sensor addresses noted above. It is the fastest route to a compact portable monitor, but offers less freedom over the power architecture, enclosure and sensor combination. See the M5Stack hardware documentation and official product page.
Rank #2
- Dual-Core Performance Up to 240 MHz: Run sensor processing, wireless communication, automation logic and connected-device tasks on a 32-bit dual-core ESP32 platform designed for responsive embedded and IoT projects
- Built-in Wi-Fi and Bluetooth 4.2: Connect to 2.4 GHz Wi-Fi networks or use Bluetooth Classic and BLE for wireless sensors, smart devices, remote controls, home automation and other connected projects
- Flexible Power-Saving Modes: ESP32 power-management features support dynamic clock scaling and low-power operating modes, helping developers reduce energy use in compatible sensing, monitoring and connected-device applications, suitable for battery-powered Internet of Things (IoT) devices.
- USB-C Programming with CP2102: Connect through USB-C for power, sketch uploads and serial monitoring, while GPIO, UART, SPI and I2C interfaces support sensors, displays, motor drivers and other modules (USB-C cable not included)
- Over-the-Air Update Support: Configure OTA functionality through a compatible ESP-32 software framework to update deployed firmware over Wi-Fi without reconnecting the board by USB for every revision
Bill of materials
Required
- ESP32-S3 USB-C development board
- SEN55 breakout or evaluation board
- SCD40 or SCD41 breakout
- I²C cable or jumper wires
- Protected 3.7 V LiPo battery
- Board with an appropriate charger, protection and power-path design
- Ventilated enclosure
- USB-C cable
Optional
- 0.96-inch or 1.3-inch I²C OLED
- E-paper display for low-refresh battery operation
- Wake or display-cycle button
- Status LED and on/off switch
- Load switch to remove power from the SEN55
- Battery fuel gauge
- Fan or duct only when the enclosure genuinely needs controlled airflow
Do not put the assembly in a sealed 3D-printed box. The PM sensor needs an intentional air path, and heat from the ESP32, display, regulator or battery can distort temperature, humidity and gas readings.
Wire the shared I²C bus
ESP32-S3 3V3 ─── SEN55 VIN/3V3
└── SCD40/SCD41 VIN/3V3
ESP32-S3 GND ─── SEN55 GND
└── SCD40/SCD41 GND
ESP32-S3 SDA ─── SEN55 SDA
└── SCD40/SCD41 SDA
ESP32-S3 SCL ─── SEN55 SCL
└── SCD40/SCD41 SCL
Do not assume universal ESP32 SDA and SCL pins. Use the pinout for your exact board. Confirm that every breakout is compatible with 3.3 V logic, check whether it already has I²C pull-ups, and avoid stacking several strong pull-ups or incompatible level shifters.
Do not connect a bare lithium-ion cell directly unless the board provides suitable charging, protection and regulation. Keep sensor power wiring short and avoid placing the SEN55 in the exhaust path of a warm regulator.
Install firmware with ESPHome
ESPHome is the quickest route to Home Assistant with minimal custom code. The workflow is:
- Install Home Assistant and the ESPHome Device Builder add-on.
- Create an ESP32-S3 device and select the exact board variant.
- Add Wi-Fi credentials and the correct I²C GPIO pins.
- Enable I²C scanning and confirm both sensor addresses.
- Add SEN5x and SCD4x components.
- Compile and flash over USB.
- Review the ESPHome logs and confirm valid measurements.
- Adopt the device in Home Assistant and verify every entity updates.
- Only after the first wired flash works, enable OTA updates.
A configuration may look like this, but component names and supported keys can vary with the ESPHome release. Treat it as a configuration pattern and check the version-specific component documentation before compiling:
Rank #3
- Powerful ESP-32 Board: Unlock the world of Internet of Things (IoT) and advanced electronics with the heart of this kit: the ESP-32 board. It features a powerful dual-core processor, integrated Wi-Fi and Bluetooth 4.2, making it perfect for building connected, smart devices that communicate with your phone or the cloud. It's fully compatible with the Arduino IDE for easy programming.
- Super Starter Kit: This kit contains over 35 different modules and electronic components, including sensors, displays, motors, and input devices. From LEDs and buttons to an OLED screen, servo motor, and keypad, you have everything needed to explore a vast range of projects in one box.
- Step by Step Online Tutorial: Jump right in with our detailed, beginner-friendly tutorial. Access 30+ projects with complete code, clear circuit diagrams, and step-by-step instructions. Learn the fundamentals of electronics, coding, and how to utilize the ESP-32's unique capabilities without any prior experience.
- Hands-on Learning for All Skill Levels: Perfect for students, makers, engineers, and hobbyists. Start with basic circuits and coding, then progress to intermediate and advanced IoT applications. Build practical projects like weather stations, smart home controllers, remote-controlled devices, and interactive gadgets. The skills you learn are the foundation for real-world innovation.
- Quality & Great Support: Elegoo is committed to quality. We provide a clear, detailed tutorial guide, refined code, and a well-organized component kit. All modules are carefully selected for reliability and ease of use. Our dedicated technical support team and active online community are ready to help you succeed in your learning journey.
i2c:
sda: GPIOxx
scl: GPIOyy
scan: true
sensor:
- platform: sen5x
pm_2_5:
name: "PM2.5"
pm_10_0:
name: "PM10"
temperature:
name: "Temperature"
humidity:
name: "Humidity"
voc:
name: "VOC Index"
nox:
name: "NOx Index"
- platform: scd4x
co2:
name: "CO2"
temperature:
name: "CO2 Temperature"
humidity:
name: "CO2 Humidity"
M5Stack’s integration guide reports testing with ESPHome 2025.10.3, but that is specific to its guide and is not a universal requirement. Consult the current ESPHome component documentation.
Free tools Windows power users keep installed
One-click scans. No signup required.
Use Arduino for full control
Arduino is preferable when you need custom sampling schedules, display rendering, power switching, data logging or a bespoke MQTT payload. Espressif’s Arduino-ESP32 documentation covers setup, while Sensirion provides developer resources and drivers through its downloads page and SCD4x developer resources.
The program flow should be explicit:
- Initialise serial logging and I²C.
- Scan for
0x69and0x62. - Initialise both sensors and check return codes.
- Start particulate and CO₂ measurement using the documented operating modes.
- Wait for startup and the first valid sample.
- Read all available values.
- Apply only documented compensation or calibration procedures.
- Publish MQTT or HTTP data and update the local display.
- Record battery voltage and either repeat or enter sleep.
A structured payload is easier to consume than separate ad-hoc messages:
{
"pm1_0": 4.2,
"pm2_5": 5.1,
"pm4_0": 5.6,
"pm10_0": 6.4,
"co2": 742,
"temperature_c": 22.8,
"humidity_rh": 45.3,
"voc_index": 101,
"nox_index": 2,
"battery_v": 3.91
}
These are example values, not expected results. In Home Assistant, MQTT sensors should also have sensible units, device classes where appropriate, state classes and an availability or online signal. The Home Assistant MQTT sensor documentation explains the current configuration model. Retained MQTT messages must be handled carefully so an old reading is not mistaken for a live one.
Design the enclosure around airflow
- Provide an unobstructed inlet and outlet for the SEN55.
- Keep the sensor away from the ESP32 regulator, battery and display driver.
- Use separate openings rather than trapping warm air around the sensor.
- Prevent condensation from entering the inlet.
- Make the battery replaceable or provide a safe charging access point.
- Keep dust from construction work from blocking the sensor inlet.
A display may be convenient, but a bright OLED increases power use and can warm the enclosure. E-paper uses less energy during stable display periods, but refreshes slowly and needs more specialised driving.
Rank #4
- 2.4GHz Dual Mode WiFi + Bluetooth Development Board
- Support LWIP protocol, Freertos;ESP32 is a safe, reliable, and scalable to a variety of applications
- SupportThree Modes: AP, STA, and AP+STA
- Ultra-Low power consumption, Compatible with Arduino IDE
- 1PCS 30Pin ESP32 Development Board 2.4GHz WiFi Dual Cores Microcontroller Integrated with Antenna RF Low Noise Amplifiers Filters
Make it portable without overstating battery life
Continuous mode
Continuous Wi-Fi provides frequent updates, simpler troubleshooting and smooth trend graphs. It is also the least portable arrangement. Wi-Fi, the SEN55 fan and laser, the display and the regulator all consume energy. M5Stack specifically recommends external power for more stable continuous operation because Wi-Fi drains the battery quickly.
Duty-cycled mode
- Wake the ESP32.
- Power the SEN55.
- Allow the sensors to initialise and stabilise.
- Read a valid sample.
- Connect to 2.4 GHz Wi-Fi.
- Publish one payload.
- Disconnect and power down the particulate sensor.
- Enter deep sleep.
This saves energy but creates trade-offs. Home Assistant may show the device as unavailable between reports, short wake periods may not provide stable PM readings, and the SCD4x operating mode imposes its own timing requirements. Measure the complete assembled device rather than estimating battery life from the ESP32’s deep-sleep current alone. The ESP32-S3 supports active, modem-sleep, light-sleep and deep-sleep modes; the datasheet describes them. A quoted board-level deep-sleep figure, such as approximately 100 µA for a specified Feather test configuration, does not include the sensor, display, charger, regulator or leakage from the finished product.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Validate the build before trusting it
First boot
- Flash a minimal I²C scanner.
- Confirm
0x69for the SEN55 and0x62for the SCD4x. - Check 3.3 V, common ground and the actual GPIO mapping.
- Swap SDA and SCL if necessary.
- Disconnect optional displays and test one sensor at a time.
- Check power-enable GPIOs on integrated boards.
- Remove duplicate pull-ups or incompatible level shifters.
Sensor sanity checks
Place the device in a clean, stable indoor location and allow readings to settle. Compare several devices side by side rather than comparing one momentary value with an online station. Opening a window should eventually influence CO₂. Cooking, candles and aerosol products should affect PM. Alcohol products may shift VOC index. Breathing directly onto the sensor can change CO₂ and humidity, but it is not a calibration method. Never spray liquid or smoke directly into the inlet.
Calibration and interpretation
CO₂
Use automatic or forced calibration only as described in the SCD4x documentation. Do not calibrate indoors merely because the room feels normal. A calibration baseline must represent a defensible known-air condition. Allow for the sensor’s response time; the SCD41 product information lists a typical 60-second response time.
Recommended Free Tools
Particulate matter
Optical PM sensors are valuable for trends, alerts and comparisons within the same installation. Humidity, particle composition, airflow, contamination and aging can shift the estimate. Keep the inlet clear, prevent condensation and do not claim equivalence to a certified regulatory monitor. Sensirion’s downloads page includes technical material on the limits of PM2.5 optical sensors.
Best Value
- 2.4GHz Dual Mode WiFi + Bluetooth Development Board
- Ultra-Low power consumption, works perfectly with the Arduino IDE
- Support LWIP protocol, Freertos
- SupportThree Modes: AP, STA, and AP+STA
- ESP32 is a safe, reliable, and scalable to a variety of applications
VOC and NOx
Publish these as VOC index and NOx index. Cleaning products, perfumes, cooking, solvents and outdoor air can change the values. Use them to identify changes and events, not to identify a chemical or convert directly to ppm.
Troubleshooting
I²C devices do not appear
Check wiring, voltage, ground, GPIO selection, sensor power switches, cable length and pull-ups. Reduce bus speed if needed, power-cycle the sensors fully and check address-selection jumpers. Test each sensor alone before adding the display.
The SEN55 returns zeros or invalid values
The measurement command may not have started, the sensor may still be starting, or the fan and measurement engine may be disabled. Use a current SEN5x driver, log initialisation and measurement-start results, wait for a valid sample and never publish zero as if it meant exceptionally clean air.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteThe SCD4x reports implausible CO₂
Look for poor enclosure ventilation, incorrect calibration, heat from the regulator or display, premature readings or an incorrect driver/address. Move the sensor away from heat, improve airflow, compare with a known-good reference and follow Sensirion’s procedure instead of applying an arbitrary offset.
The battery dies quickly
Measure current in active, Wi-Fi, sensor and sleep states. Continuous Wi-Fi and the SEN55 fan are common causes, but repeated reconnection, display backlighting, regulator quiescent current and overstated battery capacity also matter. Increase the reporting interval, power-gate the SEN55 between samples and consider e-paper or no display.
Readings change after closing the enclosure
Heat buildup, blocked inlets, poor air exchange, battery warmth and condensation are likely causes. Add separate intake and exhaust openings, move heat-producing parts away from the sensors and use a spacer or airflow channel.
Choose the right alternative
| Need | Best choice | Trade-off |
|---|---|---|
| Full custom monitor | ESP32-S3 + SEN55 + SCD41 | Most wiring, airflow and power-design work. |
| Fastest portable build | M5Stack Air Quality v1.1 | Less customisation and more vendor-specific hardware. |
| Ventilation only | SCD40 or SCD41 alone | No PM, VOC or NOx measurements. |
| Low-cost particle monitor | ESP32 + PMSA003I or PMS5003 | Requires separate temperature/humidity hardware and has no SEN55 VOC/NOx indices. |
| Relative gas trend | BME688 or SGP4x-type sensor | Do not treat it as a universal chemical detector or true CO₂ sensor. |
| Home Assistant | ESPHome | Fast integration, less firmware control. |
| Custom power and logging | Arduino | More code, testing and recovery logic. |
Bottom line
For a serious DIY portable air-quality monitor, build around an ESP32-S3, SEN55 and SCD41, give the sensors a deliberate airflow path, and publish clearly named measurements through ESPHome or Arduino/MQTT. Treat PM as an estimate, VOC and NOx as indices, and CO₂ as a ventilation indicator. If compactness and speed matter more than customisation, the integrated M5Stack Air Quality v1.1 removes much of the wiring. In either case, the device is best used for personal trends, experiments, ventilation decisions and automation—not medical, occupational, fire or regulatory certification.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.


Leave a Reply