睡眠時のCO2濃度を観察!ESP-WROOM02でCO2センサー(MH-Z19)を稼働してみる!
こんばんわ!
今回は前回の続きで、実際に寝室で窓を閉めた状態で寝た場合どのようにCO2濃度が変化していくのかを、
ESP-WROOM02とCO2センサー(MH-Z19)で実験してみようと思います!
前回の記事↓
朝の眠気にも影響!? ESP-WROOM02( ESP8266)でCO2濃度を測定してみる(MH-Z19)
では、まず前回のおさらいとして、CO2濃度は日常生活において大きな影響を及ぼすことを説明した後に、
実際にESP-WROOM02とCO2センサー(MH-Z19)を使ってCO2を取得してみるところまでやりましね!
今回はその応用として、0時00分から7時00分まで30分ごとにCO2(ppm)を取得し、
取得した時間とCO2(ppm)をシリアルモニターに表示します。ついでにグラフ化して見やすくしてみたいと思います。
では早速手順の説明に入りたいと思います!
①「時間を取得するためのライブラリーを用意」
・今回もGitHbuで公開されているライブラリ、「NTP.h 」というものを使わせて頂きますので
ArduinoIEDにこちらのライブラリーを入れてください。
手順は簡単で、こちらからライブラリーをダウンロードして解凍します。
解凍が終わりましたら「sketchLibraryNTP-master」というフォルダーごと、
「libraries」(C:\Users\…..\arduino\libraries)に入れるだけです。
※ArduinoIEDでMH-Z19を使えるようにするためのライブラリー「mhz19_uart-master」をまだ導入していない方はこちらも導入しておきましょう!
こちらからライブラリーをダウンロードして解凍、「mhz19_uart-master」というフォルダーごと「libraries」(C:\Users\…..\arduino\libraries)に入れるだけです。
あとはArduinoを再起動し、ファイルスケッチ例の中にsketchLibraryNTPとmhz19_uartがあれば準備完了です。
②「プログラミング」
・時間も取得するため、前回のプログラムにタイムゾーンの設定やWI-FIの設定、
日時と時刻の取得をするプログラムを追記しました。
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
/*---------------------------------------------------------- MH-Z19 CO2センサーサンプルプログラム ----------------------------------------------------------*/ //ESP-WROOM02をWI-FIに取得するためのライブラリー #include <ESP8266WiFi.h> //MH-Z19取得に必要なライブラリー #include <MHZ19_uart.h> //日付取得に必要なライブラリー #include <NTP.h> //日本時刻に設定(タイムゾーン) #define JST 3600*9 //接続する無線のSSID #define WIFI_SSID "***" //接続する無線のPS #define WIFI_PASSWORD "***" //MH-Z19に接続するためのpinナンバー const int rx_pin = 4; //Serial rx pin no const int tx_pin = 5; //Serial tx pin no MHZ19_uart mhz19; //日付格納 String date; /*---------------------------------------------------------- MH-Z19 CO2 sensor setup ----------------------------------------------------------*/ void setup() { // 自分のネットワークに合わせてください WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { Serial.print('.'); delay(500); } //タイムゾーン設定 configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp"); Serial.begin(115200); pinMode(12, OUTPUT);//メッセージ用LEDなので無くても問題ありません。 mhz19.begin(rx_pin, tx_pin); mhz19.setAutoCalibration(false); Serial.println("MH-Z19 now warming up... status:"); Serial.println(mhz19.getStatus()); delay(1000); } /*---------------------------------------------------------- 日付取得 ----------------------------------------------------------*/ void getTime() { ntp_begin(2390); time_t n = now(); time_t t; char s[20]; const char* format = "%04d/%02d/%02d_%02d:%02d:%02d,"; // JST t = localtime(n, 9); sprintf(s, format, year(t), month(t), day(t), hour(t), minute(t), second(t)); date = s; //日付と時間表示 Serial.println("JST : " + date); } /*---------------------------------------------------------- メイン ----------------------------------------------------------*/ void loop() { //日時時刻取得 getTime(); int co2ppm = mhz19.getPPM(); int temp = mhz19.getTemperature(); //メッセージLED消灯 digitalWrite(12, LOW); //CO2濃度出力 Serial.print("co2: "); Serial.println(co2ppm); //気温出力(おまけ機能ですが精度は悪いです) Serial.print("temp: "); Serial.println(temp); //30分ごとに繰り返す delay(30 * 60 * 1000); //メッセージLED点灯 digitalWrite(12, HIGH); //改行 Serial.println(); } |
実行結果はこんな感じになります↓
(シリアルモニターで表示)
2018/7/21追記
※表示されない場合、シリアルモニターの右下にあるbpsが115200bpsになっているか確認してください。
※シリアルモニターが選択できない場合、まずツールの中にあります「シリアルポート:COM 」
が選択されているか確認してください。
これが選択できない状態だたUSBケーブルが原因の可能性があります。
USBケーブルは必ずデータ通信が可能なものを使用しましょう。
※ビルドをした際に、こんなエラーが出たら書き込みモードになっていないのが原因です。
(GPIO 0(IO0)をLOWの状態で起動させるときのみ書き込みモード、LOWじゃなければ実行モードになります。)
改善されない場合はもう一度②「配線」を読み直してみてください。
③「実験結果!」
・実験方法は0時00分から7時00分まで30分ごとにCO2(ppm)を取得し、
取得した時間とCO2(ppm)をシリアルモニターに表示します。
ついでにグラフ化して見やすくしてみたいと思います。
(実際には少し遅刻して0時01分から開始しました)
実験環境は畳2畳分くらいの広さ寝室で、測定前に空気の入れ替えを30分しました。
その結果実験開始時には540ppmまで下がりました。(空気の入れ替え前は約750ppmでした)
CO2濃度(ppm) | 気温(℃) | |
0時00分 | 540 | 18 |
0時30分 | 1105 | 19 |
1時00分 | 1329 | 19 |
1時30分 | 1512 | 20 |
2時00分 | 1472 | 19 |
2時30分 | 1471 | 20 |
3時00分 | 1482 | 19 |
3時30分 | 1491 | 21 |
4時00分 | 1524 | 20 |
4時30分 | 1489 | 20 |
5時00分 | 1480 | 20 |
5時30分 | 1422 | 20 |
6時00分 | 1461 | 22 |
6時30分 | 1025(6時25分に窓を開けてみた) | 21 |
7時00分 | 1488(6時31分に窓を閉めました) | 21 |
(気温はMH-Z19に内蔵されている気温です。温度計と比べてみたところ1~3度ほど高かったです。)
グラフにするとこんな感じ↓
・結果として、たったの30分で1000ppmを超えることがわかりました!
もう一度基準を見てみましょう!
500~1000ppm 一般的な屋内
1000~2000ppm 悪い室内空気環境
3000ppm~ 集中力などが低下してくる
5件のフィードバック