0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ESP32入門】CO2モニターを作る #2 CO2センサー編

0
Posted at

【はじめに】
前回(#1 環境構築編)でArduino IDEのセットアップが終わりました。
今回はいよいよCO2センサー MH-Z19C を接続して、CO2濃度を取得します。

【なぜCO2モニターを作るのか】
私がこれを作ろうと思った理由は2つです。

・家の中のCO2濃度を実際に調べたかった
・電子工作と組み込み技術を習得したかった

部屋の空気が悪いと集中力が落ちると言われますが、実際の数値を見たことがありませんでした。
また、私は作業中に眠くなることがあり、これもCO2濃度の問題ではないかと思い、一度計測してみようと思いました。
それなら自分で作って、測ってみようと思ったのがきっかけです。

【使用する部品】

部品 説明
ESP32-WROOM-32E メインのマイコン
MH-Z19C CO2センサー

MH-Z19CはNDIR方式という仕組みのCO2センサーで、比較的正確に測れて初心者にも扱いやすいです。
※NDIR方式(非分散型赤外線)とは、CO2が赤外線を吸収する性質を利用していて、
光がどれだけ吸収されたかでCO2濃度を測ります。
霧が濃いほど光が届きにくいのと同じ原理です。

【配線】
MH-Z19CとESP32を以下のように接続します。

MH-Z19C ESP32
Vin 5V
GND GND
TX GPIO13
RX GPIO14

ここで最大の注意点があります。
センサーの TXはESP32のRX側、RXはESP32のTX側 につなぎます。送信と受信は交差させるのが基本です。

#include <HardwareSerial.h>
#include <MHZ19.h>

MHZ19 myMHZ19;
HardwareSerial mySerial(2);

void setup() {
  Serial.begin(115200);
  mySerial.begin(9600, SERIAL_8N1, 13, 14);
  myMHZ19.begin(mySerial);
  myMHZ19.autoCalibration(false);
}

void loop() {
  int co2 = myMHZ19.getCO2();
  Serial.print("CO2: ");
  Serial.println(co2);
  delay(5000);
}

【使用ライブラリ】
ライブラリマネージャから以下をインストールします。

MHZ19 by Jonathan Dempsey

【コードの簡単な解説】
・mySerial(2) → ESP32の2番目のシリアル通信を使う
・mySerial.begin(9600, SERIAL_8N1, 13, 14) → GPIO13とGPIO14でセンサーと通信する
・myMHZ19.getCO2() → CO2の値を取得する
・delay(5000) → 5秒ごとに測定する

【つまずいたポイント】
配線を間違えてなかなか動きませんでした。
最初、ESP32とセンサーの配線を間違えていて、CO2の値がうまく取得できませんでした。
特にTXとRXは交差させる必要があるのですが、ここを真っ直ぐつないでしまっていたのが原因でした。
配線が正しいか何度も確認することが大事だと学びました。

【動かしてみた結果】
配線を直して書き込むと、Serial Monitorにこう表示されました。

CO2: 583
CO2: 590
CO2: 601

初めて自分の作ったセンサーから数値が出てきたときは、本当に嬉しかったです。
これが電子工作の醍醐味だと感じました。

【まとめ】
・MH-Z19CとESP32を配線して、プログラムを書き込む
・CO2の値をセンサーが取得して、をSerial Monitorに表示できた

次回はCO2が高くなったらGmailで通知する機能を追加します!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?