ベータコンピューティングの活動や技術、開発のこだわりなどを紹介するブログです。



続:M5StackとCO2センサーで会社の空気改善を試みた

皆さんこんにちは。作業場の空気は快適ですか?

前回の記事では、弊社のオフィスの空気の悪さに憤り、二酸化炭素濃度をM5Stackで取得し、濃度が濃くなったら怒ってもらう機能の実装までやりました。今回はいくつかの改善を行いつつ、実際に使ってみての反応についてまとめます。

 

外形の改善

二酸化炭素センサが外に出ているのが少々不格好だったので、M5Stackの中に組み込みました。組み込むにあたり、M5Stack用プロトモジュール(スイッチサイエンスで購入)を2個購入しました。

 

プロトモジュール1つだけだと二酸化炭素センサがケースに収まらないため、下記の図のように1つのプロトモジュールに二酸化炭素センサを実装し、もう片方のプロトモジュールの基板の真ん中を切り取り、それらをスタックすることで、二酸化炭素センサが収まるようにしました。

f:id:betacomputing3:20180615153159j:plain

M5Stackのモジュールはケース付で売られているため、外観を綺麗にでき、基板を保護できる安心感があっていいですね。 

 

データの視覚化

また、1日の二酸化炭素濃度の推移を確認し、分析を行うため、グラフ化しようと考えました。その為、30分ごとのデータの平均を取ってグラフしてM5Stackの画面に表示しつつ、下記の図の流れでWebで見れるようにしました。

f:id:betacomputing3:20180615153237p:plain

現在弊社のやり取りはチャットツールのSlackを使っています。このサービスに通知されるほうが皆が見やすい為、Slackにグラフデータを送る方針で考えました。

 

Slackに対しデータを送る手段として、Webサービス同士をつないでくれるIFTTTを使うことにしました。IFTTTのThis(送り元のサービス)をWebhooks、送り先をSlackにすることで、M5Stackから送ったWebリクエストをIFTTTがSlackに投稿してくれます。

 

また、グラフを画像化するため、URLを画像に変換してくれるImage Charts APIを使って、グラフURLを投稿するようにしました。(このサービスは非推奨APIですが、手っ取り早く始めたかったので暫定的に使いました。ごめんなさい。)

 

数日間使ってみた

そんなこんなで完成し、実際にオフィスで使い始めました。実際とれたデータを下記に示します。

f:id:betacomputing3:20180615153256p:plain

今は大分暑くなり、下画像のように基本的にオフィスの窓を開けているのですが、12時から人が増えて二酸化炭素濃度が増え、14時に窓だけでなくオフィスのドアも開けたところ、二酸化炭素濃度が減ったことがわかりました。空気の通り道が増えた為でしょうか。

f:id:betacomputing3:20180615153314j:plain

また、たまに頭痛がすると言っていたエンジニアが、換気を始めたら頻度が減ったとのことで、効果が出ているように思えます。もし頭痛がしたり、頭がぼうっとする方も、そうでない方も、換気してみてはいかがでしょうか?

f:id:betacomputing3:20180615153340j:plain

M5StackとCO2センサーで会社の空気改善を試みた

皆さんこんにちは。突然ですが皆さんはちゃんと換気していますか?

弊社のエンジニアが、オフィスでよく頭が痛くなるという話をしていて、Web上で調べてみると、室内の二酸化炭素濃度が高いと、集中力や意思決定に支障をきたしたり、眠くなったり頭痛を引き起こす等の症状を起こすそうな。1000ppmを超えると思考力に影響し始めるとの報告もありました。

 

試しに弊社のオフィスの二酸化炭素濃度を測ってみると・・・

f:id:betacomputing3:20180523151943j:plain

うわっ…職場の二酸化炭素濃度、高すぎ…?

しっかり換気をしたいのは山々なのですが、弊社のオフィスは夏は熱く、冬は寒い。おまけに雨もよく降る。できる限り窓は開けたくない・・・

ということで適切な時間に換気することを呼びかけてくれるシステムを作ってみました!

 

準備したもの

・M5Stack Gray(スイッチサイエンスで購入)

二酸化炭素センサー(MH-Z19B : Aliexpressで購入)

・ロジックレベル双方向変換モジュール(スイッチサイエンスで購入)

音声合成用ライブラリ(AquesTalk pico for ESP32 使用ライセンス : アクエストオンラインショップで購入)

 

M5StackはWifiBluetooth搭載モジュールのESP32をベースに、320×240のフルカラーLCDやスピーカー、リチウムイオン電池にケースまで付いたものをワンパッケージにしてあり、ArduinoIDEやmicroPython等開発環境も充実しているので、Maker界隈でもホットな優れものです。今回準備したものは9軸センサ付きの「M5Stack Gray」ですが、今回の用途であれば安価な「M5Stack Basic」でも大丈夫です。

 

二酸化炭素センサーは0-5000ppmのデータをPWMもしくはシリアルで取得でき、比較的安価なものを選びました。

 

二酸化炭素センサーは5Vで動作しますが、M5Stackは3.3Vで動作するので、ロジックレベル双方向変換モジュールを挟んでデータを5Vから3.3Vに変換します。

 

今回換気が必要になったら音声で注意してもらおうと思い、SDカードのmp3ファイルを再生させようと考えていましたが、より柔軟にメッセージを変えてみようと思い立ち、音声合成ライブラリを使うことにしました。

 

音声合成用ライブラリは、軽量な音声読み出しライブラリとして名高いAquesTalkをM5Stackの内部のESP32用に作られたものを使っています。これにより、文字列から音声に変換し、再生することができます。ライセンスが無くても試用はできますが、制限等も出てきますのでライセンスを購入しました。

 

今回のざっくりとした配置図は下記のようになります。

f:id:betacomputing3:20180523152051p:plain

 

実装

今回プログラムで実装した機能は下記の通りです。

  1. 電源を入れて3分ほどキャリブレーションの為に待つ。
  2. 「センサーの調子が終わりました」と声を出し、センサのデータ収集を開始。
  3. ある程度の濃度になると「換気してください」と声を出す。
  4. 二酸化炭素濃度が改善されないと、1分毎に「・・・そろそろ、換気してください」と脅す。

 

下記の動画のような感じで動きます。


1700ppmで警告を出すテスト

 

次の記事では機能を追加しつつ、実際に使ってみたレポートをまとめます。