Air Quality Monitor & Purifier
Overview
A DIY air quality monitor and purifier on Arduino — sensors, a round touchscreen UI, automatic fan control — plus a custom Uno shield so the whole system could live in a sealed enclosure instead of jumper wires.
The problem
Indoor air quality can change quickly, but most consumer setups either measure or purify — not both in a closed loop. I wanted a compact system that could read the air in real time, show clear feedback on a display, and respond automatically when particulate levels rise.
The firmware version worked on the bench, but jumper wires were a liability inside an enclosure, and the combined draw of the display, sensors, and logic exceeded the Uno’s onboard regulator. That pushed the project into a custom shield with its own power path.
What I built
Firmware reads particulate and environmental data, shows it on a round GC9A01A touchscreen, and drives a fan that ramps up when air quality degrades. A PMS5003 handles PM2.5; an SGP30 tracks VOCs and eCO₂; an SHT31-D (and earlier a DHT22) handles temperature and humidity. The Arduino coordinates SPI, I2C, and UART so the display, sensors, and control logic run as one unit.
Designed for Professor Paulsen’s Microcontroller System Design class, the shield hosts those sensors, the display, and a MOSFET fan driver on a compact through-hole board. A single 12V barrel-jack input splits on-board: one branch powers the fan directly, the other feeds an MP1584 buck converter that steps down to 5V for the Arduino. The board was laid out with through-hole parts from the lab so it could be built without waiting on specialty SMD stock, and sent to JLCPCB for fabrication.
Challenges
Fitting sensor reads, UI updates, and fan control into a responsive loop without starving any peripheral took careful timing. Power was the other constraint: once everything ran together, a simple dual-rail idea had to become a single 12V input with on-board buck conversion.
At 2.7″ × 2.1″, fitting four sensor connectors, the buck converter, the MOSFET driver, and supporting passives took several placement passes — including putting the MP1584 on the underside so it sits between the shield and the Uno.
Current state
The monitor runs as a complete embedded product: live air quality on the touchscreen, automatic purification, and firmware on GitHub. The shield replaces jumper wires with a reliable interconnect for a sealed enclosure (designed with project partner Manuel Alcaraz). Boards went to JLCPCB with the software already complete, ready for final assembly and testing.
Links