ClimaPod
A 3D-printed desk station tracking temperature, humidity and CO2, with a live web dashboard.
Overview
ClimaPod is a small ESP32 station that reads CO2, temperature and humidity every 10 seconds and streams it to a self-hosted dashboard, built after noticing an afternoon slump that turned out to line up suspiciously well with a sealed, poorly ventilated room.
What you need
3D printed
- Vented enclosure
- Desk stand
- Cable channel
Software
- Arduino/MicroPython firmware
- Local MQTT broker
- Node + SQLite dashboard
Build log
Print the vented shell
A honeycomb vent pattern gets real airflow to the CO2 sensor without letting the ESP32's own heat skew the readings, keeping the sensor at least 15mm from any board.
Wire the sensor and display
Wire the SCD41 over I2C and attach the display, dry-fitting every part in the shell before gluing anything down.
Flash the firmware
Flash the firmware and push a reading over MQTT to a small local broker every 10 seconds.
Build the dashboard
Subscribe to MQTT, store the history in SQLite, and render 24-hour and 7-day charts plus a color-coded CO2 badge: green, amber, red.
Calibrate and add alerts
Calibrate the sensor against a known fresh-air baseline, then add a push notification whenever CO2 crosses 1000ppm as a reminder to air out the room.
Result
ClimaPod caught a recurring CO2 spike during long calls, room sealed and no ventilation, that lines up almost exactly with the usual afternoon slump. The room now gets aired out proactively instead of reactively.
Lessons learned
CO2 sensors need real airflow and thermal isolation from the ESP32: the first enclosure revision trapped heat right next to the sensor and threw readings off by roughly 150ppm.