Inspired by the env-mon project from shapoco, I set out to build my own.
Project Overview
This is a rather simple project, which just combines some off-the-shelf modules, connects them up via software and renders the results to the E-Ink display. The nice thing about this project is, that it shows historical sensor data too.
Parts
I’m using the same RP2040 powered RPi Pico for it too. The BMP280 reports the Temperature and Pressure. The ATH20 measures the Temperature and Humidity. Both sensors were mounted on the same off-the-shelf module, so I ended up with two different Temperature readings. This is fine, as the software can average the two. I ended up using the SCD41 for CO2 measurement, done in ppm. Communication between the MCU and sensors is done over I2C.
I’m using a different display compared to the one shapoco used.
It is a 2.9" E-Paper display by WeAct Studio, and uses SPI for communication.
Since it uses the SSD1680 driver IC, it’s rather simple to drive.

It’s a lot of fun to print arbitrary patterns on the display too.
Here I used the address of the pixel to color the pixel.
The bit of the pixel is set to its own bit, as the array of the display is encoded so that one byte is equal to 8 pixels.

Prototype
I implemented all the sensor and display code in my own repository at envy
So far I’ve been averaging 300-500 ppm CO2 in my room when the windows are opened. Closing them causes the levels to rise slowly. I’ve always kept an eye on it, and it usually rises to 1000 ppm, before I feel inclined to open the windows again. The Air Quality Monitor works very well, and I’m glad I built one!