Core2 portable CO₂ sensor

  • Build your own portable, graphing CO₂ sensor

    Maker Info

    David Gunzinger / smoca ag,, we normally build mobile apps. I have an interest air sensors / ventilation.

    Product Info

    A portable CO₂ sensor with a sensirion SCD30 sensor. The battery holds for about 10h.


    CO₂ levels measured indoors can be used as an indicator of air quality.

    Outdoor air has a CO₂ ppm level of 400 ppm. Humans exhale air with 30000 ppm. You can calculate the percentage of exhaust air you are breathing by dividing measured CO₂ level above outdoor by the human exhaust level. Used air might contain aerosols which might contain the corona virus.

    High indoor CO2 levels also have an impact on the cognitive performance of humans.

    Smoca AG decided to build this easy to reproduce CO₂ measuring device to help slow the spread of the corona virus in offices. It supports its users in deciding when ventilating the room begin monitored is advisable. It also raises awareness for the correlation between CO₂ level and air quality.

    Production process

    See the github page of the project

    Feature / Flaw

    Its working and useable. But a lot is still missing

    • Battery calibration still needs work
    • Calibration of the CO₂ should be triggerable via gui
    • Firmware update via app / network would be nice
    • Wifi connection via the GUI
    • NTP Sync triggerable from the GUI
    • Build in support for remote logging of values (via mqtt for example)

    Message to M5Stack

    • The screws in the industrial PLC base module are to short to use it with a core2 with the bottom removed -> larger screws would help
    • The power supply from the industrial PLC does not register as input in the core2 module since it goes to the 5v bus, not the usb-bus. How do you charge the core2 via m-bus ?
    • For the dark mode (we use it in our bedroom to measure night CO₂ level), the power led of the industrial PLC should be configurable / disableable

    We are interested in any form of feedback

  • Hello David

    wow, nice project!

    Regarding power supply via 5v bus. There is a function called SetBusPowerMode() which allows to switch between internal 5v boost (default) and being powered externally, e.g. from 5v bus. Unfortunately it is broken and the pull-request I've posted a while ago has not been merged yet. If you're interested you can still give it a try:

    Calling the function in setup() with input parameter set to 1 switches to external power and the 5v from the bus are taken to power the Core2. It also charges the battery.

    e.g. M5.Axp.SetBusPowerMode(1);

    Note: Without battery installed you'll need to modify the existing call to this function in void AXP192::begin(void) else the M5Core2 cuts itself off shorty after booting.

    Greetings from Winterthur