CO2 sensor module, temperature and humidity, SCD41, I2C, 2.4-5V
zoom_out_map
chevron_left chevron_right

Product images are for informational purposes only and may vary slightly depending on the batch and supplier. Product specifications and prices may be subject to change without notice. We do our best to provide accurate and complete product specifications, but they may not be completely accurate. If you encounter any such situation, please let us know.

The product is intended for specialists and requires qualified and authorized personnel. The product does not include assembly/use instructions . Putting the product into operation by unqualified persons leads to the loss of the warranty according to the Terms and Conditions on the site.

The specified technical parameters (current, power, etc.) represent maximum allowable values under ideal operating conditions. For safe use and optimal lifespan, it is recommended to operate the product continuously at no more than 50% of the specified maximum values.

CO2 sensor module, temperature and humidity, SCD41, I2C, 2.4-5V

Compact air quality monitoring module, measures CO2, temperature and humidity, ideal for IoT, HVAC and automation. Communicates quickly via I2C at address 0x62, operates at 2.4-5.5 V for compatibility with 3.3V and 5V, offers CO2 measurement up to 40000 ppm and low consumption for continuous or low-power use.

201.13 RON Tax included

166.22 RON Tax excluded

No reviews yet
1-2 zile
check In Stoc

Shipping by Thursday 27 August

Close
INTERNATIONAL DELIVERY
International fast shipping within EU. Free Shipping for orders above 100 EUR in most EU countries.
FAST DISPATCH 24H
We ship from our stock within 24H
LOYALTY POINTS
You earn points with every order, worth 5%.

This module integrates the Sensirion SCD41 sensor, with true carbon dioxide measurement using the photoacoustic NDIR principle, along with ambient temperature and humidity. It is intended for air quality monitoring applications, automation, HVAC systems, weather stations, and IoT projects. Unlike eCO2 sensors that estimate concentration based on volatile organic compounds, the SCD41 measures CO2 directly, providing absolute values.

Communication is carried out via the I2C interface at address 0x62. The module operates between 2.4 and 5.5 VDC, and the I2C logic levels are referenced to the supply voltage, so it is directly compatible with both 3.3V platforms such as ESP32 or Raspberry Pi Pico, and 5V systems such as Arduino Uno or Nano, without a level shifter.

Important for assembly: the module does not include pull-up resistors on the SDA and SCL lines. For stable operation, two external 4.7 kΩ resistors are required, connected from SDA to VDD and from SCL to VDD. Without them, the sensor may respond to I2C scanning, but read commands will fail intermittently or completely.

During measurement, the sensor draws short current peaks of up to 205 mA. A 100 µF decoupling capacitor, placed as close as possible to the power pins, is recommended, along with a power source capable of sustaining this peak. Powering it from pins with strict current limiting, such as the 3.3V output of Arduino Nano boards, is not sufficient.

The sensor covers an output range of 0-40000 ppm CO2, with specified accuracy of ±(40 ppm + 5% of reading) in the 400-5000 ppm range. Humidity is measured from 0-100% RH, and temperature from -10-60°C. Due to self-heating, the reported temperature is typically 2-4°C above ambient; the difference is compensated in software via a temperature offset command.

The low power consumption makes it suitable both for continuous operation and for battery-powered applications, where low-power and single-shot modes significantly reduce average current. The compact dimensions of 21.6 x 13.4 mm and weight of only 1 g allow integration into portable projects.

 

Specifications:

Operating voltage: 2.4 - 5.5 VDC

Interface: I2C

I2C address: 0x62

CO2 range: 0 - 40000 ppm

CO2 accuracy: 400 - 5000 ppm, ±40 ppm + 5% of reading

Humidity range: 0 - 100% RH

Humidity accuracy: ±9% RH

Temperature range: -10 - 60°C

Temperature accuracy: ±1.5°C

Normal mode consumption: 18 mA

Low-power mode consumption: 3.5 mA

Single-shot mode consumption: 0.5 mA

Dimensions: 21.6 x 13.4 mm

 

Pinout:

Pin number Pin name Pin description
1 GND Ground
2 VDD Power supply 2.4–5.5 VDC
3 SCL SCL, communication via I2C interface (requires 4.7 kΩ pull-up to VDD with Arduino)
4 SDA SDA, communication via I2C interface (requires 4.7 kΩ pull-up to VDD with Arduino)

 

Usage:

Power the module between 2.4 and 5.5 VDC and connect SCL and SDA to the microcontroller’s I2C interface. On Arduino Uno/Nano, SDA is A4 and SCL is A5. The two 4.7 kΩ pull-up resistors from each signal line to VDD, plus the 100 µF decoupling capacitor on the supply, must be installed.

In software, use the official Sensirion I2C SCD4x library, available from Library Manager in the Arduino IDE. The recommended startup sequence is to stop any remaining periodic measurement, then reinitialize and start periodic mode. The first valid value appears after about 5 seconds, and readings stabilize after a few minutes from power-up.

The ASC automatic calibration is enabled by default and assumes that the sensor is regularly exposed to fresh outdoor air, around 400 ppm, for at least one hour per day. In permanently occupied spaces, where this condition is not met, ASC must be disabled and replaced with a periodic manual calibration, otherwise the values will drift over time.

For battery-powered applications, single-shot mode reduces average consumption below 1 mA. If ASC is kept active in this mode, a measurement every about 5 minutes is recommended, the interval needed by the calibration algorithm to accumulate enough samples. The command to permanently save settings writes to EEPROM, which has a limited number of cycles, so it should be called only when changing the configuration, not in the main loop.

88154

Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.

Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.

Avertismente generale de siguranta:

Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.

Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.

Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.

Nu lasati produsul alimentat nesupravegheat in timpul testelor.

Produsul nu este jucarie si nu este destinat copiilor.

Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.

Identificare produs:

Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.

Producator / Importator / Distribuitor:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Website: www.sigmanortec.ro

Persoana responsabila in UE:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Documentatie si siguranta:

Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [email protected].

#include <Arduino.h>

#include <SensirionI2cScd4x.h>

#include <Wire.h>

#ifdef NO_ERROR

#undef NO_ERROR

#endif

#define NO_ERROR 0

SensirionI2cScd4x sensor;

static char errorMessage[64];

static int16_t error;

bool check(const char* ctx) {

  if (error == NO_ERROR) {

    Serial.print(ctx); Serial.println(": OK");

    return true;

  }

  Serial.print(ctx); Serial.print(": cod ");

  Serial.print(error); Serial.print(" - ");

  errorToString(error, errorMessage, sizeof errorMessage);

  Serial.println(errorMessage);

  return false;

}

void setup() {

  Serial.begin(115200);

  while (!Serial) delay(100);

  Wire.begin();

  Wire.setClock(100000);

  sensor.begin(Wire, SCD41_I2C_ADDR_62);

  delay(30);

  // daca senzorul era deja in idle, comanda da eroare - e normal, o ignoram

  sensor.stopPeriodicMeasurement();

  delay(500);

  error = sensor.reinit();

  check("reinit");

  delay(30);

  uint64_t sn = 0;

  error = sensor.getSerialNumber(sn);

  if (check("getSerialNumber")) {

    Serial.print("  SN: ");

    Serial.print((uint32_t)(sn >> 32), HEX);

    Serial.println((uint32_t)sn, HEX);

  }

  error = sensor.startPeriodicMeasurement();

  check("startPeriodicMeasurement");

  Serial.println("Astept prima valoare (~5s)...");

}

void loop() {

  bool ready = false;

  uint16_t co2 = 0;

  float temp = 0.0f, hum = 0.0f;

  delay(1000);

  error = sensor.getDataReadyStatus(ready);

  if (!check("getDataReadyStatus")) return;

  if (!ready) return;

  error = sensor.readMeasurement(co2, temp, hum);

  if (!check("readMeasurement")) return;

  if (co2 == 0) { Serial.println("Sample invalid"); return; }

  Serial.print("CO2: "); Serial.print(co2); Serial.print(" ppm  ");

  Serial.print("T: "); Serial.print(temp, 1); Serial.print(" C  ");

  Serial.print("RH: "); Serial.print(hum, 1); Serial.println(" %");

}