Dmitriy Kovalenko's CO2nsole Offers a Slick Text-Based Interface for Environmental Monitoring

Reading from sensors connected to an Espressif ESP32, this project offers a surprisingly pretty user interface at the console.

Developer Dmitriy Kovalenko has designed an environmental monitor with a difference: it feeds its data into a text-based user interface application, designed for use at the terminal console: CO2nsole.

"CO2nsole [is] an innovative open-source project aimed at providing an environmental monitoring device that measures CO₂ levels and all the other microclimate information in a private, open, and efficient way," Kovalenko explains of the project. "You can have two versions of the CO2nsole device. For better stability, it is required to install the [optional] battery as the CO₂ sensor is designed to be always on for better calibration and more stable results."

The heart of the build is an Espressif ESP32-WROOM-32 microcontroller board, providing a dual-core Tensilica Xtensa LX7 processor running at up to 240MHz and both Wi-Fi and Bluetooth Low Energy (BLE) connectivity. To this, Kovalenko connects three environmental sensors: the Winsen ZH-Z19 non-dispersive infrared (NDIR) carbon dioxide and temperature sensor, the AMS CCS811 volatile organic compound (VOC) and carbon dioxide sensor, and the Rohm BH1750 light sensor.

These, assembled appropriately, are enough to build the first version of the sensor hardware. The second adds a battery, with boards to provide the required voltages and a charging circuit to keep it topped up. Regardless of whether you add a battery or not, the sensor unit is designed to communicate with a host app providing a slick text-based user interface — provided as a library that can be integrated into other projects.

The interface, built for use at in a terminal emulator or other console, provides instantaneous readings from each of the sensors, and "graphical" charts of readings over time. An "advice you didn't ask for" box at the top-right offers textual snippets based on changes in the readings, while calibration can be triggered manually when required.

Kovalenko has released the project on GitHub under an unspecified open-source license, with firmware published under the permissive Apache 2.0 and MIT licenses; additional information is available in the maker's Reddit post.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire:
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles