LoginSignup
4
4

More than 3 years have passed since last update.

換気は大事。部屋のC02濃度の記録を採るためにやったこと

Last updated at Posted at 2020-04-15

気象庁 二酸化炭素濃度の経年変化 によると、2018年の世界のCO2平均濃度は、前年と比べて2.3ppm増えて407.8ppm となっているそうです。

地球温暖化によってCO2濃度が増え続けていることは懸念すべきことではありますが、新型コロナウィルスが流行している今現在の目の前の心配は、「密閉」「密集」「密接」の三密のうち「密閉」のリスクを回避するためにちゃんと部屋の換気が出来ているか、ということです。

室内のCO2濃度について、
厚生労働省 建築物環境衛生管理基準 では 1,000 ppm 以下
文部科学省 学校環境衛生の基準 では 1,500 ppm 以下
を管理基準としています。
また、CHC GROUP さん がまとめて下さっているこの図も参考になりそうです。
image.png
(出典:http://group.chcsys.net/jp/chcgroup/)

基準と照らし合わせて、自分の居場所のCO2濃度がどの程度なのか、ちゃんとしたデータを持っておきたかったので、センサを用いて計測することにしました。

用意したもの

Raspberry Pi 3 Model B
CO2センサー MH-Z19B

OS

Debian GNU/Linux
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l

[Raspberry Pi の設定] - [インターフェイス] で Serial Port を有効にします。
image.png

Serial Port 有効後に Raspberry Pi を再起動します。
image.png

配線

GND, Vin, TxD, RxD それぞれに配線はんだ付けを行います。
image.png
image.png
(配線図 https://pypi.org/project/mh-z19/ より)

配線図にしたがって Raspberry Pi と CO2センサーを接続します。
image.png

パッケージのインストール

https://pypi.org/project/mh-z19/ の情報をもとにしました。
パッケージのインストール

$ sudo pip3 install mh-z19
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting mh-z19
  Downloading https://www.piwheels.org/simple/mh-z19/mh_z19-0.4.1-py3-none-any.whl
Collecting argparse (from mh-z19)
  Downloading https://files.pythonhosted.org/packages/f2/94/3af39d34be01a24a6e65433d19e107099374224905f1e0cc6bbe1fd22a2f/argparse-1.4.0-py2.py3-none-any.whl
Requirement already satisfied: pyserial in /usr/lib/python3/dist-packages (from mh-z19) (3.4)
Collecting getrpimodel (from mh-z19)
  Downloading https://www.piwheels.org/simple/getrpimodel/getrpimodel-0.1.15-py3-none-any.whl
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from mh-z19) (2.21.0)
Installing collected packages: argparse, getrpimodel, mh-z19
Successfully installed argparse-1.4.0 getrpimodel-0.1.15 mh-z19-0.4.1

計測値の取得テスト

モジュール mh_z19 はディクショナリ型で結果を出力しているようです。
モジュール mh_z19 は JSON で結果を出力しているようです。
(@UedaTakeyuki さんから編集リクエストをいただきました。ありがとうございます。)

$ sudo python3 -m mh_z19
{"co2": 1456}

プログラムを作成

日時とセットで計測値を出力します。

import datetime
import mh_z19

now = datetime.datetime.now()
now = "{0:%Y-%m-%d %H:%M:%S}".format(now)
value = mh_z19.read().get("co2")  # ex: {"co2": 1456}
out = now + ',' + str(value)
print(out)  # コンソールに出力

出力結果

2020-04-15 19:34:01,1950

シェルスクリプトの作成

標準出力の結果をログファイルにリダイレクトします。
do.sh

#!/bin/sh

cd /home/pi/mh-z19
sudo python3 MeasureAndOutput.py >> ./log/logfile.csv

シェルスクリプトを実行可能モードにします。

$ chmod +x do.sh

定期実行の設定

$ crontab -e

エディターが起動するので、毎分計測してログを出力するように設定します。

# m h  dom mon dow   command
* * * * * mh-z19/do.sh

設定が有効となるように、cronを再起動します。

$ sudo /etc/init.d/cron restart
[ ok ] Restarting cron (via systemctl): cron.service.

数分後に確認したところ、シナリオ通りにログが出力されていました。

$ cat logfile.csv
2020-04-15 19:34:01,1950
2020-04-15 19:35:02,1957
2020-04-15 19:36:01,1965
2020-04-15 19:37:01,1976
2020-04-15 19:38:02,1983
2020-04-15 19:39:01,1996
2020-04-15 19:40:01,2032

グラフを作ってみる

出力されたログファイルをもとに、とりあえず手動でグラフを作ってみました。
image.png

このあとやりたいこと

・一定の濃度以上になったときにLINE Bot へアラート
・スマートスピーカーによる音声でのアラート

参考にさせていただいたQiitaの先輩

@revsystem さん https://qiita.com/revsystem/items/76ab1e21d386c5977892
@tororu さん https://qiita.com/tororu/items/20e8625d3fb24f3e06da
@UedaTakeyuki さん https://qiita.com/UedaTakeyuki/items/c5226960a7328155635f

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4