The jonki

呼ばれて飛び出てじょじょじょじょーんき

M5StackでLINE連携型のCO2センサー

はじめに

在宅勤務も長くなり部屋の換気もサボりがちでCO2センサーを買おうかなと思ったら,怪しい商品しかAmazonで見つけられず.それなら自分でM5Stackで作ってみようかなと思いました.久しぶりの電気工作.以前に話題になってて乗り遅れましたが,今更Join.Arduinoと同じ要領で開発できるのに加えて,ディスプレイ,WiFiBluetooth,SDカードスロットが標準搭載!Arduinoでこれをやろうとすると色々キットを購入したり自分で配線したりと大変なので,だいぶ楽になったもんです.人気なのも頷けます.

作ったものはCO2センサーとして屋内で動かし,不快指数に達したらLINEで通知する,という感じです. CO2濃度が高くなったら画面を黄色くして,LINEに自動で通知,という風にしました. 通知方法は,IFTTTで設定したWebhookにCO2の値をPOSTで送り,LINE通知を使います.LINE通知アカウントができるので,グループに入れて家族と共有することも可能です.

用意するもの

バッテリーモジュールは必要であれば.プロトボードも配線を外に出す場合は不要です.

www.switch-science.com

IFTTT (Webhook -> LINE通知)

特定のアドレスにHTTP POSTすると,LINEに通知を届くようにしておきます.設定方法等は,Webに大量に転がっているので省略します.設定したら生成されたURLをメモしておきます.

配線

配線はシリアル通信用のSCL, SDAと電源及びGNDの4本をつなぐだけです.配線はこちらの方の記事を参考にしました. cami.jp

私はブロック内に配線を隠したかったので,プロトボードにはんだ付けしました.適当なジャンパーで繋ぎます.いまいちプロトボードの使い方わからずむりやり.

コード

M5Stackのソフトウェアはそれなりに大きいのでArduino IDEでは,コンパイル及び転送がめちゃくちゃ遅いです.私のMacbook Pro環境で1回3分ぐらいかかります.ぐぐったところPlatformIOを使うと早くなるということで,VS Code + Platform IO拡張で試したところ30秒もかからなくなりました.すごい.シリアルモニターも使えるし,VS Codeでコードのフォーマットとかも効くのでArduino IDEを使う理由はもうないですね.

コードはこちら.あまりPlatformIOの使い方を分かっていませんが,プロジェクトを作ると main.cpp ができており,これにコードを書くようです.またWiFiSSID,パスワード,IFTTTのURLは,あらかじめSDカード内のテキストファイルに記載しておくことで,コード上のハードコードを避けました.まぁこれはこれで危ないけど. github.com

参考

こちらのサイトの情報を参考にさせて頂きました.CO2に関しては1500ppmを下回ってたほうが良さそうですね.

github.com CCS811 CO2 VOC センサーを制御

まとめ&要調査

エージング等必要なもようでCO2が正しい値を取れているかはまだ実験中.本当は気温や湿度をフィードバックしたほうが良いらしいけど,この辺も含めて調査中.とはいっても正解となるCO2センサーを買ったら元も子もないような汗.