M5Stack CO2 unitで二酸化炭素の濃度を測定しMH-Z19Bと比較してみました

M5STACK

はじめに

ここ数年、COVID-19の感染拡大防止のために人の密集度合、換気状態を可視化する目的に多くのCO2測定器が発売されていることは皆さんご存じの通りです。

当ブログでも過去にBosh製BME680ガスセンサーによるeCO2測定の考察で紹介したeCO2測定や精度の高いCO2濃度測定が可能であるNDIR方式のMH-Z19Bを使用して室内空気質測定器を作成したことがあります。

今回は各種センサーで有名なSensirion社のSCD40を採用しているM5Stack社のCO2 UnitをM5stickCで動かしてみました。

CO2ユニット:https://www.switch-science.com/products/8496
M5StickC:https://www.switch-science.com/products/6350

あるいはアマゾンから少し安価な製品を購入しても良いかもしれません。

測定用プログラムの準備

M5stackでCO2ユニットを使用するにはビジュアルプログラミングのUiFlowやArduinoで動作させることができます。今回はM5StackのオフィシャルサイトM5STACK UNIT CO2を参考にしてArduinoで動かしてみました。

①オフィシャルサイトの下方にある今回使用するM5stickC用スケッチのリンクをクリックするとGitHubにあるサンプルプログラムを見ることができます。

②サンプルプログラムをCopy raw contentsをクリックしてプログラムをクリップボードにコピーします。


③Arduino IDEを開いて新規ファイルを作成してコピーしたスケッチをペーストしましょう。


④コンパイルする前に、CO2センサー用の2つのライブラリーをインクルードしておく必要があります。
・以下のgithubからライブラリーをダウンロードしArduinoライブラリーにインクルードしておきます。このライブラリーが無いとコンパイルできませんのでご注意ください。

1.[Sensirion I2C SCD4x]:(https://github.com/Sensirion/arduino-i2c-scd4x)
2. [Sensirion Core]:(https://github.com/Sensirion/arduino-core)

・ライブラリーのインクルード手順は以下となります。
 ダウンロードした2つのライブラリーそれぞれについて同じ作業を行います。

・スケッチー>ライブラリーをインクルードー>.ZIP形式のライブラリーをインクルードー>ダウンロードしたファイルを選択。

・サンプルスケッチをコンパイルしM5stickCに書き込みます。

測定結果

・サンプルプログラムではCO2濃度、温度、湿度の3つが表示されます。

・息を吹きかけてみました。CO2濃度がどうなるか動画で確認下さい。

しばらく放置してみたところ、計測範囲400-2000ppmを逸脱する異常な値を示しています!これはセンサーの不具合でしょうか?

そんなことはありません。簡易なサンプルプログラムため画面の表示がおかしいだけで、1000ppm以上になった際に、一の位が消えていないだけの様です。つまり上の画面の数値は本当は925ppmですね。

以上で簡単にですが動作チェックをしてみました。これからもまだまだ変異株の出現も考えられ3密の回避は必要と思いますし、また運転中の眠気対策として換気の目安をはかる為にも精度が良くて使いやすいCO2ユニットを使い車載用のCO2チェッカーとして標準装備にしても有用と思います。

考察

MH-Z19Bとの比較

比較に際して測定条件を合わせるために、以前より設置している空気質測定器にCO2ユニットを追加接続して測定値を比較してみました。測定値の時間的な変化はどちらのセンサーも同じと言って良いほど相似しています。つまりCO2雰囲気の傾向はどちらのセンサーも同じように計測出来ています。

上図の通り、今回使用した2つのセンサーの測定値としては、私が使用した物の個体差なのか、センサーの測定原理の違いなのかSCD40のほうが高い値を示していました。

例えば12月16日23時34分の絶対値は300ppmほどの差があります。2つのセンサーで測定原理が全く同じ方式ではないためとも考えられますが、同じ種類のデバイスでも個体差によって誤差が発生することもしばしば見られることなので、絶対値の測定は難しいものです。

おわりに

その後三週間ほど継続して測定データを確認しましたが、2つのセンサー間の測定差は同様に300ppm程度でした。この差を無くすには、両センサーを同一環境で強制キャリブレーションすることが有効と思われますが、正確な絶対値を測定するには校正環境の構築が必要ですのでここでは実施しませんでした。

コメント

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