ここまででできたこと
- 環境モニタを作ろう 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以下) |
---|
とされているので、ここの環境は基準を下回っているので、よし!ですね。
センサーに息を吹きかけてみると値が上がるのがわかるかと思います。
これで、二酸化炭素の濃度は測れるようになったので、次は一酸化炭素濃度を測れるようにしてみましょう!