West Gate Laboratory

人生を少しでも,面白く便利にするモノづくり

換気のすゝめ ~M5StackでCO2濃度モニタを作る~

概要

集中力を保ったり、生産性を上げたりするのに換気は本当に大事だよ、意識的に換気するためにCO2濃度を監視しよう、という話。

先日、多くの方から反響をいただいた、CO2濃度モニターのツイート。
このツイートにあるCO2濃度モニターの作り方の紹介。

暇な休日の午後に戯れで作ったものがこんなに反響を呼ぶとは思っていなかった・・・。

(2021年2月13日追記)
スイッチサイエンスさんでM5StackのCO2モニター化キットを販売することになりました! 近日中に発売予定!

www.switch-science.com

(2021年2月26日追記)
発売しました!

背景

会議中、運転中、仕事中、そして流行りのテレワーク中。寝不足でもないのに眠くなったり、集中力が全く出ないことがないだろうか。 私は特に家にいるとそれが起きる事が多い。

昔から「これ、CO2のせいじゃね?」とは思っていたが、そのためにわざわざ環境計測機を買うわけにも行かず、そうなると定量的にわからないので行動を起こせない。
1,2年ほど前に一度本気でCO2モニタを作ろうと思ったこともあったが、適当なセンサが売っておらず諦めていた。

ところが、先日千石電商で買い物をしていると、こんなセンサを見つけた。

www.sengoku.co.jp

CO2+温湿度センサ、SCD30を使ったセンサモジュールである。(2020年4月1日現在欠品中)

手元にM5Stack Basicが転がっていたので、この2つを合わせてCO2濃度モニタを作成した。この記事ではその作り方を示す。

CO2濃度基準

屋内のCO2濃度については、望ましいとされている数値を省庁が基準を定めている。

基準 濃度
建築物環境衛生管理基準厚生労働省 1000ppm以下
学校環境衛生基準文部科学省 1500ppm以下

およそ2000ppmを超えると、頭痛や眠気、倦怠感、注意力散漫などの症状が出るようである

なお、大気中の二酸化炭素濃度は2018年時点で407.8ppmということである。

CO2+温湿度センサSCD30

このセンサは「SensirionのSCD30は高精度非分散型赤外線(NDIR)ベースのCO2センサーで400~10000ppmを±(30ppm + 3%)の精度で検出することができます。」ということである。

このセンサはI2Cで通信ができ、電源電圧も3.3V,5VいずれもOKなのでM5StackのGroveコネクタから接続するだけでも良い。ただし、ピンの並び順がM5Stackとセンサで異なるので注意。

f:id:kaname_m:20200401221646p:plain
Groveを介したM5Stackへの接続

f:id:kaname_m:20200401222453j:plain Groveケーブルは別途用意し、このように接続すればOK。

Groveでなくても、M5Stackの下面・上面いずれにもI2Cのピン(21:SDA,22:SCLピン)がでているので、そこからつないでも良い。ただし、こちらもピンの並び順が異なるので注意。

変換基板を作って、ピンから直接つなぐとこんな感じになる。

f:id:kaname_m:20200401223030j:plain

プログラム

SparkFunのライブラリ

ありがたいことに、このセンサについてはSparkFunがArduino用ライブラリを公開してくれている。 M5StackはArduino環境を利用できるので、このライブラリを使えば、あっという間にできてしまう。

github.com

Arduinoに上のライブラリをインストールしたら、Exampleに入ったBasicReadingsを試してみよう。 ピンの接続が問題なければUARTでとりあえず値が読めるはずである。

なお、このセンサは最初の数分は値が不安定なので、しばらく試運転するのが良い。(どの二酸化炭素センサもそうだと思うけど)

センサの最小読み取り間隔は2秒である。デフォルトは2秒となっているので、まずは2秒毎に読み出すこととした。

画面設計

値が読めたらあとは画面設計だ。

画面については結果はトップのツイートの通りだが、今回は以下のようなレイアウトとした。

  • CO2濃度+温湿度を表示

  • CO2濃度の履歴を表示。グラフはスクロールする。

  • 1000ppm以上を注意2000ppm以上を危険レベルとし、それぞれ黃、赤で表示する(グラフ、文字ともに)

文字表示部分、グラフ部分それぞれSpriteで表示しており、グラフはセンサを取得するごとに1pxずつプロットしながらスクロールしていく。

ソースコードGithubで公開しているので、もし作ってみたいという人がいたら自由に使ってもらって構わない。(初めて公開したのでうまくできているかどうか・・・)

github.com

(2020年4月18日追記)
この記事に対応したソースのバージョンは1.0である。

使った実感

コロナウイルスの影響でテレワークが始まったので、テレワーク中に上のモニタでCO2濃度を監視してみた。
6畳の自室を閉め切って仕事を続けると、1時間かそこらで1000ppmを超えてしまう。
さらに作業を続けると1500ppm近くに達し、そうなると一気に集中力がなくなる。

ここで、換気をすると5分ほどで600ppm程度にCO2濃度は下がる。 すると不思議と集中力が回復するのである。

そう、集中を切らす最大の原因は二酸化炭素なのかもしれない。

また、CO2濃度を監視しながら仕事すると、「1000ppmになるまでに資料仕上げなきゃ!」という謎の締め切り効果が生まれてそれはそれで仕事が捗るのでオススメである。

まとめ

M5StackにCO2濃度センサを接続し、CO2濃度監視モニタを作った。

ツイートに書いた通りだが、換気は本当に大事である。

あなたが会社・家・車など、生活している中で不意に集中力がなくなるときがあるとしたら、それはCO2濃度が高いせいかもしれない。

意識的に換気しよう。

f:id:kaname_m:20200401221809j:plain

(2020年4月5日更新)
後日、機能を更新してスマホ・PCへのプッシュ通知とAmbientを使ったデータ保存・閲覧を実装した。(ver2.0)
詳細はこちらの記事を参照のこと。

westgate-lab.hatenablog.com

(2020年5月6日追記)

CO2濃度モニタを定常運用のためリビングへ置くことにした。

幸い、M5Stackにはネオジム磁石が入っているため、冷蔵庫に貼ることが可能である。
定常運用のためにはUSB-Cによる電源が必要なので、電源として磁石で冷蔵庫に貼り付けることができるUSB充電器を使用した。

磁石で冷蔵庫に貼り付けられるUSB充電器はあまり種類がなく、これがちょうど良かった。

また、このUSB充電器からCO2モニタにUSB-Cで電源を供給するが、USB-Cは一般的に太く、屈曲がしにくいケーブルが多い。
ただ、今回に関してはM5Stackの分しか消費しないため細くて取り回しの良いこちらのケーブルを使用した。

このケーブルは細く取り回しがよいわりに3A流せる優れモノである。

USB充電器とCO2モニタを貼り付け、今ではこのように常時運用中である。

f:id:kaname_m:20200506213906j:plain
USB充電器を冷蔵庫側面に磁石で取り付け

f:id:kaname_m:20200506213910j:plain
CO2モニタ(M5Stack)も磁石で貼り付け。