UD-CO2S と Raspberry Pi Zero 2 W で CO2 濃度を計測する
数年前と比べて安くなっていたので、CO2 濃度計測するセンサーを購入してみた。UD-CO2S は、安くて NDIR 方式のちゃんとしたセンサーなのはよいのだが、単体だと5段階の LED でしか状態を表示できない。普段はそれで十分ではあるものの、そもそも時間経過とともに CO2 濃度がどのように変化していくのか、換気するとどれくらい変化するのかなど、感覚を掴むために数値でも見たいと思ったので、Raspberry Pi Zero 2 W を使って可視化してみた。
UD-CO2S は USB 接続で電源供給する仕様だが、PC と接続すればセンサーの値を取得できる。すでにデバイスファイルから値を読み取るツールを作成された方がいたので、それを使うだけでよかった。
https://github.com/northeye/chissoku
センサーを Raspberry Pi に接続するためには USB ハブを経由した。いろいろ探したところ、U2HS-MB02-4BBK というハブが microUSB で直接接続できて、別途 OTG アダプタを用意する必要がないのがよかった。アダプタだと同時に他の機器を接続できないので、とりあえず潰しが効くようにハブにしているものの、UD-CO2S しか接続しないのであれば短めの OTG ケーブルのほうがスッキリするだろう。
Raspberry Pi への電源供給には、家に余っていた Anker 40W 5ポート USB急速充電器 AK-71AN7105-B5A を使った。詳細な仕様が開示されていない製品で、1ポートあたりの出力がよくわかっていないのだが、とりあえず追加の出費なしで動いているのでよしとしている。
HDMI のアダプタは用意しなかった。Raspberry Pi Imager で microSD カードに OS を書き込む際、Wi-Fi や SSH の設定を事前に書き込んでおくことができるので、基本的になくても問題ない。トラブルシューティングなんかで必要になってから考えるのでよいだろう。
やり方としては Raspberry Pi Imager で Raspberry Pi OS Lite を入れて chissoku のバイナリをダウンロードして実行するだけなのであまり語ることがない。chissoku の出力を加工して外部サービスに送るスクリプトを書いたのと、それを systemd の管理下で動かすようにしたくらい。
# Beebotte というサービスを使っているのは、当初 MQTT で送ろうとしたものの、一度に複数の値を publish できなさそうだったので REST API に切り替えたという経緯から。どうせ REST API を使うなら Beebotte じゃなくても何でもよさそう。
上記のスクリプトを systemd の Unit にすると以下のようになる。
しばらく使ってみて、自分の場合は意識せずに生活していても思ったより CO2 濃度が上がることはなさそうだなと思った。ただ、それも計測しなければわからないことなので、わかるようになって安心して過ごせるようになったのはよかった。