MH-Z19C(CO2センサー)をArduinoで試す!
こんにちは!
CO2センサーの定番とも言えるMH-Z19シリーズの一番最新モデル、「MH-Z19C」モデルで今回はCO2(二酸化炭素)を測定してみたいと思います!
日常生活上、果たしてどれほどCO2というものが関わってきているか、というのも気になるかと思いますので①に記載しておきます♪
とても簡単なので是非、初心者の方にもおすすめです!
2021年10月追記、最新情報⇩
①「CO2と日常生活への関り」
・近年CO2は環境問題にも注目され、これが地球温暖化を招いていると懸念されています。
しかし、環境問題だけかと思いきや、私たちの日常生活でもCO2はすごく絡んでいます!
例えば、朝起きるとき目覚めが悪い、眠気が収まらない事や、仕事中眠くなってくる事がCO2が絡んでいたり⁉、さり気なく日常生活に関わっています!
そんなCO2を可視化出来たら、面白いと思い、今回CO2を使った電子工作をご紹介したいと思います♪
まず、CO2濃度の基準をどうぞ⇩
350~500ppm | 外気 |
500~1000ppm | 一般的な屋内 |
1000~2000ppm |
悪い室内空気環境
|
2000~2500ppm |
眠気を感じてくる人が出てくる
|
2500~3000ppm |
肩こりや頭痛を感じてくる人が出てくる
|
3000ppm~ |
集中力などが低下してくる
|
これが寝る前と朝、窓を閉めていた時の場合どれほど濃度が変わるのか、みたいな実験もお勧めです!
それでは早速作っていきたいと思います♪
今回はArduinoという定番なマイコンで作り方をご紹介していきます!
②「使う部品」
・MH-Z19C (MH-Z19D,E)
電子工作ステーション 2450円(送料無料)(MH-Z19E)
秋月電子 2480円+送料(MH-Z19C)
※金色と銀色、2種類ありますが機能は同じです。
MH-Z19Bモデルで試したい方はこちらに記事あります⇩
朝の眠気にも影響!? ESP-WROOM02( ESP8266)とCO2センサー(MH-Z19)でCO2濃度を測定してみる
・Arduino UNO
電子工作ステーション 1255円(送料無料)(互換ボード)
※UNO以外の物でも大丈夫です。
・5V出力昇圧DCDCコンバーター
電子工作ステーション 250円(500円以上購入で送料無料)(pinはんだ済み)
秋月電子 300円+送料(pinはんだ未接続)
※Arduinoの5Vから、5V±0.1Vがちゃんと出ていればコンバータなしに、MH-Z19センサーが使えるかもしれません。
・ブレットボード(どんな形状でもOK)
電子工作ステーション 250円+送料(500円以上で無料)(400穴)
・ジャンパーワイヤー(オス・オス)
電子工作ステーション 1セットで100円(送料500円以上で無料)
(Arduinoとコンバータを繋ぐために使用)
・ジャンパーワイヤー(オス・メス)
電子工作ステーション 1セットで100円(送料500円以上で無料)
(Arduinoと5V出力昇圧DCDCコンバーターとMH-Z19Cを繋ぐために使用)
②「配線」
今回はシリアル通信を使った取得方法がなかなか上手くいかなかったのでPWM接続で取得する方法をでやります!
まず、5V出力昇圧DCDCコンバーターにPINをはんだ付けします。
はんだ付けが終わりましたら、下記のように配線していきます。
※尚、pinはんだ済みコンバーターを購入された場合はこの工程は不要です。
MH-Z19C | Arduino接続箇所(接続pin) |
pwm | A0 |
MH-Z19C | 5V出力昇圧DCDCコンバーター(秋月電子) |
V1n | O (OUT) |
GND | G (GND( – )) |
5V出力昇圧DCDCコンバーター(秋月電子) | Arduino接続箇所(接続pin) |
I (IN(四角いマスの方)) | 5V( + ) |
G (GND( – )) | GND( – ) |
※CO2センサーのHDピンはゼロキャリブレーション様です。
(ゼロキャリブレーションとは、測定値をリセットして測定値がゼロとなるように調整する作業です。)
やり方は幾つかあるそうですが、一番簡単な方法は下記の様になります。
- 400ppmの場所(屋外や喚起された屋内など)で20分程動作させる。
- HDピンをGNDに7秒接続する。この瞬間が400ppmとして調整されます。
ゼロキャリブレーションは基本しなくて大丈夫です。数値が大幅におかしいと感じた時に試してみましょう!
※上記の回路図はMH-Z19Bの画像を使いっているためセンサーの白い部分の位置が違います。
③「プログラミング」
・いよいよプログラミングですが、その前に今回はGitHbuで公開されているライブラリ、
「MHZ19_uart.h」というものを使わせて頂きますのでArduinoIDEにこちらのライブラリーを入れてください。
手順は簡単で、こちらからライブラリーをダウンロードして解凍します。
・解凍が終わりましたら「mhz19_uart-master」というフォルダーごと
「libraries」(C:\Users\…..\arduino\libraries)に入れるだけです。
後はArduinoIED起動させ、ファイルスケッチ例の中にmhz19_uartがあれば準備完了です。
⇩コード⇩
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 |
#define pwmPin A0 int prevVal = LOW; long th, tl, h, l, ppm; void setup() { Serial.begin(9600); pinMode(pwmPin, INPUT); } void loop() { long tt = millis(); //電圧を取得 int myVal = digitalRead(pwmPin); //パルス長の計測 if (myVal == HIGH) { if (myVal != prevVal) { h = tt; tl = h - l; prevVal = myVal; } } else { if (myVal != prevVal) { l = tt; th = l - h; prevVal = myVal; ppm = 5000 * (th - 2) / (th + tl - 4); Serial.println("PPM = " + String(ppm)); } } } |
④「結果」
成功するとこんな感じになります⇩
★窓を空けた状態の部屋
★臭い息を吹きかけたとき
★ガスを使い餃子と焼きそばを作っているとき
このような結果が出ました!
このようにCO2は結構値が変わります!
これを意識すれば、作業効率が向上しより良い生活が送れるようになるかもしれません♪
※シリアルモニターに何も表示されない場合は、シリアルモニター画面の右下が「9600bps」に選択されているか確認してください。
以上、ご閲覧ありがとうございました^^
★最新モデル登場⇩(2021年10月5日追記)
Mhz19Cを用いてフルカラーを光らせる場合pwmでMhz19Cを運用するとフルカラーledが暴走してしまうのですが、ド素人工作さんはもう試されましたか?
コメントありがとうございます^^
19Cではまだ試したこと無いです。
ちなみにどういった配線をされましたでしょうか??
詳しい状況を頂けると助かりますm(__)m