Python
RaspberryPi
python3

CO2センサを部屋につけてログを取る

ざっくり言うと

・部屋の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秒待ってます。

show_CO2.py
#!/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濃度を定期的に測る

上の表示用プログラムをちょっと修正

CO2_logger.py
#!/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まで上がることが分かった。
窓開けっぱなしじゃないとどうにもならない。引っ越ししたい。
image.png

補足

Windows向けのCO2-mini用データロギングソフトがここ(リンク有)にあるので、とりあえず動かしたい方はこちらからどうぞ。

参考資料

チームラボオフィスの空気環境(CO2)を測定して改善している話
CO2モニタリングのためにセンサーをHackした話
Reverse-Engineering a low-cost USB CO₂ monitor
Github heinemml/CO2Meter