朝の眠気にも影響!? 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
- 非分散形赤外線吸収式
- 電源 4.5〜5.5V
- 平均電流 20mA
- インターフェイス UART または PWM 3.3V
- 動作温度 0~50度
- プリヒート 3分
- 温度補正あり。精度は±50ppm + 5%
※今回はシリアル通信で作ります。
(CO2センサーで安価なものはMQ-135などがありますが正直熱を発生するし
精度があまり良くなかったです。)
それでは、早速取得したいと思います!
※2023年10月追記
0~5000ppmの範囲で測定できるMH-Z19Bは入手が難しく、現在は400~5000ppmがほとんどとなっています。
①「使う部品」
・MH-Z19B
電子工作ステーション 3900円(送料無料)
※MH-Z19Cモデルが秋月電子などで売っておりますが性能が上がっている分、扱いが難しく今回紹介するやり方では動きませんのでMH-Z19Bをご使用ください。
※MH-Z19Bモデルは現時点で、秋月電子などでの取り扱いは無いですので、電子工作ステーションうや楽天やメルカリにて入手することをお勧めします。
・ESP-WROOM-32 (ESP-WROOM-32D)
電子工作ステーション 1050円(送料無料)(30pinモデル)
電子工作ステーション 1750円(送料無料)(ESP32D)(38pinモデル)
秋月電子 1600円+送料(38Pinモデル)
※楽天にて横幅を細くしたバージョンが登場‼
pin番を無くした代わりに細くなっているので、ブレットボードで使いやすくなりました‼
6極ブレットボードではなく定番のブレットボードで使えるようになるのでススメです⇩⇩⇩
・通信用マイクロUSBケーブルタイプB (家に無ければ)
電子工作ステーション コネクターも含め約800円(送料無料)(着脱式)
秋月電子 120円+送料
ESP-WROOM-32とパソコンを繋ぐためのケーブルです。
100円ショップなどでも販売していますが、スマホ用充電専用タイプだと使えないのでご注意ください。
・ブレッドボード 6穴版 EIC-3901ブレットボード
(ESP-WROOM32は幅が広い為6穴版でないと差せません)
電子工作ステーション 495円+送料(500円以上で無料)
・ジャンパーワイヤー(オス・メス)(4本)
電子工作ステーション 1セット(10本)100円+送料(500円以上で無料)
②「IDEにESP-WROOM32とMH-Z19を使えるようにする」
・Arduino IDEにESP-WROOM32を使えるようにするために、
ライブラリーをインストールする必要があります!
・こちらをご参考に↓
Arduino IDEでESP-WROOM-02(ESP8266)とESP-WROOM-32を使えるようにする!(Windows10)
・MH-Z19を使えるようにするためには、ライブラリーを入れる必要があります!
今回は「MHZ19_uart.h」というものを使わせて頂きますので
ArduinoIDEにこちらのライブラリーを入れてください。
手順は簡単で、こちらからライブラリーをダウンロードして解凍します。
・圧縮フォルダーの解凍が終わりましたら「mhz19_uart-master」というフォルダーごと
「libraries」(C:\Users\…..\arduino\libraries)に入れるだけです。
後はArduinoIDEを起動させ、ファイルスケッチ例の中にmhz19_uartがあれば準備完了です。
③「回路」
センサーの裏面にある記載を参考に接続していきましょう‼
MH-Z19B | 接続箇所(接続pin) |
Vin | 5V( + ) |
GND | GND( – ) |
Tx | IO4 |
Rx | IO14 |
接続するとこんな感じです⇩
※画像をクリックすると綺麗に拡大できます。
※Tx、Rxは今回のプログラムに合わせて配置しているだけです。
空いているIOpinがあればそちらにしていただいても問題ありません。
④「いよいよプログラミング」
・ESP-WROOM32を書き込みモードにして下記のプログラムを書き込めば完了です!
・ESP-WROOM-32D開発ボードで、書き込みモードのやり方は、
ケーブル差し口左右にある小さなボタンでモードを切り替えます。
右ボタンを押しながら左ボタンをプッシュすると書き込みモードになります!
書き込みモードになるとシリアルモニターにはこんな感じで表示されます⇩
5秒ごとにCO2を取得するプログラムです⇩
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/*---------------------------------------------------------- MH-Z19 CO2センサーサンプルプログラム ----------------------------------------------------------*/ #include <MHZ19_uart.h> const int rx_pin = 4; //Serial rx pin no const int tx_pin = 14; //Serial tx pin no MHZ19_uart mhz19; /*---------------------------------------------------------- MH-Z19 CO2 sensor setup ----------------------------------------------------------*/ void setup() { Serial.begin(115200); mhz19.begin(rx_pin, tx_pin); mhz19.setAutoCalibration(false); Serial.print("MH-Z19 now warming up... status:"); Serial.println(mhz19.getStatus()); delay(500); } /*---------------------------------------------------------- MH-Z19 CO2 sensor loop ----------------------------------------------------------*/ void loop() { int co2ppm = mhz19.getPPM(); int temp = mhz19.getTemperature(); //CO2濃度出力 Serial.print("co2: "); Serial.println(co2ppm); //気温出力(おまけ機能ですが精度は悪いです) Serial.print("temp: "); Serial.println(temp); delay(5000); } |
・ちなみにコード内にさり気なく記載してあります気温取得ですが、
精度は悪く±3度くらいはありました!
※ビルドをした際にエラーが出たら書き込みモードになっていないのが原因の可能性が高いです。
書き込みモードにしてからやり直しましょう。
2018/7/21追記
※シリアルモニターに変な暗号が表示されたり、何も表示されない場合、
シリアルモニターの右下にあるbpsが115200bpsになっているか確認してください。
※シリアルモニターが選択できない場合、まずツールの中にあります「シリアルポート:COM 」が選択されているか確認してください。
これが選択できない状態だたUSBケーブルが原因の可能性があります。
USBケーブルは必ずデータ通信が可能なものを使用しましょう。
⑤「実行結果」
※画像をクリックすれば綺麗に見れます。
朝起きの寝室で取得したためCO2濃度が高いですね(;^ω^)
・このことから、屋内にいるときはこまめに換気をすることでCO2濃度を下げ、
結果として作業の効率化に繋げることが可能です。
ESP-WROOM-02とESP-WROOM-32は全く同じプログラムで
動きますので是非試してみた下さい♪
以上、ご訪問ありがとうございました^^