Hey everyone! I wanted to share my recent project and setup guide for a DIY ESPHome Air Quality Monitor. This build combines the Sensirion SEN66 sensor, an ESP32-C3 module, and a 1.28" GC9A01 Round LCD display. The goal was to create a sleek, highly accurate indoor air quality monitor that doesn’t look like a messy breadboard setup.
Hardware Overview:
- Sensor: Sensirion SEN66 (measures PM1.0-PM10, VOC, NOx, Temp, Humidity)
- MCU: ESP32-C3
- Display: 1.28" GC9A01 Round LCD
Software Setup:
Everything runs locally via ESPHome, which integrates seamlessly with Home Assistant. To make UI customization straightforward without rewriting core display logic, I added a custom theme engine. This allows easy adjustments to min/max values, range levels, text/background colors, and backlight brightness for both light and dark themes.
Enclosure Design:
I designed a compact, 3D-printable case to house the ESP32-C3, SEN66 sensor, and round display, ensuring a clean and professional look. The enclosure is available on Thingiverse for anyone interested in replicating this build.
Build Guide and Resources:
For those looking to replicate this project, I’ve provided a detailed build guide, YAML configuration files, and 3D printing STLs. The guide covers everything from hardware assembly to software configuration, ensuring a smooth setup process.
Challenges and Solutions:
One challenge was integrating the theme engine into ESPHome without overwhelming the system. By streamlining the display logic and using a YAML configuration for theme settings, I achieved a balance between functionality and ease of use.
Performance and Integration:
The monitor provides real-time data on air quality parameters, which are seamlessly integrated into Home Assistant. This setup allows for easy monitoring and integration with other smart home devices, enabling automated responses to air quality changes.
If you have any questions about the build, the SEN66 integration, or the theme engine, feel free to reach out! I’m happy to help troubleshoot or share additional details. Let me know if you run into any issues compiling the display component or have questions about the SEN66 integration!
Happy building! ![]()