室内のCO2濃度が1000ppmになると、思考力、集中力が減少するとのことで
室内のCO2濃度を測定してみました。
使ったのはM5StackとMH-Z19Cです。

MH-Z19Cは2秒/回程度、赤ランプが点灯しますが、見つめてなければ気にならない程度です。
また、MH-Z19Cでは温度も取得できるようですが、精度良くなさそうです。
(写真撮影時に温度が28℃あったとは思えないです。)
取得方法間違えていたらスミマセン。
-
環境
- M5Stack Basic
- MH-Z19C
- Windows 10 (作業用PC)
-
事前準備
-
接続
- M5Stack BasicとMH-Z19Cの接続もこちらを参考にしました。
M5Stack側 | MH-Z19C側 |
---|---|
"G" | "GND" |
"5V" | "Vin" |
"16" | "Tx" |
"17" | "Rx" |
- ソースコード
ほぼ参考元のコピペで作成しました。
# include <M5Stack.h>
# include "MHZ19_uart.h"
# define RX 16
# define TX 17
# define INTERVAL 1 // 毎秒表示
MHZ19_uart myMHZ19;
void setup(){
M5.begin();
M5.Power.begin();
M5.Lcd.setTextSize(5);
M5.Lcd.print("start");
delay(100);
myMHZ19.begin(RX, TX);
myMHZ19.setAutoCalibration(false);
}
void displayCo2(int co2, int temp) {
M5.Lcd.clear();
M5.Lcd.setCursor(0, 0);
M5.Lcd.println("CO2 ppm");
M5.Lcd.println(co2);
M5.Lcd.println("Temperture");
M5.Lcd.print(temp);
}
int count = 0;
int co2 = 0;
int temp = 0;
void loop()
{
if ((count % INTERVAL) == 0 ) {
co2 = myMHZ19.getCO2PPM();
temp = myMHZ19.getTemperature();
displayCo2( co2, temp );
} else {
M5.Lcd.print(".");
}
count++;
delay(1000);
}
Arduino IDEで上記ソースコードを保存します。
その後、コンパイルとマイコンボードへの書き込みを実施すると
M5Stackの画面に冒頭のCO2濃度(ppm)と温度が表示されました。
おまけ
作業中、次のコンパイルエラーが発生しました。
「WiFi.h」に対して複数のライブラリが見つかりました
使用済:C:\Users\hogehoge\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi
未使用:C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi
「SD.h」に対して複数のライブラリが見つかりました
使用済:C:\Users\hogehoge\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.6\libraries\SD
未使用:C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\SD
使用済のフォルダは削除可能でしたが、削除して再コンパイルすると次のエラーが発生したため、削除差し戻し。
"Architecture or board not supported"
未使用のフォルダは削除できなかったため、Arduino IDEをアンインストール。
そしてArduino IDEを再インストールするとエラーは解消しました。