これは Raspberry Pi Advent Calendar 2020 12月6日分の投稿記事です。
Raspberry Pi Zero WHを使い、気温・湿度・CO2を計測、記録する装置を作り、約半年運用しました。気づいたことは
- 接触不良に気をつけよう
- 換気していない状態でのガスコンロ使用と筋トレはCO2濃度を爆上げする
- 換気扇の威力は絶大
- 換気するなら空気の流れを作ろう
- 平均湿度が60%を切るくと踵が割れてくる
とある企業のオフィスに仕事で出張することが多く、そこで仕事をすると異常に疲れたり体調が悪くなることが多いと感じていました。換気が十分にされておらず空気が悪いのが原因ではないかと推測しており、それを確かめるためにCO2計が欲しいと思ったのがきっかけです。購入すると値段が張ること、作るほうが楽しそうなことからラズパイとセンサーを組み合わせて作ることにしました。温湿度計は簡単に追加できるので、ついでに付けました。
出来上がった頃にはCOVID-19の流行で出張がなくなっていたため、在宅勤務中の仕事部屋の状況を計測するのに転用しました。こちらによるとCO2濃度は推奨1500ppm, 目標1000pmとのことなので、この値を参考に運用しています。
Raspberry Pi Zero WHに温湿度センサーとCO2センサーを接続し、1分おきに値を測定してCSVファイルに書き込みます。
同じラズパイ上にWebサーバも立て、気温・湿度・CO2濃度の推移をグラフで見られるようにしました。
- 日別の1分間隔の推移
- 気温
- 湿度
- CO2濃度
- 過去数日間の1時間単位(7日間以下を選択した時)または1日単位(30日間以上を選択した時)の集計値
- 最低気温, 平均気温, 最高気温
- 最低湿度, 平均湿度, 最高湿度
- 最低CO2濃度, 平均CO2濃度, 最高CO2濃度
配線、ソースコード、初期セットアップ手順はこちらにまとまっています。 https://github.com/nknytk/env-monitor-pi
本体はこんな感じ。ラズパイはロイズのチョコレートの箱に納め、センサーとディスプレイだけが外に出るようにしています。上手く撮れていませんが、ディスプレイには現在時刻・CO2濃度・温度・湿度が表示されています。
センサーの値を手軽に可視化できるクラウドサービスは色々あるのですが、家の情報を外に送りたくなかったので、可視化も含めて完全にラズパイだけで完結できるよう画面まで制作しました。
- Raspberry Pi Zero WH
- DHT11(温湿度センサー)
- MH-Z19(CO2センサー)
- PiOLED(小型ディスプレイ)
- Python3による気温・湿度・CO2濃度の計測
- Adafruit-DHT (DHT11を操作するためのライブラリ)
- mh-z19 (MH-Z19を操作するためのライブラリ)
- Adafruit-SSD1306 (PiOLEDを操作するためのライブラリ)
- Pillow (画像処理ライブラリ。PiOLEDの表示内容は画像として作るため)
- Python3によるWebアプリケーションサーバ
- waitress (WSGIサーバ)
- グラフ化画面
- Bootstrap
- JQuery
- Chart.js
- Tempus Dominus
- Font Awesome
- JQuery LoadingOveray
CO2センサーから値が返らなくなり、ジャンパケーブルを抜き差しすると直ることが度々ありました(上のgifで、CO2濃度のグラフが一部途切れているのが値が取れなかった期間)。レイアウトの都合上、ジャンパケーブル2本を数珠つなぎにしてラズパイとセンサーを繋いでいたのですが、数珠つなぎをやめてケーブルを一本にしたところ安定して値が取れるようになりました。接触不良が起きるような配線はやめたほうが良いですね。
今回温湿度センサーとして使用したDHT11は、温度を整数値でしか測定できません。細かい温度変化が分からない上、温度の推移をグラフ化したときに角ばってカッコ悪いグラフになってしまいます。また、温度が20度を下回ると、湿度センサーからの返却値が突然跳ね上がって元に戻る、という挙動を繰り返すようになります。今年の梅雨は雨が降り続いて湿度が高かったはずですが、DHT11が返す湿度が80%を超えることは稀で、精度が怪しいとも感じました。湿度の精度に関しては外れ個体を引いただけの可能性もありますが。。
数百円をケチらず、より精度の高そうなDHT22等にしておけば良かったと後悔しています。買い替えを検討中です。
CO2センサーとして使用したMH-Z19は、電源を投入してから24時間毎にその時点のCO2濃度を400ppmとしてキャリブレーションする機能がデフォルトでONになっています。 屋内で使っている限り、そんなことをすると逆に値が狂ってしまいます。自動キャリブレーションは切り、手動で一度キャリブレーションした後は無調整で使っています。
窓を締め切って6畳の部屋で仕事をしていると、3時間くらいでCO2濃度が2000ppmまで上がります。想像よりも頻繁に換気が必要なことに驚きました。
コロナと長梅雨の影響で運動不足になりがちだったので、家で筋トレをすることが多かったです。換気せずに筋トレをすると20分ほどでCO2濃度が2000ppmに達します。筋トレは換気しながらやりましょう。
換気をせずにガスコンロを使うと、数分でCO2濃度が2000ppmに達します。コーヒー淹れるくらいなら換気扇を付けなくて大丈夫だろうと思っていましたが、とんでもない。必ず換気しましょう。
密閉空間ではCO2濃度を爆上げする筋トレとガスコンロですが、換気扇を付けていればCO2濃度は全く上がりません。
一旦CO2濃度が上がってしまうと、換気扇単体や窓を一箇所開けただけではなかなか下がっていきません。
換気扇を付けて窓を一箇所開ける、2箇所以上の窓を同時に開ける等で空気が流れるようにすることで、一気に換気が進むようになります。
今年の夏は暑かったですね。。9月の上旬は室温が35度まで上がっていましたが、扇風機で頑張りました。
最近はめっきり寒くなりましたね。というのがグラフで見えます。
今年は9月末に踵が割れて痛みが出ました。例年に比べて早いな歳のせいかな、と思いながら保湿して一旦収まっていたのですが、10月末には再び割れてきました。 湿度の推移を見ると、9月末から10月頭にかけて湿度が低い日が続いた後一旦湿度が上がり、10月末から再び湿度が低い日が続いています。踵の状態は湿度に見事に反応しています。 来年は湿度が下がり始めたら踵が割れる前から保湿しようと思います。