二酸化炭素濃度測定器を自作する
#gadget #iot
面白そうだし安く上がりそうなので自作してみる。
材料候補
社内で色々聞いてきて、M5Stack Basic / M5StickC / M5StickC Plus のどれかが良いかなと思ったので、それぞれ比較する。
M5Stack Basic コース
https://qiita.com/nara256/items/a3cecc5fbf043b2d042c
M5Stack Basic 本体
5,204 円
https://www.switch-science.com/catalog/3647/
CO2センサーモジュール (MH-Z19C)
2,480 円
https://akizukidenshi.com/catalog/g/gM-16142/
ジャンバー線
mizdra ハウスに転がっているものを引っ張ってくれば良い
M5StickC コース
https://kitto-yakudatsu.com/archives/7766
M5StickC 本体
2,816 円
https://www.switch-science.com/catalog/5517/
M5StickC/Plus用「Co2 HAT(ソケット版)」キット
1,650円
https://kitto-yakudatsu.booth.pm/items/2780399
CO2センサーモジュール (MH-Z19C)
2,480 円
https://akizukidenshi.com/catalog/g/gM-16142/
M5StickC Plus コース
https://kitto-yakudatsu.com/archives/7766
M5StickC Plus 本体
3,058 円
https://www.switch-science.com/catalog/6470/
M5StickC/Plus用「Co2 HAT(ソケット版)」キット
1,650円
https://kitto-yakudatsu.booth.pm/items/2780399
CO2センサーモジュール (MH-Z19C)
2,480 円
https://akizukidenshi.com/catalog/g/gM-16142/
検討
はんだ付け楽しみだなーと思いながら候補探していたけど、どれもはんだ付け不要そうで驚いた
別にやらなくて済むならそれで良い
基本デバイスはCO2測定専用にする予定なので、CO2測定で使う予定のない機能があるデバイスを買う必要はない
その点 M5Stack Basic ほど高級である必要ないかなーという所感
M5StickC Plus は M5StickC と違ってブザーがあるらしい
ブザー欲しいので M5StickC Plus で決まり
2021/8/5 買った
送料込みで 8,000 円くらい
全部別々のストアで売ってるので送料 MAX だった
mizdra.icon 既製品とそんな価格変わらないなという気がしてきたけど、プログラミングでごちゃごちゃできて既製品よりずっと面白いはずなので、気にしないことにする
2021/8/7 グッズ届いた
https://gyazo.com/d8255b6d603f55390a99af47a8b0520b
組み立て
https://kitto-yakudatsu.com/archives/7766 を見ながら作っていく
バラバラー
https://gyazo.com/2a2cdee19efc8812b9d2dc5d9271465d
これを...
https://gyazo.com/3211b514256927a371d347d38556654d
こうじゃ〜
https://gyazo.com/0b21b18c2938f63a397e944777a7f1ee
ケースも被せちゃう
https://gyazo.com/6fd2e45b3cf149b6f27e6e6247f08ba9
そして合体
https://gyazo.com/24effe400b2d5371a641773e272e29ce
これで完成らしいですよ
簡単ですね
M5StickC Plus のセットアップ
https://kitto-yakudatsu.com/archives/7286#toc15 見ながらでも良いけど、外部サービスにメトリクス送ったりと高級すぎる感じがした
これ作りたい
https://yujisoftware.hatenablog.com/entry/2021/01/16/232841
https://gist.github.com/YujiSoftware/9274366a93f1ac7f9208bd4abf096527 をどうにかして M5StickC Plus に書き込めれば良いんだろう
Auduino IDE というのを使えば気軽に書き込めるらしいので使ってみる
https://zenn.dev/kenken82/articles/d8537fde03e90e#arduino-ide
わかりやすい
hello world プログラム書き込むところまでやった
書き込み方分かったので https://gist.github.com/YujiSoftware/9274366a93f1ac7f9208bd4abf096527 を書き込んでみる
MHZ19.hが必要なので事前にDLしてくる
https://github.com/WifWaf/MH-Z19/blob/master/src/MHZ19.h
こういう感じで配置する
code:text
/Users/mizdra/src/localhost/gomi/co2-meter
├── co2-meter.ino (https://gist.github.com/YujiSoftware/9274366a93f1ac7f9208bd4abf096527)
├── MHZ19.cpp
└── MHZ19.h
雑に書き込んで見る
何かをミスったっぽくてハイパークリーン空間になった
https://gyazo.com/767ac4dd975b60ad217c8fd35e3978a4
https://twitter.com/mizdra/status/1423958095508606980
mizdra.icon …
そういえば上記プログラムは M5StickC/MH-Z19B 向けだった
今 mizdra.icon が使っているのは M5StickC Plus/MH-Z19C
そもそも動くわけない
UI は描画されていて測定値が取れていないことから、測定値を取得する部分が壊れているのだろう
シリアル通信に使う PIN が間違ってるんじゃないかな〜
=> やっぱりそうだった
code:diff
-#define TX_PIN 26
+#define TX_PIN 0
再チャレンジ
https://gyazo.com/c9a8b100f54874dde1556df477387d3d
mizdra.icon やった〜
息吹きかけたら値増えたので正しく動いてそう
ところでよく UI を見ると数字が小さい感じがする
https://yujisoftware.hatenablog.com/entry/2021/01/16/232841 の写真をみるともっと画面幅に対してギチギチに数字が表示されている
mizdra.icon そういえば M5StickC Plus の画面サイズって M5StickC より大きかった気が…
グラフも右側に無の空間が広がっていた
https://gyazo.com/6a0759e60073de4f4bef95eb97a79832
mizdra.icon …
あと更新タイミングで画面がちらつくのも直したい
https://lawn-tech.jp/m5stickc_sprite.html
ダブルバッファリングのための専用 API あるらしい
という訳で色々調整した
https://gist.github.com/mizdra/955199c3ae4faad148c36ba0e6eba4e3
https://gyazo.com/6cccfecbf484971de91e6715f406f641
https://gyazo.com/5892b680f9db91ddb018fe4d00d6b8e1
https://gyazo.com/4b17312a42c3b871e0a28e17ca9cdd30
mizdra.icon やった〜
おわり
手動キャリブレーションできるようにする (追記: 2021/11/23)
MH-Z19C はデフォルトではオートキャリブレーションという機能が有効になっている
https://github.com/AlexGyver/MeteoClock/blob/master/libraries/mhz19_uart/README_jp.md#public関数
電源投入後24時間ごとに、その時点での二酸化炭素濃度を 400ppm として校正される (ゼロキャリブレーション)
屋外利用など、環境によっては便利なこともある
とはいえ、mizdra.icon の場合は日によって基準点が変わって計測値が乱れるのが不便なので、off にしたい
とりあえずオートキャリブレーションを off にし、BtnBを3秒間長押しした時にゼロキャリブレーションをするようプログラムを書き換えた
https://gist.github.com/mizdra/955199c3ae4faad148c36ba0e6eba4e3/revisions#diff-d0245104be25e30da8ae18d67a37aa17ebd2c47e2e993109436ef848ed4c1a4d
実際にゼロキャリブレーションしてみる
まずモバイルバッテリーを装着して M5StickC Plus を屋外に転がしておく
大体大気の CO2 濃度に合ってきたな、これ以上計測値が下がらなくなってきたな、というタイミングでBボタンを長押し
MH-Z19C に息が掛からないよう、息を止めて近づくなどすると良いかも
息を止めすぎて死なないように注意
beep 音が鳴ったらゼロキャリブレーション完了