# CO2センサー + 温湿度計の導入と換気について
# 概要
- CO2センサーを導入しました。
- 元から持っていた温湿度計と合わせ、空気状況を確認できるシステムにしました。
- システムとしてはネットで見つけたものを組み合わせただけで、特に新規性はないです。他にもたくさん記事が出てきます。
- センサー値の実例と、今取り入れている換気方法を紹介します。
# 登場人物
- Raspberry Pi 3 Model B (家にあった)
- Bluetoothドングル (Raspberry Piの内蔵Bluetoothが不安定なので)
- CO2センサー MH-Z19C (秋月電子で購入)
- Switchbot 温湿度計 (opens new window)
# あらすじ
最近Switchbot 温湿度計 (opens new window)を導入していました。 体質的に肌が弱いので、保湿のため湿度が気になるのです。
Bluetooth経由で情報を取得できます。アプリで部屋の温度・湿度を確認できるので便利です。 Switchbotに対応した非公式の温湿度計アプリ (opens new window)では、絶対湿度も確認できるのでさらに便利です。 一般に広く用いられる相対湿度とは違い、空気中の水分量を表す絶対湿度は人間の感覚により近いと言われています。
元々こういった情報を眺めているだけで楽しい性格の私なので、更なる情報を取れるようしたくなってきました。 そこで目をつけたのがCO2濃度です。最近は某ウイルスの影響で注目されることが多いパラメータですが、それ以外にも作業効率に大きく影響することが知られています。
# CO2に関する御託
CO2濃度についてさらに話していきます。 前提として、CO2濃度はおよそ400ppmで、締め切った空間で人間が活動すると、人間の呼気によってここから上昇していきます。 ガスコンロや炎を使う暖房器具などでCO2を出すことでも上昇します。
そんなCO2濃度ですが、 学校環境衛生基準 (opens new window)においては「1500ppm以下であることが望ましい」、 建築物環境衛生管理基準 (opens new window)においては「1000ppm以下であることが望ましい」とされています。 学校環境衛生基準とは、文字通り学校(幼稚園(幼稚園型認定こども園を含む)、小学校、中学校、義務教育学校、高等学校、中等教育学校、特別支援学校、大学及び高等専門学校)の環境についての文書です。 一方、建築物環境衛生管理基準とは、「特定建築物」(興行場、百貨店、店舗、事務所、学校等の用に供される建築物で、相当程度の規模を有するもの (opens new window)の基準であるようで、要するに、大きめの施設などで満たすべき基準を記述する文書であるようです。 一方で、これは法的にどうかという話でしかありません。1000ppmを下回っていれば法的に問題ないということでしょうが、1000ppmを下回れば問題がない、と述べているわけではないのです。
ということでさらに論文を当たり根拠を求めます。こちら (opens new window)はCO2濃度とを変えながらStrategic Management Simulationなるテストを行わせた論文のようで、鵜呑みにすると2500ppmよりも1000ppm、1000ppmよりも600ppmの方がおおむね良い結果が得られるということです。 要するにCO2濃度は低い方が(外気に近い方が)良いということでしょう。 CO2濃度をモニターし、換気などによって数値をコントロールする有力な論拠となりえます。
# やったこと
# CO2センサーの調査
まずは、CO2モニターを探します。 要件としては、CO2濃度を計測・蓄積できること。直接目視せずとも数値を確認できることです。 色々と探したのですが、既製品のCO2モニターは高いものが多く、CO2センサーを購入することにしました。 Raspberry Piで使えるPythonライブラリ (opens new window)があり、電子工作の情報も多いMH-Z19シリーズのMH-Z19Cを用いることにしました。
# 可視化
使い方についてはすでに情報は色々あるので省略します。GASを用いてスプレッドシートに出力し、可視化しました。
ついでに温湿度計データも取得しています。データとしては温度と相対湿度しか取れませんが、スプレッドシート上で絶対湿度と露点温度を計算しています。
スプレッドシートには列の上限があるので、古いデータは順次削除するようにしておき、Raspberry Pi上に完全なログを保存するようにしています。
Rasberry Pi上のログも logrotate を用いてローテーションしています。初めて使いましたが、少ない記述で望むようなローテーションすることができました。
(パス指定にユーザー名入ってるのダサいですが、まあ動けばいいです)
/home/me/logs/co2 /home/me/logs/switchbot {
rotate 36500
weekly
compress
}
# 数値を見てみる
データを見る前に、部屋の説明をしておきましょう。
- 部屋はだいたい8畳。
- 部屋には3箇所の窓があり、1箇所の窓は縦すべり出し窓。残り2箇所は引違い窓。
- 窓名称はこちら (opens new window)を参考
- 出入り口は1箇所で、引き戸。
- そのほかに換気設備は存在しない。
それではCO2数値の実例の説明をしておきます。
図で示したタイミングで部屋に入り、同時に加湿器をつけました(湿度50%設定)。部屋の窓を少しだけ常時開放し、換気を行っています。丸わかりですね。
なお、めちゃくちゃ日当たりが良い部屋なので、特に暖房をつけなくても20度近くまでいきます(この日の最高気温は11度)。
これは、1/29 〜 1/30までのCO2濃度データです。
ぐちゃぐちゃでよくわからないので、説明します。

- 一日に一回動作するオートキャリブレーションが働きました。その日1日のなかで最低の値を400ppm(外の濃度)に合わせるらしく、基準がずれてしまいました。設定でオフにできるのでオフにした上で、センサーを部屋の外に出した状態で再度キャリブレーション(ゼロキャリブレーションというそうです)を行い、数値がだいたい元の水準に戻りました。
- 少しだけ窓を開けた状態で部屋にいました。1000ppm前後を推移しています。
- 窓を閉め切りました。1700ppmを超えたあたりで窓を開けて換気し、1000ppmを切ったのを確認しましたが、窓を閉めるとまたすぐ上昇しています。
- 窓を閉め切り、その後睡眠しています。眠り始めるとCO2の排気量が減るのか、自然換気でどんどん濃度が下がっているようです。朝7時?あたりに目覚め、再びCO2濃度が上昇しているようです。
- 起床し換気を行い、その後は窓を常時少しだけ開けながら部屋で生活しています。
# 運用
数値を見ながら生活していてわかったことです。
- 部屋の窓・ドアを閉め切り生活すると速攻でCO2濃度が上昇する。
- 窓を少しだけ開けると、CO2濃度はかなり低い値で安定する。
- 窓を開けているときの換気量は、(当然ながら)その日の風速や風向で変化する。
ということで、最近は基本的に次のような運用としています。
- 昼間は常時窓を少し開ける。その日の風の状態も考えながら、数値も見つつ開け具合を調整する。
- 夜間眠るときは扉を少しだけ開ける。基本寝ているときに暖房はつけないので、外よりも気温の高い屋内の空気を循環させ、CO2濃度を低く保つ。
# 感想
このシステムを導入して、普段から換気をするようになって1週間ほど経過しましたが、明らかに昼間に眠くなることが減りました。 今までどのくらいのCO2濃度で生活していたか分かりませんが、やはり可視化して初めて気づくことも多いですね。 センサーの数値も、アクションを起こせばすぐに変化がありとても楽しいです。
# 参考にしたリンク
# ソフトウェア
- 絶対湿度計 (opens new window)
- Pythonのライブラリ (opens new window)
- SwitchBot温湿度計データをBluetoothでとってくるコード (opens new window)
# blogとか
- 二酸化炭素濃度計を MH-Z14A と ESP-WROOM-02 で作った話【新歓ブログリレー2020 55日目】 | 東京工業大学デジタル創作同好会traP (opens new window)
- Raspberry Pi 4とMH-Z19Bで二酸化炭素濃度を計測してみた | DevelopersIO (opens new window)
- Raspberry PiからGoogleスプレッドシートにCO2濃度データを保存する (opens new window)