murCO: From 2000 ppm in my kids' bedroom to a planter that tells them to open the window
The wake-up call
It wasn't a gadget idea. It was my kids' bedroom in November.
The air in there was noticeably bad in the mornings — that heavy, stale feeling you can't quite prove. So I built a rough CO₂ logger and left it running overnight. By morning it was past 2000 ppm. Every night, in the room where my two sons sleep.
And here's the thing an adult forgets: kids don't open windows. An adult walks into a stuffy room and opens one on instinct. A 10-year-old plays, does homework, sleeps, and never once thinks about air. They're in that room most of the day.
I also learned something that changed the design: in my overnight tests, leaving a window tilted open barely changed the CO₂ level — actually opening it wide for a few minutes made a much bigger difference.
So the question wasn't "what's the ppm value". The question was: is it time to open the window, and for how long?
That's a question a child can answer — if the answer is a color, not a number.
That's the whole product in one sentence:
Green means fine. Red means open the window.
No numbers, no app, no reading required. And since I go to bed later than my kids, I can air out their room while they sleep and close it again when the CO₂ drops.
Why build instead of buy
I looked at what's out there first:
- Cheap sensors mostly report eCO₂ — a value calculated from VOC readings, not measured CO₂. Fine for trends, useless for "should I ventilate now".
- Good ones, like the Aranet4, use real NDIR CO₂ sensing and work standalone. They’re great products, but they’re still dedicated measuring devices. I wanted something that could disappear into the room as an everyday object.
- Most connected ones want a cloud account for data that never leaves my house in the first place.
- Almost none of them speak. And almost none look like something you'd want to leave on a shelf in a child's bedroom.
I wanted local data in Home Assistant, no subscriptions, and a device my family wouldn't want to hide.
Three principles I refused to break
1. No soldering
If my sons (10 and 13) can't build it, the project failed.
That's why it runs on an M5Stack AtomS3 Lite: Grove connector, onboard button and RGB LED, USB-C. Everything plugs in.
2. Real CO₂, not estimated
Sensirion SCD40 — true NDIR.
If the number isn't trustworthy, the color isn't either.
3. It has to look like it belongs in a living room
Not "Arduino project on a shelf".
An object.
The enclosure: 15 printed iterations and a five-round war with one button
V0 was an Atom and an SCD40 on my desk, wires everywhere. It worked perfectly and looked like a crime scene.
V1 — my father, a retired mechanical engineer who spent his career designing industrial machinery, couldn't leave it alone. He made a proper box. Functional, well built... and a box.
V2 — on a walk it hit me: make it something people actually want. The first attempt was a planter with printed bamboo stalks on top. Better, but dead. It needed something alive.
V3 — then I found Tillandsia, the air plant. No soil, no mess, absorbs water through its leaves. Suddenly the thing had a soul.
The polygonal shell my brother designed was finished around the fourth major iteration.
Then the actual fun began: fitting the hardware inside.
The sensor and the Atom were easy.
The button was not.
It had to sit flush with the geometric shell, let the LED light through, and physically press the Atom's button underneath. We went through five versions and several mechanisms.
What finally worked: springs harvested from ballpoint pens, so the button returns on its own.
Cheap, ugly-clever, perfect.
And then it stopped pressing at all.
Cause: we had mounted the Atom higher up — partly for looks, partly so its heat wouldn't sit right on top of the sensor — and under finger pressure the Atom itself flexed in its holder.
Rigid enough to look right, springy enough to eat the press.
That took another...
Read more »
murCO