ほこりとCO2を検知し部屋を超快適な空間にする‼
こんにちは!
本日はほこりセンサーとCO2センサーを組み合わせて、超快適な部屋にしたいと思います‼
イメージとしては、センサーで取得 → 環境が悪かったら窓を空けるです!
窓を空ける作業も自動にしたいところですが、メカ的な問題もあり、今回はとりあえずセンサーで部屋の環境を把握できる装置に仕上げます。
※一部はんだ付けをする箇所が御座います。
①「部品」
・ほこりセンサー(DSM501A)
現在はAmazonにも楽天にも秋月にも販売してなく電子工作ステーションなどで入手可能‼
電子工作ステーション 1450円(送料無料)
・MH-Z19E (MH-Z19C,Dでも可)
電子工作ステーション 2450円(送料無料)(MH-Z19E)
・ESP-WROOM-32(NodeMCU-32)
電子工作ステーション 1350円(送料無料)(38Pin)
※ESP32には、主に「NodeMCU-32」と「DevKitC V4」の2種類があります。
NodeMCU-32の方は、pin表示を無くした分、横幅が細くなっているので通常のブレットボードに収まります。
そのため、今回はNodeMCU-32を使います。
・5V出力昇圧DCDCコンバーター (ESP32から5V(±0.1V)が出力されてない場合)
電子工作ステーション 250円(500円以上購入で送料無料)(pinはんだ済み)
※MHZ19は、5V(±0.1V)を必要とします。ESP32には5V出力はありますが、実際は4.8Vしか出て無く、MHZ19センサーが上手く動作しないことがたまにありますので、
念のためコンバーターを付けておくと確実です。
・通信用マイクロUSBケーブルタイプB (家に無ければ)
秋月電子 120円+送料
ESP-WROOM-32とパソコンを繋ぐためのケーブルです。
100円ショップなどでも販売していますが、スマホ用充電専用タイプだと使えないのでご注意ください。
・ブレットボード(400穴)
電子工作ステーション 260円+送料(500円以上で無料)(400穴)
・ジャンパーワイヤー(オス・オス)(5本)
電子工作ステーション 1セット(10本)110円+送料(500円以上で無料)
・ジャンパーワイヤー(オス・メス)(4本)
電子工作ステーション 1セットで100円(送料500円以上で無料)
②「配線」
まず、DSM501Aの付属ケーブルをブレッドボードに差せるよう、PINをはんだ付けします。
次はDSM501AとESP32を繋ぐためにブレッドボードに配線していきます!
配線配置は下記に⇩
・DSM501Aのサンプルコード、英語版ですがご参考までに一応載せておきます。
ほこりセンサー(DSM501A) | ESP32 |
1(Control1)(黒) | |
2(Vout2)(赤) | 16 |
3(5V +-0.5V)(白) | 5V |
4(Vout1)(黄) | |
5(GND)(茶orオレンジ) | GND |
※HDピンはゼロキャリブレーション様です。
(ゼロキャリブレーションとは、測定値をリセットして測定値がゼロとなるように調整する作業です。)
やり方は幾つかあるそうですが、一番簡単な方法は下記の様になります。
- 400ppmの場所(屋外や喚起された屋内など)で20分程動作させる。
- HDピンをGNDに7秒接続する。この瞬間が400ppmとして調整されます。
ゼロキャリブレーションは基本しなくて大丈夫です。数値が大幅におかしいと感じた時に試してみましょう!
MH-Z19E | ESP32(接続pin) |
Tx | 4(D4) |
Rx | 5(D5) |
MH-Z19E | 5V出力昇圧DCDCコンバーター |
V1n | Vo |
GND | GND |
5V出力昇圧DCDCコンバーター | ESP32(接続pin) |
Vi | 5V( + ) |
GND | GND( – ) |
※上記の画像のMH-Z19センサーBタイプのものです。C,D,Eは白い部分が左側にあります。(配線はかわりません。)
③「開発環境」
★Arduino IDE開発環境
Arduino IDEをまだ入れてない方はこちら⇩
Arduino IDEでESP-WROOM-02(ESP8266)とESP-WROOM-32を使えるようにする!(Windows10)
★Arduino IDEでNodeMCU-32を使えるようにする
Arduino IDEでNodeMCU-32を使えるようにするやり方⇩
★MH-Z19のライブラリー導入
今回はGitHbuで公開されているライブラリ、
「MHZ19_uart.h」というものを使わせて頂きますのでArduinoIDEにこちらのライブラリーを入れてください。
手順は簡単で、こちらからライブラリーをダウンロードして解凍します。
・解凍が終わりましたら「mhz19_uart-master」というフォルダーごと
「libraries」(C:\Users\…..\arduino\libraries)に入れるだけです。
後はArduinoIED起動させ、ファイルスケッチ例の中にmhz19_uartがあれば準備完了です。
DSM501Aのライブラリーは必要ないのでこれで以上です。
④「プログラミング」
ESP32をPCと繋ぎ、下記のコードをコピペしビルドします。
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 |
/* DSM501A */ int pin = 16; unsigned long duration; unsigned long starttime; unsigned long sampletime_ms = 30000;//パルス幅30秒間(データシートの計測方法が30秒の為) unsigned long lowpulseoccupancy = 0; float ratio = 0; float concentration = 0; /* MHZ19 */ #include <MHZ19_uart.h> const int rx_pin = 4; //Serial rx pin no const int tx_pin = 5; //Serial tx pin no MHZ19_uart mhz19; void setup() { Serial.begin(115200); pinMode(pin, INPUT); starttime = millis(); mhz19.begin(rx_pin, tx_pin); mhz19.setAutoCalibration(false); Serial.print("MH-Z19 now warming up... status:"); Serial.println(mhz19.getStatus()); } void loop() { /* DSM501A取得処理 */ duration = pulseIn(pin, LOW); lowpulseoccupancy = lowpulseoccupancy + duration; if ((millis() - starttime) > sampletime_ms) { ratio = lowpulseoccupancy / (sampletime_ms * 10.0); // Integer percentage 0=>100 concentration = 1.1 * pow(ratio, 3) - 3.8 * pow(ratio, 2) + 520 * ratio + 0.62; // using spec sheet curve Serial.print(" パルス幅の占有率[%]"); Serial.print(ratio); Serial.print(" DSM501A計測粒子数[pcs/283ml]:"); Serial.println(concentration); lowpulseoccupancy = 0; starttime = millis(); /* CO2の取得処理 */ int co2ppm = mhz19.getPPM(); int temp = mhz19.getTemperature(); //CO2濃度出力 Serial.print("co2: "); Serial.println(co2ppm); //気温出力(おまけ機能ですが精度は悪いです) Serial.print("temp: "); Serial.println(temp); } } |
シリアルポートを開き、右下のところを115200bpsにすれば準備完了です。
プログラムの流れとしては、
起動→30秒待機→DSM501Aセンサー取得→CO2センサー(MH-Z19)取得→30秒待機の繰り返しです。
⑤「結果」
30秒に一回センサーの値が表示されますので、まずは気長に待ちます。
CO2センサーも正確な数値を取得するのに1分ほど掛かかります。
そうすると下記のように表示されていきます。
こんな感じになれば成功です‼
センサーの前で服を1分ほどぱたぱたしてみたら、下記のように値が跳ね上がりました(笑)
これがあれば、部屋に今ほこりが多いのか、CO2濃度が高いのかが確認できます‼
CO2センサーは温度の取得もしてくれますが、精度は優れていないため、おまけ程に見ましょう‼
これにて完成、さらにLEDを付けて色で部屋環境を示すようにしたら更に面白いですね^^
★CO2濃度の基準⇩
350~500ppm | 外気 |
500~1000ppm | 一般的な屋内 |
1000~2000ppm |
悪い室内空気環境
|
2000~2500ppm |
眠気を感じてくる人が出てくる
|
2500~3000ppm |
肩こりや頭痛を感じてくる人が出てくる
|
3000ppm~ |
集中力などが低下してくる
|
以上、ご閲覧ありがとうございました‼
分からないことが御座いましたら、お気軽にコメントください。