ここまででできたこと
- 環境モニタを作ろう with ESP32 DEV Module 〜 No1. まずは動かして見よう
- 環境モニタを作ろう with ESP32 DEV Module 〜 No2. 温度湿度センサーをつけよう
- 環境モニタを作ろう with ESP32 DEV Module 〜 No3. wifiに接続して、https通信を試してみよう
- 環境モニタを作ろう with ESP32 DEV Module 〜 No4. 温度と湿度データをクラウドに入れたい!AWS-IoTを使ってみよう #aws-iot
- 環境モニタを作ろう with ESP32 DEV Module 〜 No5. ESP32からAWS-IoTへデータをPublish #aws-iot
- 環境モニタを作ろう with ESP32 DEV Module 〜 No6. AWS-IoTからDynamoDBへ #aws-iot
DynamoDBまでセンサーのデータが格納できることがわかったので、他のセンサーも取り付けていきましょう。
温度湿度センサーに加えて、今回は二酸化炭素濃度を測るセンサーをつけてみましょう。
MH-Z14A NDIR赤外線二酸化炭素センサモジュール
今回はこれを使います
仕様書はこちらです。
MH-Z14 Intelligent Infrared Gas Module User’s Manual
二酸化炭素センサとESP32 DEV Moduleをつなげます
ESP32 DEV Moduleと二酸化炭素センサの接続は以下のようにしています
| ESP32 | MH-Z14A |
| GND | 1(黒) |
| 5V | 2(赤) |
| IO17 | 3(青) |
| IO16 | 4(緑) |
ハードウェアシリアル通信を使います
温湿度センサーの時は、I2Cという規格のシリアル通信を使いましたが、今回の二酸化炭素センサは、ハードウェアシリアル通信を使います。
ESP32には、ハードウェアシリアル通信については、UART0, UART1, UART2 の3系統あります。UART1は、パソコンと通信するのに使っているので、今回は、UART2(IO16,IO17)を使います。
二酸化炭素センサから値を取得します
ハードウェアシリアル通信で、UART2を使うよという宣言をsetupの中でします。
#include <HardwareSerial.h>
HardwareSerial serialCO2(2);
void setup() {
// put your setup code here, to run once:
// initialize both serial ports:
Serial.begin(115200);
serialCO2.begin(9600);}
loopで二酸化炭素の値を取りに行きます
void loop() {
// put your main code here, to run repeatedly:
getCO2();
delay(10000);
}
コマンドを生成して、実行して値を取り出して計算して出力します!
void getCO2()
{
byte getcmd[9] = { 0xff, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79 };
sendCO2(getcmd);
}
void sendCO2(byte cmd[])
{
const int len = 9;
byte value[9];
int val;
serialCO2.write(cmd, len);
int retry = 0;
while (! serialCO2.available()) {
delay(100);
if (retry++ > 0) {
break;
}
}
while (serialCO2.available() > 0) {
for (int i = 0; i < len; i++) {
value[i] = serialCO2.read();
}
// printArray(value, len);
if (value[0] == 0xff && value[1] == 0x86) {
val = value[2] * 256 + value[3];
Serial.println( (float)val ) ;
}
}
}
二酸化炭素の濃度は?
シリアルモニターで確認して見ましょう。
二酸化炭素の濃度はppmです。だいたい400ppmあたりですね。
厚生労働省の建築物環境衛生管理基準について、のサイトに空気環境の基準があり、
| 二酸化炭素の含有率 | 100万分の1000以下(=1000 ppm以下) |
|---|
とされているので、ここの環境は基準を下回っているので、よし!ですね。
センサーに息を吹きかけてみると値が上がるのがわかるかと思います。
これで、二酸化炭素の濃度は測れるようになったので、次は一酸化炭素濃度を測れるようにしてみましょう!