朝の眠気にも影響!? ESP-WROOM-32とCO2センサー(MH-Z19)で二酸化炭素(CO2)を測定してみる!
こんにちは!
前回はESP-WROOM02でCO2(二酸化炭素)を取得する方法をご紹介しましたが、
今回はESP-WROOM32を使ってご紹介します!
前回の内容⇩
皆さんは日常生活でCO2(二酸化炭素)を気にしたことはありますか?
実はCO2は日常生活において大きな影響を及ぼすんです!
下記がCO2濃度の大まかの基準です。
350~500ppm | 外気 |
500~1000ppm | 一般的な屋内 |
1000~2000ppm |
悪い室内空気環境
|
2000~2500ppm |
眠気を感じてくる人が出てくる
|
2500~3000ppm |
肩こりや頭痛を感じてくる人が出てくる
|
3000ppm~ |
集中力などが低下してくる
|
ちなみに、日本での二酸化炭素濃度の基準値は建築物衛生法によって、
居室内は1,000ppm以下、幼稚園、保育園、学校は1,500ppm以下と定められています。
では、自分の部屋が今どのくらいのCO2濃度(ppm)なのかESP-WROOM32とCO2センサーを使って測定してみましょうというのが前回内容で、
今回もほぼ同じようにご紹介したいと思います!
(開発環境はArduinoIEDを使用します)
今回CO2濃度に使うセンサーはMH-Z19Bというものを使います!
・MH-Z19BはCO2の濃度を赤外線で測定し、0~5000ppmの範囲で結果を、PWM通信のパルス幅または、
シリアル通信で出力してくれます。
- サイズ 上の画像を参考に縦が2cm、横金部分が2.6cm、基盤を含めた横が4cm
- 非分散形赤外線吸収式
- 電源 3.6〜5V
- 平均電流 18mA未満
- インターフェイス UART または PWM 3.3V
- 動作温度 0~50度
- プリヒート 3分
- 温度補正あり。精度は±50ppm + 5%
※今回はシリアル通信で作ります。
(CO2センサーで安価なものはMQ-135などがありますが正直熱を発生するし
精度があまり良くなかったです。)
それでは、早速取得したいと思います!
①「使う部品」
・MH-Z19B
メルカリ(2021年6月28日時点ではメルカリにて3000円代で販売中)
楽天でも購入可⇩
※MH-Z19Cモデルが秋月電子などで売っておりますが性能が上がっている分、扱いが難しく今回紹介するやり方では動きませんのでMH-Z19Bをご使用ください。
※MH-Z19Bモデルは現時点で、秋月電子などでの取り扱いは無いですので楽天やメルカリにて入手することをお勧めします。
・ESP-WROOM-32(ESP-WROOM-32D開発ボード ¥1,480)
※ESP-WROOM32はpinが多すぎて自分で回路を組むと大きくなってしまいますので
今回は開発ボードを使います。
・ブレッドボード 6穴版 EIC-3901ブレットボード
(ESP-WROOM32は幅が広い為6穴版でないと差せません)
・ジャンパーワイヤー
・ブレッドボード・ジャンパーワイヤ
(ブレットボードで回路を組むとき、見栄え良く綺麗に繫げられますのであると便利)
※センサーをブレットボードに差せるようにするため、はんだ付けが必要になります。
②「IDEにESP-WROOM32とMH-Z19を使えるようにする」
・Arduino IDEにESP-WROOM32を使えるようにするために、
ライブラリーをインストールする必要があります!
・こちらをご参考に↓
・MH-Z19を使えるようにするためには、ライブラリーを入れる必要があります!
今回は「MHZ19_uart.h」というものを使わせて頂きますので
ArduinoIDEにこちらのライブラリーを入れてください。
手順は簡単で、こちらからライブラリーをダウンロードして解凍します。
・圧縮フォルダーの解凍が終わりましたら「mhz19_uart-master」というフォルダーごと
「libraries」(C:\Users\…..\arduino\libraries)に入れるだけです。
後はArduinoIDEを起動させ、ファイルスケッチ例の中にmhz19_uartがあれば準備完了です。
③「回路」
・MH-Z19には9ヵ所差し口があると思いますが今回は4ヵ所のみ接続します。
※ここはどうしても半田付けが必要です(;^ω^)
半田付けしてブレットボードにさせるように改良しておくと便利でね。
一番手っ取り早いのはジャンパーワイヤーを、
そのままセンサーと直付けしてしまうことですね^^
MH-Z19 | 接続箇所(接続pin) |
Vin | 5V( + ) |
GND | GND( – ) |
Tx | IO4 |
Rx | IO14 |
接続するとこんな感じです⇩
※画像をクリックすると綺麗に拡大できます。
※Tx、Rxは今回のプログラムに合わせて配置しているだけです。
空いているIOpinがあればそちらにしていただいても問題ありません。
④「いよいよプログラミング」
・ESP-WROOM32を書き込みモードにして下記のプログラムを書き込めば完了です!
・ESP-WROOM-32D開発ボードで、書き込みモードのやり方は、
ケーブル差し口左右にある小さなボタンでモードを切り替えます。
右ボタンを押しながら左ボタンをプッシュすると書き込みモードになります!
書き込みモードになるとシリアルモニターにはこんな感じで表示されます⇩
5秒ごとにCO2を取得するプログラムです⇩
・ちなみにコード内にさり気なく記載してあります気温取得ですが、
精度は悪く±3度くらいはありました!
※ビルドをした際に、こんなエラーが出たら書き込みモードになっていないのが原因です。
2018/7/21追記
※シリアルモニターに変な暗号が表示されたり、何も表示されない場合、
シリアルモニターの右下にあるbpsが115200bpsになっているか確認してください。
※シリアルモニターが選択できない場合、まずツールの中にあります「シリアルポート:COM 」が選択されているか確認してください。
これが選択できない状態だたUSBケーブルが原因の可能性があります。
USBケーブルは必ずデータ通信が可能なものを使用しましょう。
⑤「実行結果」
※画像をクリックすれば綺麗に見れます。
朝起きの寝室で取得したためCO2濃度が高いですね(;^ω^)
・このことから、屋内にいるときはこまめに換気をすることでCO2濃度を下げ、
結果として作業の効率化に繋げることが可能です。
応用編↓
ESP-WROOM-02とESP-WROOM-32は全く同じプログラムで
動きますので是非試してみた下さい^^
以上、ご訪問ありがとうございました^^