はじめに
-
自己紹介
はじめまして。いまいま(@imaima0gou)と申します。
X(旧twitter)のつながりで、コミュニティ"電子工作エントリー"に参加させていただいております。本業はITでなんかする人です。
-
記事作成を行うことになった経緯
上記のコミュニティにて、なんか手を動かそうぜとなりましたので、前々から気になっていた二酸化炭素濃度を計測するデバイスを作ってみることにしました。
同僚とチャットしていて、在宅ワークで頭が冴えない事があるけどなんでかね?とか話していた時「窓閉め切っているとCo2濃度が高くなってよろしくないので濃度計買ったよ!」と聞いたのでネットを物色していたら結局センサのみ買っていました。(同僚はなんでセンサだけなのさ!って言ってましたw)
やりたいこと
Co2センサによる二酸化炭素濃度測定デバイスの作成
結果
できました。
■動画は下記
https://x.com/imaima0gou/status/1801325282420527284
準備
-
デバイス
Amazonだと割高でしたので、センサはセンサは電子工作ステーションさんから購入しました。その他は何となく衝動買いしたストックです。(秋月電子とAmazon怖い)
[電子工作ステーション]
・MH-Z19E(二酸化炭素センサー)PIN付
・小型5V昇圧DCDCコンバーター
[秋月電子]
ブレッドボード(大):衝動買いストック
ジャンパーワイヤ:衝動買いストック
[Amazon]
Arduino nano互換ボード:衝動買いストック
ブレッドボード(小):衝動買いストック
-
PCへのセットアップ
Arduino IDEをPCにセットアップします。
https://www.arduino.cc/en/software
からダウンロードしてインストールしましょう。
回路設計
ブレットボードでざっくり作成しました。
PG作成
Arduino IDEのスケッチは下記になります。
※サンプルコードmh-z19.inoから、LED発行部分を削除しただけになります。
#define pwmPin A0
int prevVal = LOW;
long th, tl, h, l, ppm;
void setup() {
Serial.begin(9600);
pinMode(pwmPin, INPUT);
}
void loop() {
long tt = millis();
int myVal = digitalRead(pwmPin);
if (myVal == HIGH) {
if (myVal != prevVal) {
h = tt;
tl = h - l;
prevVal = myVal;
}
} else {
if (myVal != prevVal) {
l = tt;
th = l - h;
prevVal = myVal;
ppm = 5000 * (th - 2) / (th + tl - 4);
Serial.println("PPM = " + String(ppm));
}
}
}
動作確認
-
Teratermによるロギング
せっかくなので、このログを時系列で記録してグラフにしてみました。
15時から窓を閉めてみたので、そこからCo2の濃度が上昇していることがわかります。
たまに外れ値が出ますね・・。サンプリングの平均で出すのがよいかもしれません。
今回のまとめ
マイコンArduinoで手軽にCo2測定ができることがわかりました。
AmazonなどでもCo2測定器は簡単に入手できますが、表示の仕方を工夫したいとか、IoT的に使用してみたい方は気軽に挑戦できるよい素材ですね。
今後、機能を拡張していきたいと思います。
※言い訳※
本当はUARTでやろうと思ったのですが、なぜか値が読めなかったのでPWMにしました。いつかはそちらも挑戦したいです。
Next Action
今後やっていきたいことです。
- I2CによるOLED表示
- ワイヤレスデータ送信(IoT化)
- Zabbixでのデータ集積
- バッテリー内蔵でどこでも計測
感想いただければ嬉しいです
コメント欄やX@imaima0gouにコメントあればうれしいです!