CO2 Air Quality Sensor

Quick Project To Showcase Building Powerful Devices From 3rd Party Firmware

There are plenty of CO2 and air quality devices available that are ready to use, neat looking, and cheap. Most of these use sensors though that aren’t really suited to accurately measure CO2. Measuring CO2 in a precise way is technically complex. Devices that measure right are very expensive.

CO2 Gadget Firmware

CO2 Gadget is the name of a project that created a sophisticated firmware for ESP32-based microcontrollers. The firmware is highly configurable and works with a variety of precision sensors.

In this project I wanted to see how easy it actually is to turn a couple of components into a top notch CO2 meter. At the center of this project is a Sensirion SCD30 CO2 sensor.


This project serves to test and showcase a couple of common concepts which is why it is splitted in a few parts:

  • Flashing Existing Firmware via Browser: it becomes increasingly popular (and convenient) to flash a microcontroller directly from a web browser. CO2 Gadget provides this feature as well. When you use a pre-compiled firmware file, it is highly specific and runs only on the hardware that it was compiled for. I.e., the GPIO pins need to match your actual board. This is what I am trying first by using one of the supported microcontroller breakout boards.
  • Adjusting Source Code: I don’t want to use a bulky ESP32 development boards in my CO2 Meter Device and rather take a much smaller ESP32-C3 SuperMini, or a ESP32 WeMos LOLIN with battery support. Since there is no pre-compiled firmware for these boards available, here I am trying to adapt the Source Code to other hardware, then compile and upload it to my ESP32-C3.
  • Adjusting Display: the original source code comes with support for small OLED screens and TTGO microcontroller boards with built-in display. I’d like to find out how hard it is to adapt the source code to larger TFT displays.
  • Battery-Power: I’d like the device to run primarily on USB C power, but with the option to use an internal LiPo battery. Here I am going to test overall power consumption, the changes in hardware design to add a charger, and a battery meter.


Please do leave comments below. I am using utteran.ce, an open-source and ad-free light-weight commenting system.

Here is how your comments are stored

Whenever you leave a comment, a new github issue is created on your behalf.

  • All comments become trackable issues in the Github Issues section, and I (and you) can follow up on them.

  • There is no third-party provider, no disrupting ads, and everything remains transparent inside github.

Github Users Yes, Spammers No

To keep spammers out and comments attributable, all you do is log in using your (free) github account and grant the permission to submit issues on your behalf.

If you don’t have a github account yet, go get yourself one - it’s free and simple.

If for any reason you do not feel comfortable with letting the commenting system submit issues for you, then visit Github Issues directly, i.e. by clicking the red button Submit Issue at the bottom of each page, and submit your issue manually. You control everything.


For chit-chat and quick questions, feel free to visit and participate in Discussions. They work much like classic forums or bulletin boards. Just keep in mind: your valued input isn’t equally well trackable there.

  Show on Github    Submit Issue

(content created Jun 04, 2024)