M5StickCでCO2濃度を測定する!

ガジェット・家電・グッズ
DSC_0894
この記事は約18分で読めます。
スポンサーリンク
スポンサーリンク

やだぁ!? ここ、空気悪くな~い!?

・・・いや、人間関係が険悪とかでは無くて、部屋の空気の事でして・・・頭痛くなったり眠くなったりとかするんですよ~。

空気中のCO2(二酸化炭素)濃度によって、眠気や吐き気などの症状が出ることもあるらしいので、気のせい(人間関係のせい?)ではない事を証明すべく、CO2濃度を測定する装置を作ってみました。

 

と言う事で、満を持して、BOOTH販売商品の第二弾「Co2 HAT」の登場です!!

 

第一弾「Wi-SUN HAT」はコチラ↓。

M5StickCで家庭用スマートメーターをハックする!
皆さんは、うっかりブレーカー落とした経験ありませんか? 「ドライヤー使う前に今の電気使用量が分かれば良いのに!」とか思ったことないですか? 最近は、その希望が簡単に叶うって知ってますか!? と言う事で、今回は、「スマートメーターから電力状況を取得して表示する」ことが出来る機械を作ってみたお話です。 もうブレーカー落とさずに済むよん♪

 

前説:空気中のCO2濃度が高いのは良くない!

厚生労働省の建築物環境衛生管理基準に二酸化炭素の含有率の項目が有り、1000ppm以下が屋内の基準となっています。(ppmは大気中の分子100万個中にある対象物質の個数を表す単位)

 

で、空気悪くない素の環境(全大気平均二酸化炭素濃度)はどんな数値かと言うと、2019年時点の日本の気象庁の観測点における二酸化炭素濃度はおおよそ420ppm辺りの模様。

 

ちなみに、この「全大気平均二酸化炭素濃度」には季節による変動もありますが、概ね右肩上がりでずっと上昇してる様で、環境省の報道発表で「2015年に初めて400ppmを超えた」とあり、上昇率見てると空恐ろしくなります。(工業化(1750年)以前から46%も上昇してるそうです!!)

 

つまり、ちゃんと換気された環境なら、二酸化炭素濃度は400~500ppm程度な筈で、1000ppmくらいが換気目安ということですね。

 

尚、二酸化炭素濃度による人体への影響は色々ある様ですが、眠気以外にも、同人誌即売会でうっかり買い過ぎちゃう!とかも、因果関係がありそうですね。

 

どうやってCO2濃度を測る?

CO2センサとしてよく見るのは、総揮発性有機化合物(TVOC)値から算出される二酸化炭素相当物(eCO2)を計測するタイプです。(MOXガスセンサーと言うらしい)

このタイプは比較的低価格で手に入るので、私も「CCS811」というセンサを入手して試してみたのですが、測定してる元がTVOC値なせいか、CO2以外にも反応してしまって期待する様な結果を得られませんでした。

おならはどうでもええんやで・・・知りとうないんやで・・・(T_T)

 

私はCO2センサに絶望した!!・・・と嘆き悲しんでたところ、光学式(NDIR)のセンサーの存在を知りました。

CO2には分子構造から赤外線領域に特徴的な吸収スペクトルがあるらしく、それを応用してCO2濃度を測定する方式だそうで、これは期待できそう!!

光学式だけに高額かと思いきや、「MH-Z19B」というセンサーだと比較的手ごろな価格で手に入りそうです。

それに、比較的大きな商品の多い光学式センサの中ではまだマシなサイズ感。

これならM5StickCと組み合わせても頭でっかちにならずに済みそう!

 

ちなみに、インターフェース誌の2019年9月号でこのNDIR式センサの構造が分かりやすく紹介されていますので、より詳しく知りたい方は参考にして下さい。

この号は農業&自然センシング特集で、光合成の元となる二酸化炭素濃度を測定する事例で紹介されています。(「MH-Z19B」も出てきますのでおススメ!)

 

MOXガスセンサー式とNDIR式センサーの測定結果を比較されてるサイトもありました。

CO2センサー、空気品質センサーの測定値を比較する – Ambient

って、Ambientさんだったよ!! 流石です!

 

という事で、「Co2 HAT」で採用するCO2センサーは、NDIR式「MH-Z19B」に決定!!

 

必要なブツ

以下に必要な機器類を示します。

「M5StickC」(必須)

皆さん、持ってますよね?

持って無い人は、この機会にゲットしましょう。

 

「Co2 HATキット」(必須)

当ブログ主がBOOTHで販売している商品です。

次項の「MH-Z19B」を組み合わせることで「Co2 HAT」となります。(「MH-Z19B」は同梱されません

M5StickC用「Co2 HAT」キット(※Co2センサ別売り) - きっと何かに役立つでしょ!? - BOOTH
「M5StickC」用の「Co2 HAT」キットです。 NDIR式CO2センサーの「MH-Z19B」を使って、CO2濃度の測定をすることが出来ます。(本キットには「MH-Z19B」は付属しません) 1枚目写真は、キット組み立て後の使用中のイメージです。 本キットに含まれるのは2・3枚目の部品になります。 CO2センサー...【続きを読む】

購入時に「BOOST↑」して下さると、この詳細ガイドを書いた甲斐があるので、大変嬉しいです!

よろしくお願いしま~す!m(__)m

尚、このキットは「MH-Z19B」の取り付けの際に、半田付け作業が必要となっております。

 

CO2センサ「MH-Z19B」(必須)

NDIR式のCO2センサ「MH-Z19B」が必要です。

 

WiFi環境(オプション)

当然ありますよね!?

無い人は・・・Ambientへのデーター送信が出来ないので、CO2濃度の時間変化をグラフで見ることは出来ないです。 M5StickCにCO2濃度(ppm)が表示されるので、それを見て楽しみましょう。

 

注意事項

当然ですが、全ての環境で動作を保証するものではありません。各自の判断で自己責任としてご利用願います。

 

CO2センサ「MH-Z19B」から出力される値が正しいという保証は当方では出来ません。詳しくはセンサーメーカーのマニュアルをご参照下さい。

 

作業の大まかな流れ

公開しているサンプルプログラムを使う場合は、以下のステップで進めます。

 

  1. 「Co2 HAT」を組み立てる(要半田付け)
  2. 「M5StickC」のファームを更新する
  3. 「VS Code」をインストールし「M5StickC」を接続する
  4. 「Ambient」に登録する
  5. 必要なファイルを「M5StickC」へ転送する
  6. グラフを確認する

 

作業はコレだけです♪(半田付け苦手でなければ、実質一時間と掛からないでしょう)

 

では、早速始めましょう!

 

「Co2 HAT」を組み立てる

まずは届いたブツを確認して下さい。半完成品の「Co2 HAT」が入っています。

 

ケースは3Dプリント品なので、若干のバリ・荒れなどが御座います。使用上の問題はありませんので、悪しからずご了承願います。

 

保護カバーを真直ぐに引き抜いて外して下さい。

 

ピンヘッダーとM5StickCへの引っ掛け部分(下記の赤矢印)は強い力を加えると折れてしまいますので、気を付けて取り扱って下さい。

 

裏面のネジを2本外し、分解します。

 

上カバー、下カバー、「Co2 HAT」基板、ネジ2本(と保護カバー)に分かれました。

 

「MH-Z19B」の取り付け(半田付け)

別途ご用意頂いてる「MH-Z19B」を「Co2 HAT」基板に半田付けします。

 

「Co2 HAT」基板は手半田実装なので、若干見栄えは悪いかも知れませんが、機能上は問題ありませんので、ご容赦下さい。

 

まず、「Co2 HAT」基板に「MH-Z19B」を真直ぐに挿し込みます。

 

「MH-Z19B」の右の白いコネクタが不要な方は、半田付けの前に折って除去した方が、以降の半田付け作業がやり易いです。(折る場合は「MH-Z19B」の他の部分が傷付かない様に気を付けて作業しましょう)
半田付けの際は「MH-Z19B」が浮かない様に気を付けつつ作業しましょう。(浮いてしまうとケースに収まらない可能性があります)
半田付けの際に「MH-Z19B」のケースを溶かさない様に気を付けましょう。(金色のカバーはプラスチックっぽいので、要注意!)

 

半田付けするのは、「MH-Z19B」の両側のピン(3ピン&4ピン)です。

・・・写真の例は、かなりイモ半田ですが、気にしない、気にしない!(^_^;)

尚、両側とも1ピン抜けておりますが、「Co2 HAT」基板上でパターン領域を確保する為の工夫ですので、この状態で正常です。

 

半田付け後に大きく浮いてないか確認しましょう。

左側が少し浮いてしまったけど、これくらいならケースに収まるのでOK!

 

ケースの組み立て

半田付けが完了したら、続いてケースを組み立てます。

 

下カバーに「Co2 HAT」基板を載せます。

 

続いて、上カバーを上から被せます。

写真↓の様に、左側を先に入れつつ、出来るだけ真直ぐ被せるとやり易いです。

 

すると、左側が若干浮くので、上から指で軽く押さえて嵌め合わせましょう。

 

横からみて、隙間が殆ど無い様に被さっていればOKです。

 

裏返して、最初に外したネジを元の様に締めます。

 

以上で、「Co2 HAT」の組み立て完了です!!

 

「Co2 HAT」を「M5StickC」へ装着する

「M5StickC」に装着する場合は、横から真直ぐに挿し込んでください。

 

ピンヘッダーだけの保持ではなく、液晶端への引っ掛け部分(下記赤矢印)があることで、多少はグラ付き難くはなってます。

 

ただ、あくまで気休め的な機構なので、ちゃんと固定させたい場合は、ひっつき虫などを活用して下さい。

「ひっつき虫」で固定させるのは、次項以降のプログラムの動作テストが終わってからにしましょう。

 

HATの付け外しは、必ず「M5StickC」の電源がOFFの状態で行って下さい

 

「M5StickC」は電源OFFでも5V系電源出力が出っ放しになる仕様なので、使用しない場合は、出来るだけ「Co2 HAT」を取り外しておきましょう。(バッテリー過放電対策としても外しておいた方が安心です)

 

「M5StickC」のファームを更新する

M5Stack公式のクイックスタートを参考にして、「WiFiセッティング」まで作業を進めて下さい。

 

最初のM5Burnerのダウンロードリンクが404 Not Foundになってますが、メゲちゃダメです。

右上の「SOFTWARE」の「Downloads」で真のダウンロードページに遷移できます。

(いい加減リンク直そうぜ >M5Stackさん)

 

尚、「M5StickC」へ書込むファイルは出来るだけ最新が望ましいです。(1.3.4β以降は必須)

今回のプログラムは「1.4.1-beta」で試しております。

 

ということで、クイックスタートを見つつ、WiFi接続までとっとと済ませちゃって下さい。

 

「VS Code」をインストールし「M5StickC」を接続する

「M5StickC」へMicroPythonプログラムを転送する方法は色々ありますが、今回は、最近流行りの統合開発環境「Visual Studio Code(VS Code)」を使ってみます。

無料で使えますので、「VS Code」初めてという方もぜひ試してみてください。

今回は細かい所まで使いません。幾つかボタンを押すだけなので、恐れずにチャレンジしてみてください。
(細かいところは追々学べば良いと思います。つか、私も分からないので誰か教えて・・・)

 

「VS Code」をインストールする

こちらからお使いのPC環境に合った「VS Code」をダウンロードしインストールしましょう。

(私はWindowsユーザーなので「User Installer 64bit」を選択しました)

 

M5Stack公式のVS Code機能拡張をインストールする

「VS Code」が起動したら、下記の赤矢印のExtensionsボタンを押します。(機能拡張ボタン)

現れた機能拡張エリアの「Marketplaceで機能拡張を検索する」の場所に「m5stack」を入力し、リスト上のM5Stack社公式の機能拡張「vscode-m5stack-mpy」を選択してインストールします。

 

「M5StickC」をPCに接続し、COMポート番号を確認する

「M5StickC」をPCに繋ぐ前に「USB接続モード」へ遷移させる必要があります。

まず、「M5StickC」の「Power Button」を6秒長押しして電源OFF。続いて「Button A」を押しながら「Power Button」を押して起動します。

すると、モード選択の画面になるので、「Button B」を2度押して「Setup」を選択し、「Button A」を押して決定。

次に、Cloud Mode(UiFlow) / USB Mode / WiFi Setting を選ぶ画面になるので、「Button B」を1度押して「USB Mode」を選択し、「Button A」を押して決定。

これでUSB接続モードになりました。

 

実は、最初、モード選択が分からなくて困りました・・・この辺の情報少なすぎるよ!!

と言う事で、補足情報として躓いた一連呟きを載せておきます。(^_^;)

ご参考まで。

 

続いて、USBケーブルでPCへ繋ぎます。

「M5StickC」を繋いだ際にPCが認識したCOMポート番号をデバイスマネージャー等で控えます。

(公式クイックスタートのファーム更新の際と同じです)

私の場合は「COM9」で認識してました。

 

「VS Code」で「M5StickC」を繋ぐ

「VS Code」画面左下の「Add M5Stack」をクリック。

 

上の方に現れたCOMポートリストで、先程控えたCOMポート番号をチェックし「OK」をクリック。

 

次に「VS Code」の左上のエクスプローラーボタンでエクスプローラーを開きます。

 

エクスプローラーウィンドウ内の「M5STACK DEVICE」を選択すると、先程チェックしたCOMポート番号が現れます。

 

このCOMポートを選択すると、「M5StickC」の中のファイルリストが見える様になっている筈です。

 

はい。見えましたね。

これで「VS Code」で「M5StickC」にプログラムを流し込む準備が整いました!

 

リストが現れない場合は下記をご確認ください。

PC上で認識されてる「M5StickC」のCOMポート番号が合ってるか?
「M5StickC」が「USB接続モード」になっているか?

それでもダメなら一度USBケーブルを抜き差しし、「M5StickC」を電源OFF(電源ボタン6秒長押し)して再起動させるなどを試してみてください。

 

ここまで進んだところで、一旦「VS Code」はそのまま置きます。(終了させる必要はありません)

 

「Ambient」に登録する

Ambient」とはIoTデーターの可視化サービスです。

デバイスで取得したデーターをネットワーク越しにAmbientサーバーに投げるだけで、後はAmbientサーバー上で簡単にグラフにしてくれます。

無料枠だと制限がありますが、気圧グラフくらいは問題無く作れるので、今回はこのサービスを活用させて頂きます。

無料でこんな素敵なサービス使わせてくれるなんて、太っ腹や!!

 

まずは、ユーザー登録(無料)を行いましょう。

ログイン後、「Myチャネル」の左下の「チャネルを作る」を選択し、チャネルを1個作ります。

新たに生まれたチャネル名の「チャネルID」と「ライトキー」をそれぞれ控えます。(※「リードキー」は今回は使いません)

 

必要なファイルを親機「M5StickC」へ転送する

必要なファイルを用意する

サンプルプログラムはGitHubに置いてありますので、GitHubのリンクより、必要なファイルを取得しましょう。

「Clone or download」のDownload ZIPにて、ZIPファイルがダウンロードされますので、任意の場所で解凍しておきましょう。

他に必要なファイルは、GitHubのREADMEに記載してありますので、そちらをご参照下さい。

 

続いて、「ntitime.py」ライブラリを日本時間補正用に修正して頂く必要があります。

※修正内容については、先のGitHubのREADMEにて説明しておりますので、そちらをご参照下さい。

 

ライブラリと設定ファイルを「M5StickC」へ転送する

続いて、「Ambientライブラリ「ambient.py」、NTP時刻補正ライブラリ「ntptime.py」、設定ファイル「co2_set.txt」をアップロード(転送)します。

 

「VS Code」上で、「M5StickC」のCOMポート番号のファイルリスト右上の「upload」ボタンをクリックし、先程ダウンロードしたファイル群から各ファイルを選択して「M5StickC」へ転送します。

転送が終了すると、「M5StickC」のファイルリストにそれぞれのファイルが追加されている筈です。

 

テストプログラム本体「test_CO2_Ambient.py」を「M5StickC」へ転送する

テストプログラムのアップロード先は、先程のライブラリ類とは違って「apps」配下である必要があります。(後述するプログラム指定モードで選択出来るのが「apps」配下のファイルだけの為)

といっても何も難しいことではなく、「VS Code」の「M5STACK DEVICE」リスト上で「apps」の横のuploadボタンを押すだけです。

この画面キャプチャ上では色々と余計なファイルが置かれてますが、気にしちゃダメです(笑)

 

「M5StickC」をプログラム指定モードにして、プログラムを起動する

前述した方法と同じ様に、「M5StickC」を一旦電源OFFし、モード選択操作で「APP.List」を選択し、先程転送したテストプログラムを選択します。

以降は、電源OFFしても次回起動時にこのプログラムが自動起動する様になります。

他のプログラムやモードを選びたい場合は、改めて、電源OFFからのモード選択操作をすればOKです。

 

起動すると、「M5StickC」の画面上にまず時計が現れ、数秒後にCO2値(ppm)が表示されます。

画面上のCO2値(ppm)の更新頻度は5秒毎になっています。

 

「MH-Z19B」のプリヒートタイムは3分(メーカー仕様より)です。「Co2 HAT」を装着してから3分未満の間に表示される値は無視して下さい。

 

「MH-Z19B」は出荷時設定だとオートキャリブレーションになっています。ゼロポイントキャリブレーションが必要な方は、メーカーのユーザーマニュアルを参考にプログラム修正してみて下さい。

 

グラフを確認する

今回のテストプログラムでは、「CO2計測値(ppm)」を1分毎に「Ambient」サーバーへ投げています。

「Ambient」の諸元/制限によると、1チャネルあたり1日3千件までデーターを登録できるとなってます。(有料枠だとどうなのかは分かりません)
今回のテストプログラムでは、丸2日分以上の「CO2計測値(ppm)」データーが見える状態になっている筈です。(超えた分は自動的に消えます)

 

数分待ったら、「Ambient」にログインし、Myチャネルより対象のチャネルをクリックし、グラフを確認します。

もし出てこない様なら下記をご確認下さい。

プログラム上の「チャネルID」や「ライトキー」が間違えてないか?
「M5StickC」がちゃんとWiFiでインターネット接続出来ているか?

 

基本的な使い方

サンプルプログラムには下記の機能を盛り込んであります。

画面消灯/点灯切り替え

Aボタンに割り当ててあります。(「M5StickC」だとM5ロゴの有るボタンで、「M5Stack」は3ボタンの左のボタンです)

CO2計測値(ppm)が閾値(1000ppm)を超えている場合は、消灯モードでも勝手にLCDが点灯します。この場合は閾値を下回れば自動消灯します。

「閾値」は、設定ファイルの「CO2_RED」の値です。

 

画面表示方向180度回転

Bボタン(電源ボタンじゃない方の側面ボタン)を押すと表示が180度回転しますので、設置向きに合わせてお選び下さい。

 

車内の二酸化炭素濃度を測ってみた!

「M5StickC」はUSB電源で動きますので、モバイルWiFiルーターを用意すれば外でも使えます。

 

ついでに、小型の「USB Type-C – USB A」変換アダプタとモバイルバッテリーを用意しましょう!

 

はい! お手軽お出掛け環境の出来上がりです♪

(写真のモバイルバッテリーは上記リンクの旧モデルです)

 

早速、車内に持ち込んでみました!

 

結果はこんな感じでした。

 

私は花粉症が酷くて「車を運転する時は内気循環」派だったのですが、マメに外気循環で換気した方が良さそうですね。

 

え!? 肝心の部屋の方はどうだったのかって??

 

・・・そ、そんなに悪くなかった・・・です(人間関係が問題だったのか・・・)

 

まとめ

・マメに換気をしよう!

・換気するのに指針となるCO2濃度を見れるのは便利!

・人間関係の測定は出来ない・・・

コメント