先日、ドン・キホーテをうろうろしていたところこんな商品を見つけました。
ドンキにWiFiルーター買いに行って、棚から空き箱取ってレジに持ってったら在庫無ぇとか言われたんだけど!
— ひろみつ(honeylab) (@bakueikozo) 2021年2月16日
空棚もあるんだから箱があれば在庫があると思うでしょ!!
とプンスコしながら5000円のCo2モニタが有ったので買ってきた pic.twitter.com/k6HfwB9kEO
室内用の格安Co2モニタのようです。
性能的には安かろうなんとやら、であることは承知の上、
仕事柄Co2センサについての情報収集は必要なためサクッと買ってみました。
画面は見やすい。OLEDのように見せかけてただのセグメントなのよね pic.twitter.com/wN5j7CHEEP
— ひろみつ(honeylab) (@bakueikozo) 2021年2月16日
早速ですが分解します。
USBにファーム用データ出てないかなと期待して開けてるとこ。
— ひろみつ(honeylab) (@bakueikozo) 2021年2月16日
...SWDIOとSWDCLKがあるな。これがUSB端子まで出てるとかじゃね!!???? pic.twitter.com/bsoYD4PgAz
Co2センサや温度・湿度センサがこの辺に格納してありました。
Co2モジュール、単体で使えるはずだと当然期待していた通りだ。
— ひろみつ(honeylab) (@bakueikozo) 2021年2月16日
センサ部ここにあったのか!
あと、電池がちゃんと国内PSEになってるすごい!
温湿度センサは良く見る感じのやつ。
AHT20か。 pic.twitter.com/qybNOBV2fv
メインボードとCo2センサはUART接続されているようです。
メイン基板。
— ひろみつ(honeylab) (@bakueikozo) 2021年2月16日
CPUはHDSC HC32L136。Cortex M0
思ってたよりハイスペック。
上のコネクタに何が出るかな〜 pic.twitter.com/nOF0vAugS1
ここに内蔵されているCo2センサは「CM1106-C」のようです。
データシートがここにあり、UARTのプロトコルも明記されています。
そのため、Co2センサ自体は単体で動作させることもできますが、
ここではあくまでもこの本体を生かし、
改造して外部から値を収集できるようにしてみます。
ほら、みんな
「またなんかよくわかんないセンサ買ってきたの?」とか
「これで何がわかるの?」とかいわれて
やっとのこと組み立てて頑張ってケースに収めたところで
「ガラクタ?」
って言われたことないですか?ないですかね。
まぁ、
Co2センサってエンジニア的には今特に興味のあるものだと思いますが、
それをうまいこと使いこなしたり、定期的に校正したり、
「誰にでも」見やすい値として表示する、ってちょっと難しいことなんですよ。
ところが、これはもう形はできてて値もカッコよく表示されるんですよ。
この状態で、中に何入れても、値をとってきても誰にも文句言われたりしないですからw
さらに、このメーカが最低限商品として成り立つレベルに実装してきた自動構成の仕組みなどをそのまま利用できるわけです。
それが5000円、これを安いとみるかどうか。
脱線しましたか。
さて、せっかくですから無線でデータをとれるように、無線LAN対応マイコンを中に入れてみたいと思います。
今回使用するのはなんかその辺に転がっていたESP8266のマイコンボードです。
これに限らず、ご家庭にある無線対応マイコンや、場合によってはただのUART-TCP変換機などを使用することも可能でしょう。
このマイコンボードを、データシートを参考に配線していきます。
5VはCo2センサの根元からとりますが、これをマイコンボードに直結していしまうと、マイコンボードに書き込むためにUSBケーブルを接続したときに逆流してしまい、
ちょっと嫌な感じになるため、ショットキーバリアダイオードを挟むことにします。
Co2のデータ収集は、もともとのマイコンが勝手にやってくれていますので、Co2からの返答が送られてくるTXD端子だけを無線LANマイコンの入力に突っ込みます。
そして、シリアルからCo2の読み取りパケットを解析してppmの値を取得し、
HTTPレスポンスで返すようなスケッチを書きこみます。
せっかくなのでmDNSに対応させたかったため、mDNSのサンプルコードを書き換えて使用しています。
家の中に置いておいて、家庭内のネットワーク上のPCなどから値を取得することを想定し、クライアントモードで立ち上げていますが、
こいつをAPにして動かすようにすることももちろん可能です。
さて、ブラウザでアクセスしてみると…?
できたできた。二つ目の数字はフリーズ検出のため、パケット解析ごとにインクリメントされる値です。
自動化のために、wgetを使ってみます。(wslではmDNSが使えなかった…)
おっけー。
あとは、これをスクリプトでもなんでもして、DBに入れるなり、CSVにするなり何でもできます。
13
これは、この作業をしているとき(1600ppm)→窓を開けて(1350ppm)→誰もいないリビングで(650ppm)と移動してみた時のグラフです。
amazonなんかで無線対応のCo2センサはなかなか見つかりませんし、
国内のものでネット対応のものは、謎のメーカ専用クラウドにアップロードされてグラフしか見れなかったりして柔軟性に欠けます。
しかし、このようにすれば生のデータが取得でき、自由に使用することができるという利点があります。
改造にかかる費用も1000円程度です。
Co2センサ自体の正確性ですが…その辺は追々確認していきたいと思いますが、買って半年ぐらいのおんどとり(自動校正無効化)と大体同じ値を表示してくれているようです。