タバコの受動喫煙対策で煙の検出用のI2C接続のタイプのTVOCセンサーのCCS811を使ってみた。
前に、I2C接続のタイプのTVOCセンサーを手に入れたというblogエントリーを書いたが、その続きだ。
CCS811もBME680やSGP30と同様、I2C接続タイプのTVOC(VOC)センサーだ。
TVOCとCO2を測定することができる。
CCS811を搭載したCJMCU-811という品物をAmazonで購入した。
DeeploveUU CJMCU-811 CCS811一酸化炭素CO VOC大気質数値ガスセンサ(Amazon)
このセンサーモジュールは、他のCJMCU680(BME680)やCJMCU-30(SGP30)みたいに電源回路やI2Cバス電圧変換回路を搭載していない。
最低限のパスコンとかモード設定用の抵抗とかI2Cバスのプルアップ抵抗くらいしか載っていない単純なブレークアウト基板だ。
3.3Vで動作するので、5Vで動作するArduinoマイコンボードなどで使うことができない。
なので、3.3Vで動作するArduino互換マイコンボードを使うか、あるいはI2Cバス電圧変換回路を使用しなければならない。
CJMCU-680(BME680)のblogエントリで作っていたArduino用の基板と同じように作ればよい。
ただ、自分の場合、blogを書く順番としてCCS811が最後になってしまったのだが、実は一番最初にCCS811を使い始めて回路を作っていたので、まだBME680などに使うI2Cバス電圧変換の基板を作っていない時だった。
まず、Arduino互換で、電源を5Vか3.3Vなのかを切り替えできる互換機を入手した。
(これならI2Cバス電圧変換をしなくてもCCS811を動かすことができるからだ。)
そして、そのままCCS811をI2Cで素直に繋ぐ回路をユニバーサル基板で配線を半田付けして作成した。
このとき注意する点としては、WAKというピンをLowにする必要があるので、WAKとGNDとを接続しておくということだ。
ADDピンについてはブレークアウト基板上に抵抗が載っていて既にLowに落とす処理がされているので特になにもしなくてもよい。
Arduinoマイコンボードのソフトについては簡単で、AdafruitのCCS811ライブラリというのをArduino IDEのライブラリ管理からインストールして、Example1_BasicReadingsというexampleソースコードのスケッチを動かした。
CO2の測定値と、tVOCの測定値が表示された。(millisというのはミリセコンド単位の経過時間)
自分はCrowtailのMP503センサーモジュール基板を比較用の基準に使っていて、CCS811と同時に動かして比較してみた。
数日動かして、ログ(記録)を取ってみた。そのうちのある1日の0時からの24時間分を取り出した。
系列1は、Crowtail MP503モジュールの計測値で、汚染に反応して数値が上昇している。
系列2は、CCS811の出力値を10で割った数値をプロットした。
CCS811もMP503と同じような出力が出ている。
感度は前に試したSGP30よりもCCS811の方がちょっと低いのだが、十分実用的な高感度だ。
SGP30と似たような感じで、原点オフセットが合っているようだ。
というか、MP503のデータとよく見比べると、波形が完全には合っていなくてずれている時間がある。(要検証。)