M5Stick-CによるCO2(二酸化炭素)濃度計測器の試作(UI-Flow)

事例の概要

M5Stick-CとCO2(に参加炭素)センサーを組み合わせて、二酸化炭素濃度計を試作してみました。
センサー信号の校正はしていませんが、息を吹きかけた時に表示値が上がりました。

また噴射剤に二酸化炭素を利用しているスプレーを利用しても、数値が上昇するので、精度よりも値の変化を利用することにしました。

センサーの下限値は400 (ppm)なので、その値が表示されている間は換気が十分な状態だと判断します。
一方、上限値は1000 (ppm)とし、それ以上になるとLEDを光らせ、ブザー音で以上を知らせるようにしました。

取付けたブラケットは100均で購入した名刺立て。
ここに小ねじで取り付ける穴をあけ、M5stick-Cを固定しています。
センサーは両面テープで貼り付けました。

  

取付穴の加工位置を検討

三次元CADを使い、名刺立てやセンサーの三次元モデルを作成し、取付穴位置を検討しました。
M5Stick-Cについては、本サイトでも公開しておりますので、そのデータを利用しています。(公開ページ)

センサーとM5Stick-Cをつなぐ通信ケーブルが短いため、左右方向の取付位置によってはセンサーと子ネジが干渉する可能性がありました。
また、上下方向の取付位置も下側に寄り過ぎると、裏面のセンサーが取付部品と干渉してしまいカッコよさがなくなってしまいます。

その2点を三次元CADを使って検討しました。
寸法図面については、あまり意味がないため公開しませんが、検討結果をもとにして、子ネジで固定した現物と三次元CADデータを比較した様子です。

これまでは現物合わせ(ゲンゴウ)で、適当に配置していましたが、三次元CADを使えば、デジタル空間の中で正確に取付位置を決めることができます。
このような事例が提示されると、三次元CADの効果を感じていただけると思います。

UI-Flowを使ったプログラム

最初にセンサーから二酸化炭素濃度の値を表示させるプログラムです。
コードを打ち込む例はありましたが、UI-Flowを使ったプログラムの事例がなかったので、アップすることにしました。

以下のプログラムは、ラベル0(label0)に値を表示されるプログラムです。
『ずっと』の部分が『loop{}』になるので、表示値を安定して視認できるようにするため、表示後、0.5秒間停止させています。

接続するセンサーは、左下の『Units』から『TvOC/eCO2』を選択します。
ラベルに表示させるセンサーの値は、『Units → TVOC/eCO2』からデータを取得するgetメニューが表示されるので、eCO2を選択します。

以下のようにブロックを組府わせて、実行するとM5-Stick上で実行され動作確認ができます。
ただし、この状態ではM5Stickに書き込まれていないので、電源をOFFにするとM5上で動作させたプログラムは消失します。

センサー立ち上がりまでの時間を表示する

プログラムの起動からCO2センサーが起動するまで約30秒の遅れがあることが判りました。
そこで、その30秒間を起動時間と設定し、画面下側に起動中であることを表示させるように工夫しました。

以下のプログラムは改造初期の状態です。
このあと、起動時間の進捗をパーセント表示できるようにし、立ち上がりまでの進捗を見えるようにしました。

0.5秒の停止が入るので、その回数で起動時間を測っています。
画面下側の表示を『IF~THEN』の条件文により切り替えています。

また、表示画面も『label』を使い、複雑になってきました。

横置き表示への切り替え

最初に示す写真のように利用したかったので、電源スイッチを上側に来るように表示画面を回転させることにしました。
それに伴い『label』位置も変更が必要になります。

以下のプログラムでは、『ずっと(Loop)』の前、『Setup』の部分で、『label』の位置を設定しています。
指定する数値はディスプレイのドット位置です。

ここで、試作としては、『1000 (ppm)』を越えた時の変化を組み込みました。
当然ですが、『1000 (ppm)』以下に戻った場合、元の状態に戻るようにしてあります。

説明する内容も増えてしまいますので、この部分について、ご不明な点があれば、お問合せいただければ、回答可能な範囲で連絡させていただきます。

まとめ

M5stickはIoTツールとして利用することができます。
Wi-Fi通信機能も組み込まれていますので、クラウドサーバーにデータを送信することも可能です。

また、『Units』や『Hat』としてセンサーなども販売されており、プログラム上での利用も用意になっています。
コードを利用する場合、使用するセンサーのライブラリーが必要となり、コードによる開発経験が乏しいと敷居が高く見えてしまいます。

このようなUI-Flowを使えば、プログラムに対する敷居も低くなり、かなり使いやすくなっています。

現在、クラウド・サーバーへのデータ収集方法を調査しております。
簡単に利用できるものがあれば、紹介したいと思います。

PAGE TOP