M5Stack TVOC/eCO2 ガスセンサユニット(SGP30) U088

概要

M5stack社のガスセンサユニットの紹介です。主にCO2濃度を測定するときに利用することが多いセンサになります。

商品

上記で購入できます。私はDigi-Keyから買いました。

小さいタイプのユニットになります。端子は赤いのでI2C接続ですね。利用しているセンサはSGP30になります。

パッケージと同じ中身とケーブルが付属しています。

裏側です。

SGP30について

上記がデータシートになります。気をつけないと行けないのはCO2センサではなく、eCO2センサとなります。このeはequivalentで同等を意味しています。つまりCO2センサ同等に使えるというものです。これは実際にCO2濃度を測定しているのではなく、ガスセンサの値からCO2濃度を推測しています。

どのように使うかによるのですが、オナラなどCO2以外のガスにも反応をしてしまいます。空気が汚れているとの判定はできますが、厳密のCO2の濃度を測定しているわけではないので注意してください。

とはいえ、多くの場合数値が悪化した場合には換気が必要ですので、換気の目安として利用するのは非常に妥当なセンサだと思います。純粋なCO2センサは非常に高価なので、なかなか使うのは難しいです。

UIFlowでの使い方

UIFlowでユニットを追加してみたところ、7個の値が取得可能でした。

とりあえずラベルを7個おいてすべての値を見てみました。

項目
iaq baseline[0, 0]
TVOC0
baseline TVOC0
eCO2400
baseline eCO20
H213258
Ethanol1703

上記のような値になりました。

値が取れていない項目があったので、起動直後は数値が取れないようでした。上記のように更新するようにして、起動してから少し時間が経過するとすべての値が取得可能でした。

iaq(Indoor Air Quality)は室内空気質と呼ばれるガス成分量みたいです。TVOCは総揮発性有機化合物量で、シックハウス症候群とかの原因になるやつみたいですね。eCO2はCO2濃度を推測した値。H2は水素、Ethanolはアルコールの一種であるエタノールですね。

Arduinoでの使い方

上記にサンプルがありました。Adafruit_SGP30ライブラリを利用していますね。ただし、GitHubのものを比べたところ、ちょっと違うバージョンが入っていました。この手のがちょっとM5Stackは困るんですよね、、、

#include "Adafruit_SGP30.h"

Adafruit_SGP30 sgp;
int i = 15;
long last_millis = 0;

void setup() {
  Serial.begin(115200);
  delay(1000);

  Wire.begin(32, 33); // M5StickC

  Serial.println("SGP30 test");
  if (!sgp.begin()) {
    Serial.println("Sensor not found");
    while (1);
  }

  Serial.print("Found SGP30 serial #");
  Serial.print(sgp.serialnumber[0], HEX);
  Serial.print(sgp.serialnumber[1], HEX);
  Serial.println(sgp.serialnumber[2], HEX);
}

void loop() {
  if (! sgp.IAQmeasure()) {
    Serial.println("Measurement failed");
    return;
  }
  Serial.print("TVOC "); Serial.print(sgp.TVOC); Serial.print(" ppb\t");
  Serial.print("eCO2 "); Serial.print(sgp.eCO2); Serial.println(" ppm");

  delay(1000);
}

ライブラリマネージャからAdafruit_SGP30をインストールして、上記のコードで動作確認しました。

TVOC 0 ppb	eCO2 400 ppm
TVOC 8 ppb	eCO2 401 ppm
TVOC 4 ppb	eCO2 400 ppm
TVOC 6 ppb	eCO2 405 ppm
TVOC 5 ppb	eCO2 414 ppm
TVOC 176 ppb	eCO2 6292 ppm
TVOC 470 ppb	eCO2 9842 ppm
TVOC 658 ppb	eCO2 4673 ppm
TVOC 708 ppb	eCO2 2761 ppm
TVOC 658 ppb	eCO2 1742 ppm
TVOC 576 ppb	eCO2 1275 ppm
TVOC 521 ppb	eCO2 948 ppm
TVOC 456 ppb	eCO2 790 ppm

上記のような出力がでて、息を吹きかけたところで数値が急にあがっていることがわかると思います。

まとめ

ちょっと長期に動かして数値を確認しないといけないはずです。また、このセンサーは最初に屋外などの空気がきれいと思われる環境に置くことでキャリブレーションが行われるはずです。一番キレイだった値を内部で覚えていて、そこからの悪化を測定している動きのようです。なので複数のセンサを並べてもキャリブレーション結果により結果がオフセットされている形になるようです。

このセンサに関してはeCO2ということを念頭に、空気の汚れ具合を簡易的に測定するものになります。どれぐらいの値で換気をしたほうがいいかはキャリブレーション結果により変わってきますのでそこは注意してください。

コメント

タイトルとURLをコピーしました