COVID-19 のパンデミックでみんながお家にこもるようになりました。 でも、たまにはお出かけしたいですよね。
お出かけするときに気になるのが、そこで換気がしっかり行われているかどうか、です。
換気の目安となる CO2 濃度を測る測定器が欲しくなり、以下の記事を参考に自作してみました。
使用しているセンサーは MH-Z19B というセンサーで、非分散赤外線吸収法 (non-disperse infrared, NDIR) という赤外線の吸収により CO2 濃度を測るしくみのようです。このセンサーのデジタル出力を、arduino という小型コンピュータで読み出して、ディスプレイに表示するしくみですね。Arduino は安い arduino nano 互換機、ディスプレイは 128 × 64 ドットの有機ELディスプレイ (organic light-emitting diode, OLED) を使いました。一番高価なのは CO2 センサーですね。
ついでに、LED でおおまかな換気状態を表示することにしました。arduino の D2, D3, D4, D5 ピンに 150 Ωの抵抗を介してそれぞれ、青、緑、黄色、赤の LED を接続し、以下のように制御しました。
void setup() {
MHZ19Serial.begin(9600);
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
pinMode(2, OUTPUT); //D2 pin blue
pinMode(3, OUTPUT); //D3 pin green
pinMode(4, OUTPUT); //D4 pin yellow
pinMode(5, OUTPUT); //D4 pin red
}
void LED(const word ppm) {
if (ppm < 500) {
digitalWrite(2, HIGH); // 500 ppm 未満は青色点灯 (ほぼ外気)
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
} else if (ppm <= 1000) {
digitalWrite(2, LOW); // 500-1000 ppm は緑(通常) ビル衛生管理法の基準
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
} else if (ppm <= 1500) {
digitalWrite(2, LOW); // 900-1500 ppm は黄色(注意)学校環境衛生基準
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
} else if (ppm < 2000) {
digitalWrite(2, LOW); // 1501-1999 ppm はオレンジ(黄色+赤)(予備的警告)
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
} else {
digitalWrite(2, LOW); // 2000 ppm 以上は赤(警告)
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
}
}
あとは loop() の中で LED(ppm) を呼ぶようにして、LED を点灯させることができました。
古いモバイルバッテリーから USB で給電するようにして、穴を開けた箱に詰め込んだら、冒頭の写真のような持ち歩きできる CO2 センサーになりました。
続きがあります。

コメント