Inspiration

Indoor air is invisible, and a screen full of numbers is easy to ignore. AirLume explores a simple idea: make an everyday lamp a visible reminder to pay attention to the room around you. It combines useful lighting with environmental sensing, so checking the air can become part of the space itself.

What it does

AirLume is an ESP32-C6 air-monitoring lamp prototype. The current firmware brings together measured CO2, particulate matter, a VOC estimate, temperature, and humidity. An OLED cycles through readings every five seconds, including an AirLume product score and the selected lamp mode. Temperature is displayed in Fahrenheit.

The lamp supports warm white, cool white, fireplace, and air-monitor modes on a 100-pixel addressable RGB strip. Confirmed environmental warnings override enabled lighting modes with red; sensor faults use amber. Higher CO2 alert levels pulse red. Switching the visual outputs off leaves sensing and serial reporting running.

How we built it

The hardware stack uses an ESP32-C6, an SCD40 CO2 sensor, an SPS30 particle sensor, an ENS160 VOC sensor, an AHT temperature/humidity sensor, an SH1107 OLED, and a WS2812B LED strip. The firmware is written in C++ in the Arduino environment, using I2C for the sensor/display stack and Adafruit NeoPixel for the LEDs. A TEMT6000 ambient-light input is included for brightness adjustment.

The firmware separates sensor polling, measurement validity, filtering, alert decisions, display pages, and LED rendering. Serial commands select modes and expose readable status and raw diagnostics. Alert dwell times and separate recovery thresholds help avoid flickering between states when readings hover around a boundary.

Challenges we ran into

Different sensors become ready at different times. The ENS160 has its own warmup and conditioning states, so the display starts with the readings already available and adds VOC only when the sensor reports valid output. Missing or stale readings are handled explicitly rather than displayed as an all-clear.

Another challenge was keeping a smooth display without making alerts depend on rounded presentation values. CO2 warnings use fresh measured SCD40 data, while VOC alerts use the ENS160's valid AQI categories. The VOC sensor's estimated CO2 is kept distinct from measured CO2.

Power and temperature also need care. The bench configuration uses a conservative estimated LED-current budget while the strip is powered through the board. A separate regulated supply is needed for normal full-strip brightness. The current temperature correction is provisional and still needs comparison with a reference after thermal stabilization.

Accomplishments so far

We have implemented the sensor-to-display-to-lighting firmware, the four lamp modes, warning overrides, serial controls, and continuous sensing while visual outputs are off. The firmware has been compiled for the ESP32-C6 target. Our host-side tests exercise the actual firmware model and renderer with peripheral stubs; the current run passes startup behavior, valid-VOC activation, page timing, CO2 policy, particle triggers, Fahrenheit conversion, and red overrides across all lamp modes.

What we learned

A useful environmental interface needs to communicate uncertainty as carefully as it communicates a reading. Sensor validity, stale data, power constraints, and recovery behavior all affect whether a simple color cue deserves a user's trust.

What's next for AirLume

Next steps are observing the OLED and strip on the physical device, checking sensor readings against references, improving the lamp's power setup, and documenting a complete hardware demonstration.

AirLume remains a prototype environmental indicator. Its score and live advisories are product settings, not regulatory AQI or proof of compliance with exposure guidelines. It is not a certified smoke, carbon-monoxide, or life-safety alarm.

Share this project:

Updates

Submission history