Manually calibrating the Sensiron SCD30 CO2 gas concentration sensor

I picked up an Aranet4 Home CO2 sensor on a Black Friday sale and have finally had the chance to run a commercially-calibrated CO2 sensor against my DIY CO2 monitor on the Flipper Zero and found that my sensor needed some calibration.

Photo of my DIY CO2 sensor running of a Flipper Zero reading 765ppm and an Aranet4 sensor reading 613ppm

Fortunately, Adafruit had an excellent write-up on the different methods recommended by Sensiron and how to go about it. Since I was also hacking on my go-sensors project, I decided to make a command line interface to manage both the “forced recalibration” procedure, as well as the sensor’s “temperature offset” to correct for the sensor reading temperatures that are slightly warmer than ambient air.

I was able to add support for the calibration features into go-sensors/sensironscd30 and then make use of them in the new CLI go-sensors/rpi-sensironscd30-config while the sensor and my Aranet4 sat side by side. It’s really interesting to see how responsive the SCD30 is to detecting me–a CO2-making machine–being within a meter of the sensor.

See also