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.
A true photoacoustic NDIR CO₂ sensor (400-5000 ppm) with onboard temperature and humidity, read over I²C.

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.
| Pin | Function | Type |
|---|---|---|
VIN VIN (3-5V) | Power | Power in |
3V3 3V3 (out) | Power | Power out |
GND GND | Power | Power in |
SCL SCL | I²C SCL | Bidirectional (GPIO) |
SDA SDA | I²C SDA | Bidirectional (GPIO) |
Verified from the Tinkered component library · Adafruit (Sensirion SCD41).
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.
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.
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.
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).
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.
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.
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.
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.
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.
Monitor CO₂ enrichment for plants and correlate it with the onboard temperature and humidity readings to tune growing conditions.
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.