Due to the COVID-19 pandemic, many people in Japan, including myself, began working remotely from home more frequently.
While doing so, I started to notice an issue: poor ventilation at home often leads to a rise in indoor carbon dioxide (CO₂) levels. This, in turn, can negatively affect concentration and productivity.
In fact, various studies have shown that high indoor CO₂ levels can impair focus, decision-making, and cognitive performance—all of which are crucial for effective work.
- 400–600 ppm: Outdoor air level. Very good air quality.
- 600–1,000 ppm: Typical indoor environment. Little to no problem.
- 1,000–1,500 ppm: Mild drowsiness and reduced concentration may occur.
- 1,500–2,000 ppm: Noticeable drowsiness and decreased cognitive performance.
- Above 2,000 ppm: Significant decline in decision-making and cognitive function.
In office buildings in Japan, ventilation is strictly regulated by laws such as the Building Standards Act (Article 28) and the Act on Maintenance of Sanitation in Buildings. These rules ensure that indoor CO₂ levels stay below 1,000 ppm.
However, such standards aren’t applied in private homes, which makes it easy to overlook ventilation and air quality during remote work.
To address this issue, I initially tried using a commercially available CO₂ monitor. While it worked well, I found it consumed more power than I expected—mostly because its screen was always on and updated data every second.
So, I decided to build my own low-power CO₂ monitor using electronic paper (e-paper). E-paper displays consume power only when the screen content is updated, making them very energy-efficient.
To further reduce power consumption, I chose a microcontroller that supports sleep mode and set the system to operate intermittently—waking up every few minutes to take readings and update the display.
For this project, I used the M5Paper, a device from M5Stack. It features an e-paper display and an ESP32-based wireless module.
By connecting the M5Paper with a Sensirion SCD41 CO₂ sensor, I was able to build efficient CO₂ monitor tailored for home use.
The source code for this project is available on GitHub, so feel free to check it out if you're interested in building your own!
Installation- Connect Sensirion SCD41 CO2 sensor to Grove Port.A (I2C) of M5Paper.
- Download this project from GitHub .
- Download and install Visual Studio Code.
- Launch VSCode.
- Click the Extensions manager icon in the left Activity Bar.
- Search for
platformio ide
and install thePlatformIO IDE
extension. - Launch VSCode.
- Click the PlatformIO icon in the left Activity Bar.
- Click
QUICK ACCESS/PIO Home/Open
in the left Primary Sidebar. - Click
Open Project
in thePIO HOME
tab in the right Editor Groups. - Open this project which you downloaded above.
- Click the PlatformIO icon in the left Activity Bar.
- Click
PROJECT TASKS/m5stack-fire/General/Upload
in the left Primary Sidebar.
- Pressing and holding the scroll wheel of M5Paper to perform Forced recalibration (FRC).Note: As you know, on the M5Paper, you turn it on by pressing and holding the scroll wheel for 2 seconds. Then continue pressing it.
- Wait 3 minutes.
- Your M5Paper will now display the CO2 concentration every 20 minutes.Note: To reduce power consumption, M5Paper enters Light-Sleep mode except during measurement and drawing.
Comments