mh-z19報告
ハロートナミです。
先日オタクと飯を食ったエントリを書きましたが、その際m5stackを使ってmh-z19の動作検証をしてもらいました。
結果としては2個は完全に死んでますが1個は健康、もう1個は若干数値が怪しい気もするけど多分健康という感じでした。
つまりRaspberry Pi側を何とかすれば二酸化炭素の値が取れそうという事です。
それではやっていきましょう
取れました(おわり)
まあ実際には色々あって、結局何がいけなかったかというと
まずRaspberry Pi初心者わくわくセットに入ってたこいつが良くなかった。
これはGPIOをブレッドボードに移植するブレークアウトケーブル(?)です。
Lチカで確認したんですがGPIOから直接配線した時とこのケーブル使った時で電流の向きが逆になってました。
つまりセンサーに逆電圧をかけてぶっ壊すをやり続けていたということです。
何でそうなるのか意味分からないし識者各位も意味分からんつってたんで意味分からないんですが兎に角こいつは悪かった。悪かったので捨てました。
捨てたら想定通りに電圧がかかるようになったしこいつのことは忘れました。
次になんかtxd/rxd使った通信がうまくいかなかった。
github.com基本的にこの方のリポジトリなりqiitaなりを参考にやっていたんですが、なんかこうtxd/rxdから値が取れませんでした
原因不明なんですが、逆電圧の試行中にぶっ壊れたんじゃないの?とか
Raspberry Pi本体orOSに原因があるんじゃないの?みたいな気持ちでいます。
なおm5stackではrxd/txdを使った通信が出来ていたのでセンサー側は生きています。
このあたりハードウェアとソフトウェアの橋渡しみたいな知識が無さすぎて原因の切り分けが進みませんでした。
回避方法が判明したので不明のままにしてますが、夏休みとかでいい感じに調査したいです
回避方法ですが
pongsuke.hatenablog.comこれを参考にPWMから値を取得する方法を試したらあっさり動きました。
それが冒頭の画像で、5秒に1回ぐらいセンサー周辺の二酸化炭素濃度(ppm)を吐いてます
GWからやっていた課題が遂に進展したので嬉しいですが、よく分からんけど動くポイントが多すぎてもうちょっとお勉強しないとなあと思うばかりです。
例えばtxd/rxdとPWMを使う場合の違いは殆どコピペコーディングしたせいもあって全然分かってません。
PWMが周波数を使って、0の時間がなんぼで1の時間がなんぼだから値はこれ!みたいなアナログなやり取りをしてるっぽい事だけ認識してます。
まーとにかく動いたから課題を進める事を考えます。
次にやりたいのは以下のとおり
・どっかにサーバ立てる
・ラズパイからmh-z19の値をサーバーに5分毎とかで投げる
・サーバ側でcsvとかに溜めてく
・csv読んでグラフ表示するページ作ってサーバでホストする
ここまで終わればどこからでも我が家の二酸化炭素濃度が見れるシステムが出来上がります。やったね
とりあえずサーバのソースはFlask, ページはvueで作り始めて多分2時間もあればコーディングだけは終わりそうなんですけど
AWSのEC2インスタンスが思ったより高くて躊躇しています。
とはいえ下手にマネージドなサーバ借りると設定で躓きまくって先に進まない予感もしますし、家庭内にサーバー立ててどうこうは今のところ考えてないので
多分来週末とかに諦めて課金始めると思います。たぶん
もう少し進展したらまた書きます。
何はともあれ値が取れるようになってよかったです。おわり