UNIT CO2

SKU:U103

説明

UNIT CO2は、周囲の空気のCO2 PPM(100万分の1)組成を知ることができる光音響式二酸化炭素(CO2)ユニットです。センサは Sensirion 社の SCD40 を内蔵し、バックコンバータ回路で電力を供給し、I2C 通信を行います。測定範囲は400~2000ppm、精度は±(50ppm+読みの5%)です。さらに、温度と湿度の測定もサポートしています。環境センシング、科学実験、空気品質や換気の研究などに最適です。

製品の特長

  • CO2濃度検知
  • 温度・湿度測定機能
  • I2C通信(Add:0x62)
  • 5V -> 3.3V 降圧コンバータ内蔵
  • 2x ブリックホール
  • HY2.0-4Pインターフェース

含まれるもの

  • 1x UNIT-CO2
  • 1x HY2.0-4P ケーブル (20CM)

アプリケーション

  • 環境センシング
  • 空気の質
  • 換気調査

仕様

リソース パラメータ
CO2測定範囲 400~2000 ppm
CO2サンプリング精度 ±(50 ppm + 読み値の5%)
温度範囲 -10~60 °C
湿度範囲 0~95 %RH
通信プロトコル I2C: 0x62
製品重量 7.54g
梱包重量 13.13g
製品寸法 48mm×24mm×16mm
梱包サイズ 134mm×61mm×16.3mm
ハウジング材質 プラスチック(PC)

PinMap

CO2 Unit SCL SDA 5V GND
M5Core(PORT A) GPIO22 GPIO21 5V GND
M5Core2(PORT A) GPIO22 GPIO21 5V GND
M5Atom(PORT A) GPIO32 GPIO26 5V GND
M5StickC/Plus(PORT A) GPIO33 GPIO32 5V GND
M5Station(PORT A1,A2) GPIO33 GPIO32 5V GND

回路図

関連リンク

Example

#include <Arduino.h>
#include <Wire.h>

// SCD4x
const int16_t SCD_ADDRESS = 0x62;

void setup() {
    // check in your settings that the right speed is selected
    Serial.begin(115200);
    // wait for serial connection from PC
    // comment the following line if you'd like the output
    // without waiting for the interface being ready
    while (!Serial)
        ;

    // output format
    Serial.println("CO2(ppm)\tTemperature(degC)\tRelativeHumidity(percent)");

    // init I2C
    Wire.begin();

    // wait until sensors are ready, > 1000 ms according to datasheet
    delay(1000);

    // start scd measurement in periodic mode, will update every 5 s
    Wire.beginTransmission(SCD_ADDRESS);
    Wire.write(0x21);
    Wire.write(0xb1);
    Wire.endTransmission();

    // wait for first measurement to be finished
    delay(5000);
}

void loop() {
    float co2, temperature, humidity;
    uint8_t data[12], counter;

    // send read data command
    Wire.beginTransmission(SCD_ADDRESS);
    Wire.write(0xec);
    Wire.write(0x05);
    Wire.endTransmission();

    // read measurement data: 2 bytes co2, 1 byte CRC,
    // 2 bytes T, 1 byte CRC, 2 bytes RH, 1 byte CRC,
    // 2 bytes sensor status, 1 byte CRC
    // stop reading after 12 bytes (not used)
    // other data like  ASC not included
    Wire.requestFrom(SCD_ADDRESS, 12);
    counter = 0;
    while (Wire.available()) {
        data[counter++] = Wire.read();
    }

    // floating point conversion according to datasheet
    co2 = (float)((uint16_t)data[0] << 8 | data[1]);
    // convert T in degC
    temperature = -45 + 175 * (float)((uint16_t)data[3] << 8 | data[4]) / 65536;
    // convert RH in %
    humidity = 100 * (float)((uint16_t)data[6] << 8 | data[7]) / 65536;

    Serial.print(co2);
    Serial.print("\t");
    Serial.print(temperature);
    Serial.print("\t");
    Serial.print(humidity);
    Serial.println();

    // wait 5 s for next measurement
    delay(5000);
}

Arduino

UIFlow