宅内 CO2 濃度監視
Feb 10, 2021
要約 #
- Raspberry Pi と CO2 センサーを使って宅内の CO2 濃度監視をやってみた
- 閉め切った部屋に1人で1時間半ほどいると CO2 濃度は 1000 ppm を超える
- 適度に換気したところで集中力が上がったかどうかはわからない・・・
Raspberry Pi と CO2 センサーで宅内 CO2 濃度監視 #
CO2 濃度が仕事のパフォーマンスに影響を与えるらしい #
昨今の新型コロナウィルスの状況により、在宅勤務が続き、それに伴って宅内環境監視を整備中です。 以前から 宅内の温湿度監視 はやっていたのですが、仕事をするにあたっては CO2 濃度がパフォーマンスに影響を与える らしいです。 それを見て、最近宅内の CO2 濃度監視もはじめました。
使用する機器について #
CO2 監視には Raspberry Pi Zero WH と MH-Z14A という CO2 センサーを使っています。 それを5セット用意し、監視が必要そうな部屋に設置しています。
Raspberry Pi Zero WH には Raspberry Pi OS をインストールして使用しています。 OS のインストール手順 や、 固定 IP アドレスの割当 についてメモを残していますのでそれぞれのリンク先をご覧ください。
MH-Z14A について #
MH-Z14A は UART 通信に対応した CO2 センサーモジュールです。 詳細はの 公式のユーザーズマニュアル を見てください。 UART に対応しているので、Raspberry Pi の GPIO で結線してしまえばすぐ使えます。
Raspberry Pi の GPIO で UART を有効化 #
上で結線すればすぐ使えるといったものの、実は Bluetooth に対応した Raspberry Pi はデフォルトでは UART が GPIO で使えません。 Bluetooth を無効化して UART を GPIO で使えるようにするか、Bluetooth を mini UART に切り替えて UART を GPIO で使えるようにする必要があります。 私は後者を選びました。 その手順についてはメモを残していますので、 こちら をご覧ください。
Raspberry Pi と MH-Z14A の結線 #
Raspberry Pi の GPIO のピン配置は 公式ドキュメント によると次の図のとおりです。 Raspberry Pi の UART TXD/ RXD は GPIO 14/ 15 に配置されており、センサーモジュール用の電源用 5V/ Ground を踏まえるとそれぞれ 8、10、4、6 番ピンを使えばよいです。
出典: 公式ドキュメント GPIO
MH-Z14A のピン配置は 公式ユーザーズマニュアル によると次の図のとおりです。 MH-Z14A の UART TXD/ RXD には 19/ 18 番ピンを、電源用 5V/ Ground には 17/ 16 番ピンを使えばよいです。
出典: 公式ユーザーズマニュアル
改めて整理すると次のように結線すればよいです。
Raspberry Pi | MH-Z4A | |
---|---|---|
5V power | 4 | 17 |
Ground | 6 | 16 |
TXD -> RXD | 8 | 18 |
RXD <- TXD | 10 | 19 |
それぞれ連続した4ピンなので4ピン用の ピンコネクターと ジャンパーケーブルを使うと便利です。 取り付けるとこんな感じです。
MH-Z14A の UART 通信 #
公式ユーザーズマニュアル の7章の「Serial port output (UART)」に基づいてデータ取得やキャリブレーションを行えばよいです。 チェックサムの計算方法も載っているのでこれに従えばよいです。
なお、キャリブレーションはすぐに測定精度を上げたいときに使えばよく、私は念のため Zero Point Calibration のみ行いました。 長時間利用していると自動的にセルフキャリブレーションをすると書いてあるので、長時間利用するのであればあまり気にする必要はないかもしれません。
データ取得のサンプルコード #
MHZ-14A 用にサンプルとなるコードは GitHub で探せばそれなりに出てきます。 私は手軽に Python で書きたかったので こちらのリポジトリー のコードを参考にさせていただきました。
実行するコードができれば cron で定期的に実行させてやればよいですが、Raspberry Pi OS はデフォルトでは cron の実行ログを残してくれないため、動作確認に不安が残ります。 cron の実行ログを残す方法についてもメモを残してありますので、 こちら をご覧ください。
InfluxDB と Grafana で適当に飾り付け #
取得したデータは InfluxDB に保存し、Grafana で表示させています。 このあたりの準備手順等は省略しますが、過去に次のような記事を書いていますので参考までに載せておきます。
Grafana の表示例は最後に載せておきます。
3D プリンターでケースを作る #
基板むき出しで各部屋に置くのも味気ないので最近買った
3D プリンター Kingroon KP3S で専用ケースを作りました。
作成したデータは Thingiverse にアップロードしたのですが、なかなか公開されず・・・(公開されたらアップデートしておきます)。
Thingiverse にもアップロードしたのですが、どうも挙動が怪しいので MyMiniFactory にアップロードしました。
出来上がりはこんな感じです。
CO2 濃度を監視してみてわかったこと #
- ドアを閉めきっていると6畳くらいの部屋だと1時間半ほどで 1000 ppm を超える(下図 緑線 8:30-10:30ごろ、13:00-14:30 ごろ)
- 石油ファンヒーターを使うと一気に CO2 濃度が上がる (下図 橙線 12:00 ごろ)
- CO2 濃度が高い時に眠気がやってきているかもしれない・・・
- 集中力が上がったかどうかはわからない・・・
この記事の関連メモ #
- Raspberry Pi OS のインストール手順
- Raspberry Pi OS のネットワーク設定手順
- Raspberry Pi OS で Bluetooth を使える状態にしたまま GPIO で UART を使うための設定
- Raspberry Pi OS で cron の実行ログ出力の有効化
この記事の関連アイテム #
ではでは。