ざっくり言うと
・部屋のCO2濃度があがると集中力が落ちて眠気を感じるらしい。
・CO2-miniって製品つかうと簡単にRaspberry PiからCO2濃度が取得できる。
・USB接続で、はんだ付けもブレッドボードも要らないのでお手軽。
背景
・一人暮らし始めてからすぐ眠くなったり気が付いたら何もしないで時間がたってることが増えた。
・CO2濃度が高いと集中力が落ちて眠気を感じるらしいので測ってみたい
使ったもの
Raspberry Pi
CO2-mini(商品リンク)
CO2濃度を読み取る
Raspberry PiにUSBで接続してこちらのPythonモジュールつかえば簡単に読めます。
Github heinemml/CO2Meter
まずはpipでインストール
sudo pip3 install git+https://github.com/heinemml/CO2Meter
サンプルスクリプトを参考に読み込み
なぜかサンプルと同じ2秒の待ち時間ではうまくいかなかったので10秒待ってます。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from CO2Meter import *
from time import sleep
# CO2meterが認識されているデバイスを設定
# 他にUSBデバイス挿してると末尾が1とか2とかになってるかもしれません。
sensor = CO2Meter("/dev/hidraw0")
# ちょっと待つ
sleep(10)
# CO2濃度を取得(単位はppm)
data = sensor.get_co2()
# 表示
print("CO2: {}ppm".format(data["co2"]))
実行結果
$ sudo python3 show_CO2.py
CO2: 936ppm
CO2濃度を定期的に測る
上の表示用プログラムをちょっと修正
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from CO2Meter import *
from time import sleep
from datetime import datetime
import csv
# CO2meterが認識されているデバイスを設定
sensor = CO2Meter("/dev/hidraw0")
# ちょっと待つ
sleep(10)
# CO2濃度を取得(単位はppm)
data = sensor.get_co2()
# 現在日時と時刻を取得
time = datetime.now()
# ファイル名を作成
filename = time.strftime('%y%m%d.csv')
# ファイルに結果を追記
with open(filename, 'a') as f:
writer = csv.writer(f, lineterminator='\n')
row = [time.strftime('%H:%M:%S'),data["co2"]]
writer.writerow(row)
1分周期で動くようにcrontab設定
* * * * * sudo python3 ~/CO2_logger.py
結果
締め切っていると1時間くらいで1200ppmまで上がることが分かった。
窓開けっぱなしじゃないとどうにもならない。引っ越ししたい。
補足
Windows向けのCO2-mini用データロギングソフトがここ(リンク有)にあるので、とりあえず動かしたい方はこちらからどうぞ。
参考資料
チームラボオフィスの空気環境(CO2)を測定して改善している話
CO2モニタリングのためにセンサーをHackした話
[Reverse-Engineering a low-cost USB CO₂ monitor](https://hackaday.io/project/5301-reverse-engineering-a-low-cost-usb-co-monitor Reverse-Engineering a low-cost USB CO₂ monitor)
Github heinemml/CO2Meter