meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sensor:scd [2026/04/21 20:48] – created - external edit 127.0.0.1sensor:scd [2026/04/24 18:31] (current) vamsan
Line 6: Line 6:
 |< 100%>| |< 100%>|
 ^Feature^SCD30^SCD40^SCD41| ^Feature^SCD30^SCD40^SCD41|
 +^ |{{:sensor:scd30.png?100|SCD 30 Modul}}|-|{{:sensor:scd_41.png?100|SCD 41 Modul}}|
 ^Technology|NDIR (Dual-Channel)|Photoacoustic|Photoacoustic| ^Technology|NDIR (Dual-Channel)|Photoacoustic|Photoacoustic|
 ^Size|35 x 23 x 7 mm|10.1 x 10.1 x 6.5 mm|10.1 x 10.1 x 6.5 mm| ^Size|35 x 23 x 7 mm|10.1 x 10.1 x 6.5 mm|10.1 x 10.1 x 6.5 mm|
Line 85: Line 86:
 </code> </code>
  
 +===== SCD41 =====
 +{{ :sensor:scd_41.png?120|SCD41 Modul}}
 +The SCD41, developed by Sensirion, is a compact, highly precise sensor for measuring CO₂, temperature, and humidity. As the second generation of their optical CO² sensors, it employs photoacoustic NDIR (Non-Dispersive Infrared) technology. This approach enables the sensor to be much smaller than conventional CO₂ sensors while maintaining high accuracy, making it perfect for indoor air quality (IAQ) monitoring.
 +
 +**Key Features**
 +
 +  * 3-in-1 Sensing: Measures CO2 concentration, relative humidity, and temperature simultaneously.
 +  * Miniature Form Factor: Its extremely small size (10.1 x 10.1 x 6.5 mm³) enables easy integration into compact devices.
 +  * High Accuracy: Offers a precision of ±(40 ppm + 5% of reading) across the range 400 to 5,000 ppm.
 +  * Low Power Modes: Includes a "single-shot" mode that reduces average current consumption to <0.4 mA for battery-operated applications.
 +  * Standard Interface: Communicates via I2C, making it compatible with microcontrollers such as Arduino, ESP32, and Raspberry Pi. 
 +
 +**Technical Specifications**
 +
 +^Parameter^Range / Value^Accuracy (Typical)|
 +^CO² Concentration|400 – 5,000 ppm (up to 40,000 ppm output)|±(40 ppm + 5%)|
 +^Relative Humidity|0 – 100% RH|±6% RH|
 +^Temperature|-10°C to 60°C| +-0.8 °C (at 15-35°C)|
 +^Supply Voltage|**2.4V – 5.5V**|N/A|
 +^I²C Address|0x62|N/A|
 +
 +==== SCD41 Pinout ====
 +Most breakout boards use a standard 4-pin or 5-pin arrangement for easy connection to microcontrollers like Arduino or ESP32.
 +
 +{{ :sensor:scd_41.png?200|SCD41 Modul}}
 +^Pin Name^Type^Description|
 +^VIN / VCC|Power|Connect to (2.4V – 5.5V) (depending on your board's logic level).|
 +^GND|Ground|Common ground for power and logic.|
 +^SCL|I²C Clock|Serial clock line for I²C communication. Usually has a 10k pull-up.|
 +^SDA|I²C Data|Serial data line for I²C communication. Usually has a 10k pull-up.|
 +^3Vo|Output|(Adafruit boards only) 3.3V output from the onboard regulator.|
 +
 +==== SCD41 Arduino example ====
 +Search for "Sensirion I2C SCD4x" and install it. The example below initialises the sensor and outputs CO², Temperature, and Humidity readings every 5 seconds. 
 +
 +<code c>
 +#include <Arduino.h>
 +#include <SensirionI2cScd4x.h>
 +#include <Wire.h>
 +
 +SensirionI2cScd4x scd4x;
 +
 +void setup() {
 +    Serial.begin(115200);
 +    while (!Serial); // Wait for serial monitor
 +
 +    Wire.begin();
 +    scd4x.begin(Wire);
 +
 +    // Stop potentially running measurement
 +    uint16_t error = scd4x.stopPeriodicMeasurement();
 +    if (error) {
 +        Serial.print("Error stopping measurement: ");
 +        Serial.println(error);
 +    }
 +
 +    // Start periodic measurement (updates every 5 seconds)
 +    error = scd4x.startPeriodicMeasurement();
 +    if (error) {
 +        Serial.print("Error starting measurement: ");
 +        Serial.println(error);
 +    }
 +
 +    Serial.println("Waiting for first measurement... (5 sec)");
 +}
 +
 +void loop() {
 +    uint16_t co2 = 0;
 +    float temperature = 0.0f;
 +    float humidity = 0.0f;
 +    bool dataReady = false;
 +
 +    // Check if data is ready to be read
 +    uint16_t error = scd4x.getDataReadyStatus(dataReady);
 +    
 +    if (dataReady) {
 +        error = scd4x.readMeasurement(co2, temperature, humidity);
 +        if (!error) {
 +            Serial.print("CO2: ");
 +            Serial.print(co2);
 +            Serial.print(" ppm\t");
 +            Serial.print("Temp: ");
 +            Serial.print(temperature);
 +            Serial.print(" °C\t");
 +            Serial.print("Humidity: ");
 +            Serial.print(humidity);
 +            Serial.println(" %");
 +        }
 +    }
 +    delay(1000); // Check status every second
 +}
 +</code>
 +
 +**Key Functions to Note**
 +
 +  * **startPeriodicMeasurement():** Sets the sensor to measure every 5 seconds.
 +  * **getDataReadyStatus():** Use this to avoid reading "stale" data until the next 5-second interval.
 +  * **measureSingleShot():** Available only on the SCD41 (not the SCD40). It allows manual measurement to save power, making it ideal for battery-powered projects. 
 ===== Communication topics on lamaPLC ===== ===== Communication topics on lamaPLC =====
 {{topic>communication}} {{topic>communication}}
  
-{{tag>BMP280 AHT20 temperature humidity pressure sensor arduino oled SH1106 arduino_code}}+{{tag>SCD30 SCD40 SCD41 IAQ NDIR sensor I2C arduino_code}}
  
 This page has been accessed for: Today: {{counter|today}}, Until now: {{counter|total}} This page has been accessed for: Today: {{counter|today}}, Until now: {{counter|total}}