Sensirion SCD41 CO2 Sensor Testing

I recently received an eval board for the Sensirion SCD41 CO2 Sensor (CO2 Sensor SCD4x | Sensirion), and began some initial testing on it.

The bare sensor itself is not available yet, but the eval kit is available on Digikey for $48.75. The eval kit is nothing more than the sensor mounted on a small PCB, a header, and a cable.

To control and communicate with the SCD41, I initially chose an Adafruit Feather M0 (Adafruit Feather M0 Express - Designed for CircuitPython [ATSAMD21 Cortex M0] : ID 3403 : $19.95 : Adafruit Industries, Unique & fun DIY electronics and kits), mainly because I already have several devices in the Feather family on hand and am familiar with them. This particular board is a single-board micro-controller (MCU) that is programmed similarly to an Arduino, but it is much smaller, uses less power, and has a much more sophisticated processor. The MCU connects to the sensor with two I2C wires. I soldered the headers onto the sensor board, made all the necessary connections on a solderless breadboard, and connected the Feather to my laptop with a USB cable that provides power and data.

I loaded and ran the program provided by Sensirion, which measures and prints out the CO2 level, the temperature, and the relative humidity every 5 seconds.

I placed the setup in a number of locations and watched the readings under different circumstances.

The output below shows the change in CO2 level when the sensor is originally in (relatively) fresh air, and then I breathe on it:

Note: the lowest reading I was able to achieve in my location (Philadelphia) was about 475ppm CO2. The automatic self-calibration (ASC) function requires regular exposure to “fresh air” at 400ppm; this is unlikely to happen here or anywhere, as the latest world-wide average CO2 concentration is now around 425ppm! So it appears the ASC function is useless. The actual calibration will require forced calibration with a known, accurate reference device.

Next: reading the SCD41 with Bluetooth.

1 Like

Next, I replaced the Feather M0 board with an Adafruit Feather M0 Bluefruit LE (Overview | Adafruit Feather M0 Bluefruit LE | Adafruit Learning System). This Feather is nearly identical to the Feather M0, with the addition of a Bluetooth Low Energy (BLE) interface. The only change I needed to do to the wiring was to disconnect one pin (“DFU”) from ground, as this one now serves as a reset pin instead of a GND supply.

On my iPhone, I installed the “Bluefruit LE Connect” app (Installation and Setup | Bluefruit LE Connect for iOS and Android | Adafruit Learning System). There is also a version for Android. In addition, I installed on the PC a number of required BLE libraries.

Once everything was set up, I merged the Sensirion CO2-reading program with Adafruit’s example BLE plotting program, so I could plot the ongoing CO2 measurements on my iPhone. Here is another example of changes when I breathed on the sensor:

1 Like