pimoroni-pico/micropython/modules/breakout_scd41
Phil Howard cfa3d1d90d SCD4X: Add calibration commands for #1056. 2025-02-21 10:29:38 +00:00
..
README.md SCD4X: Add calibration commands for #1056. 2025-02-21 10:29:38 +00:00
breakout_scd41.c SCD4X: Add calibration commands for #1056. 2025-02-21 10:29:38 +00:00
breakout_scd41.cpp SCD4X: Add calibration commands for #1056. 2025-02-21 10:29:38 +00:00
breakout_scd41.h SCD4X: Add calibration commands for #1056. 2025-02-21 10:29:38 +00:00
micropython.cmake Add SCD41 MicroPython bindings 2021-12-16 11:39:34 +00:00

README.md

SCD41 CO2 Sensor Driver

Getting Started

Construct a new PimoroniI2C instance for your specific board. Breakout Garden uses pins 4 & 5 and Pico Explorer uses pins 20 & 21.

Since SCD41 has a fixed I2C address and the Sensirion SCD4x library is used under the hood, it's wrapped up as a module for Python.

Import the breakout_scd41 and call init to set up I2C:

import time

import pimoroni_i2c
import breakout_scd41

i2c = pimoroni_i2c.PimoroniI2C(4, 5)

breakout_scd41.init(i2c)

Taking Measurements

Before taking a measurement you must start periodic measurement by calling start().

Poll on ready() and use measure() to read the result when it's True:

breakout_scd41.start()

while True:
    if breakout_scd41.ready():
        co2, temperature, humidity = breakout_scd41.measure()
        print(co2, temperature, humidity)
        time.sleep(1.0)

The measure() method will return a Tuple containing the CO₂ reading, temperature in degrees C and humidity.

Changing Calibration

By default the SCD41 will perform automatic self calibration, which could lead to drift in readings over time.

You can stop this with breakout_scd41.set_automatic_self_calibration(False).

You can then use force recalibration with a known good CO₂ PPM baseline to calibrate your sensor:

correction_amount = breakout_scd41.scd41_perform_forced_recalibration(target_co2_concentration);

correction_amount is the resulting correction in CO₂ PPM.

To successfully conduct an accurate forced recalibration, the following steps must be carried out:

  1. Operate the SCD4x in a periodic measurement mode for > 3 minutes in an environment with homogenous and constant CO₂ concentration. (read: don't breathe)
  2. Stop periodic measurement.
  3. Wait 500 ms.
  4. Issue the perform_forced_recalibration command.