電池駆動のワイヤレスCO2センサ AMS CCS811+BME280+ESP8266

二酸化炭素や有機ガスなどによる室内の空気環境状態を測定可能なガスセンサ ams製 CCS811を使って、乾電池駆動が可能なワイヤレスCO2センサを製作しました。
ガスセンサの課題は、消費電力が大きいことです。例えば、一般的に用いられているガスセンサだと、5V×100mA(0.5W)くらいの電力を消費します。一方、単4電池で3か月間の動作をさせようとすると、ガスセンサの消費電流を0.1mA以下にする必要があります。
紫色の基板の下側がams製CCS188、上側は温度・湿度・気圧の測定を行うBME280。BME280は、CCS881の測定値を補正するために使用する。奥にある金属シールドに覆われた部品はWi-FiモジュールESP-WROOM-02(内部にESP8266を内蔵)。
ams製のCCS811は、モバイル機器へ実装可能な超小型と超低消費電力を測ったガスセンサです。測定時の消費電力は60mW程度ですが、測定間隔を広げることで、20mW以下での測定が可能です。
しかし、それでも乾電池で長期間の動作をさせることはできません。そこで、普段はCCS811を切っておき、測定時だけONにする間欠動作により長期間動作を実現してみました。ただし、もともと電源を入れたままの状態で使用するセンサになので、測定精度は低下します。

間欠動作方法

本ガスセンサに限らず、多くのガスセンサにはヒーターが内蔵されており、ヒーターの過熱のための消費電流とその加熱時間が課題となります。本センサにおいても、ONした直後はガスを検知することができず、徐々に感度が上昇します。
今回は、センサをONしてから測定を開始し、測定値の変化が5%以内となったときの値を測定結果とする方法を用いました。おおむね10秒以内に測定を完了し、次の測定まで電源を切った状態にすることが出来ます。また、Wi-Fi接続を開始する前に、センサの初期化を開始し、Wi-Fi接続処理中にもセンサを加熱するようにして、間欠駆動時間を短くしました。

ハードウェアの製作

回路はユニバーサル基板上に作成し、基板はタカチ製のプラスチックケースへ収容しました。窓のあるケースを使用し、収容したときに、温湿度・気圧センサBME280が外気に触れやすいように配慮しました。
窓の部分は通気性の良いフィルターなどで内部へ金属部品などが混入しないようにフタをしてください。
ケースの開口部からのぞいた様子。右側に温湿度・気圧センサBME280、左上にWi-FiモジュールESP-WROOM-02、基板の左側にあるのはLDOタイプのレギュレータ NJU7223F33(新日本無線)、中央にはESPモジュールをディープスリープから復帰させるためのEN信号用スイッチを配置した。
Wi-Fiモジュールを取り付ける前の基板の様子。左下の端子には、USBシリアル変換アダプタを取り付けることが出来る。写真は電池から電源を供給しているときの様子。
Wi-Fiモジュールを取り付けたときの様子。落下などでモジュールが外れると他の部品などに金属端子が接触し、事故につながることがあるので、ICソケットへ耐熱テープ(ポリイミド製)で固定した。
単4アルカリ乾電池×3本で動作させる。送信時間を1時間ごとにすることで、2か月くらいの動作が可能な見込み。単3だと容量が2倍になり、4か月くらいの動作が可能。(実力的には、もっと長く使える)

回路

ESP-WROOM-02のIO4(10番ピン)を各センサのI2CのSDAへ、IO5(14番ピン)をI2CのSCLへ接続してください。また、CCS811のWAK信号をESP-WROOM-02のIO2(7番ピン)へ、RST信号をIO0(8番ピン)へ接続する必要もあります。WAK信号は、省電力駆動のために使用します。RST信号は、ハードウェアエラー時の復帰用です。本CCS811センサはエラーが発生しやすいため、エラーを検知すると自動でリセットするようにしました。

ソフトウェアの製作

Arduino IDEを使用し、下記のスケッチをESP-WROOM-02へ書き込んで使用してください。ファイルは3つに分かれています。フォルダ「example27_env」に3つのファイルを保存し、Arduino IDEで「example27_env.ino」を開いて下さい。
保存場所(ファイルは3つ):
メインのスケッチ example27_env.ino:
CCS811用ドライバ ccs811.ino:
BMP280用ドライバ bme280.ino:
温度と湿度の測定結果をCCS811へ設定する必要があるので、setup関数内の始めに温度・湿度を測定します。もちろん、低消費電力で動かすために、BMP280についても、測定後すぐに電源をOFFにします。
Gitコマンドで取得すると、他のスケッチを含む全サンプルを一括でダウンロードすることが出来ます。以下の
ように入力してください。
$ cd esp/2_example/example27_env/

受信機

送信したデータは、同じESP-WROOM-02を使った液晶表示端末や、Raspberry Piで受信することが出来ます。受信機の詳しい製作方法は、トランジスタ技術2016年9月号、2017年3月号の特集に紹介させていだきました。ソースリストは下記を参照ください。
ESP-WROOM-02を使った液晶表示端末:
製作方法(CQ出版社):
最新チップESP32版:
Raspberry Pi用:
ご注意:
センサを始動してからの待ち時間が不十分な状態で値を取得しているので、本来の性能よりも精度が低くなっています。ガス漏れの検出や、誤作動によって健康や身体に影響を及ぼすような用途には、絶対にしないでください。
ボクにもわかるESPモジュール
by ボクにもわかる電子工作
https://bokunimo.net/