SCD41 CO₂ Sensor

A true photoacoustic NDIR CO₂ sensor (400-5000 ppm) with onboard temperature and humidity, read over I²C.

SCD41 CO₂ Sensor: Carbon dioxide concentration

What is the SCD41 CO₂ Sensor?

The SCD41 is Sensirion's miniature carbon dioxide sensor, offered here on an Adafruit breakout. Unlike estimating CO₂ from VOCs, it measures CO₂ directly using a photoacoustic NDIR principle (Sensirion's PASens and CMOSens technology), reporting concentration over the 400-5000 ppm specified range with an accuracy of roughly ±(50 ppm + 5% of reading). It reports on the I²C bus at the fixed address 0x62.

A humidity and temperature sensor (SHT4x) is integrated in the same package for on-chip signal compensation, so the module also returns relative humidity (typical accuracy ±6% RH) and temperature (typical accuracy ±0.8°C). In periodic measurement mode the sensor delivers a fresh CO₂ reading every 5 seconds, with a low-power mode that updates every 30 seconds and a single-shot mode for on-demand readings.

The Sensirion die runs at 3.3V, but the Adafruit breakout adds a 3.3V regulator and I²C level shifting so it works from either 3.3V or 5V logic. STEMMA QT / Qwiic connectors and built-in I²C pull-ups make it easy to chain onto an existing bus without extra wiring.

SCD41 CO₂ Sensor pinout

PinFunctionType
VIN VIN (3-5V)PowerPower in
3V3 3V3 (out)PowerPower out
GND GNDPowerPower in
SCL SCLI²C SCLBidirectional (GPIO)
SDA SDAI²C SDABidirectional (GPIO)

Specifications

Operating voltage
3.3 V (max 5 V)
Interface
I²C
I²C address
0x62
I²C pull-ups
On-board (no external resistors)
Dimensions
25.4 × 8 × 22.9 mm

Verified from the Tinkered component library · Adafruit (Sensirion SCD41).

Circuit requirements

  • Power VIN from 3-5V; the on-board regulator supplies the SCD41 at 3.3V. Do not exceed 5V on VIN.
  • The 3V3 pin is a regulated output, not a supply input. Feed the module through VIN and GND.
  • I²C is level-shifted on the breakout, so SDA/SCL connect directly to a 3.3V or 5V microcontroller. The address is fixed at 0x62.
  • The board already carries I²C pull-up resistors; avoid stacking additional strong pull-ups when chaining several STEMMA QT boards.
  • Use standard-mode I²C (100 kHz). The SCD4x family relies on clock stretching for some commands and is not intended for 400 kHz fast mode.
  • Provide adequate supply headroom: measurement bursts draw up to about 205 mA peak (roughly 15 mA average), so decouple well and avoid powering it from a weak logic pin.
  • Timing: after issuing start_periodic_measurement the first reading is ready in about 5 seconds, then every 5 seconds after. Allow time (CO₂ response τ63% is about 60 seconds) for the reading to settle after the surrounding air changes.

Board compatibility

The SCD41 CO₂ Sensor connects to any of the microcontrollers supported in Tinkered. Mind the 3.3 V logic level on 3.3 V boards.

Common SCD41 CO₂ Sensor mistakes

Reading before starting measurements

The SCD41 idles until you send start_periodic_measurement (or a single-shot command). Poll the data-ready status and wait roughly 5 seconds for the first sample; reading immediately returns stale or empty data.

Trusting the raw temperature reading

The sensor self-heats during measurement, so its temperature (and the derived humidity) reads higher than ambient. Set the temperature offset for your enclosure rather than assuming the sensor is faulty.

Letting automatic self-calibration drift

Automatic self-calibration (ASC) assumes the sensor periodically sees fresh outdoor air near 400 ppm as its baseline. In a continuously occupied or sealed space it never sees that baseline and slowly skews. Either ensure regular fresh-air exposure, disable ASC, or use forced recalibration (FRC).

Running the bus at 400 kHz

The SCD4x family is a standard-mode (100 kHz) I²C device that uses clock stretching. Pushing it to fast mode causes dropped or corrupt transactions.

Underpowering the module

Measurement bursts pull up to about 205 mA. Powering it from a marginal 3.3V source or through a long thin lead causes brownouts and I²C errors, even though the idle current is well under 1 mA.

SCD41 CO₂ Sensor datasheet

Official SCD41 CO₂ Sensor datasheetAdafruit (Sensirion SCD41)

Popular SCD41 CO₂ Sensor projects

Indoor air quality monitor

Show live CO₂, temperature, and humidity on an OLED and flash a warning once CO₂ climbs past about 1000 ppm, a common stuffy-room threshold.

Automatic ventilation controller

Drive a relay or fan through a threshold so an exhaust fan or HRV kicks in when CO₂ rises and stops once fresh air brings it back down.

Connected CO₂ data logger

Pair the sensor with an ESP32 to log CO₂ trends to Home Assistant, MQTT, or a cloud dashboard and watch how occupancy affects a room over the day.

Grow tent / greenhouse CO₂ tracker

Monitor CO₂ enrichment for plants and correlate it with the onboard temperature and humidity readings to tune growing conditions.

Build with the SCD41 CO₂ Sensor.

Drop the SCD41 CO₂ Sensor into a circuit, write firmware, and simulate it in your browser, then deploy to real hardware. All in one editable Tinkered project.