Arduinoを使った二酸化炭素モニターの改良
◆まえがき
6月頃に作ったアナログ表示付きの二酸化炭素濃度計を実際に使っています。動作に問題は無さそうで、部屋の中の人数や換気状態によって二酸化炭素の濃度が変わるのが判って面白いです。
・外観

アナログ表示があるので、離れた所からでも二酸化炭素濃度が判るので使い易いです。ただ、アナログ表示では変化の傾向までは判りません。時系列の変化はグラフ表示を見れば判るのですが、画面が小さいので近くに行かないと見えません。また、OLED画面の焼き付き対策として、値が変した時だけ表示しているので、常に表示が出ている訳ではありません。
そんな問題を解決するために、二酸化炭素濃度の変化の傾向をLEDの色で表示する機能を付けてみました。
◆回路図

以前公開した回路にLED1とLED2を追加しただけです。
◆プログラム
値が変化した場合にLEDの表示を更新すれば良いので、時計の針を移動させるタイミングでLEDを点灯させるようにしました。もちろん回転方向によって点灯させるLEDの色を変えています。ちなみに、CO2の濃度上昇時は赤色、減少時は緑色のLEDを点灯しています。あと、また、針の運針パルスを利用してLEDを点滅させているので変化があったことが判り易くなっています。
プログラムコードは以下からダウンロード可能です。(拡張子を.inoに変更要)
1) 20210802_MH-Z19C_CO2meter-sjis (Shift-JIS)
2) 20210802_MH-Z19C_CO2meter-utf8 (UTF-8)
3) 20210802_MH-Z19C_CO2meter-utf8-bom (UTF-8 + BOM)
これまでプログラムは Shift-JIS エンコードしたものを公開してきました。これはWebブラウザで読んだ時に日本語のコメントが文字化けすることがあったためです。ただ、最近は海外の読者の方も少し増えていて、そういう方にとっては Shift-JIS のファイルは扱いにくいはずです。そんなことで、UTF-8 のファイルも BOM無しとBOM付きの両方で公開することにしました。なお、UTF-8 の方が一般的だと思うので、将来的にはShift-JIS での公開は止めたいと思っています。
あと、今回のプログラムの更新にはVSCode for Arduino を使ってみました。
◆表示例

CO2濃度が下がった時は、左下のLEDが緑色に点灯します。(上昇時は赤色LEDが点灯します)
◆空気を読む
ここまでの話と関係ありませんが、この二酸化炭素モニターのOLED画面は、CO2センサーの値が変化した時に点灯するようにプログラムしてあります。そんなことで、人が近付いてこのモニターを見ていると、吐く息(に含まれる二酸化炭素)に反応してセンサーの値が上昇し、OLEDの画面が自動点灯します。
これって反応速度は遅いものの、人感センサーとして動作していることになります。それより面白いのは、本当に「空気を読んでいる」わけで、なかなかしゃれの効いた仕掛けだと思います。
◆まとめ
LEDの色で二酸化炭素濃度の増加/減少の傾向が判るようになりました。遠くから状況が判るので便利です。
ただ、単に最後に変化した方向(増減)を表示しているだけなので、値がほとんど変化していない場合でも必ず赤か緑のいずれかが点灯しているので、ちょっと煩わしいかも知れません。同じ状態が例えば5分続いたらLEDを消灯させるようにした方が良いかも知れません。
6月頃に作ったアナログ表示付きの二酸化炭素濃度計を実際に使っています。動作に問題は無さそうで、部屋の中の人数や換気状態によって二酸化炭素の濃度が変わるのが判って面白いです。
・外観

アナログ表示があるので、離れた所からでも二酸化炭素濃度が判るので使い易いです。ただ、アナログ表示では変化の傾向までは判りません。時系列の変化はグラフ表示を見れば判るのですが、画面が小さいので近くに行かないと見えません。また、OLED画面の焼き付き対策として、値が変した時だけ表示しているので、常に表示が出ている訳ではありません。
そんな問題を解決するために、二酸化炭素濃度の変化の傾向をLEDの色で表示する機能を付けてみました。
◆回路図

以前公開した回路にLED1とLED2を追加しただけです。
◆プログラム
値が変化した場合にLEDの表示を更新すれば良いので、時計の針を移動させるタイミングでLEDを点灯させるようにしました。もちろん回転方向によって点灯させるLEDの色を変えています。ちなみに、CO2の濃度上昇時は赤色、減少時は緑色のLEDを点灯しています。あと、また、針の運針パルスを利用してLEDを点滅させているので変化があったことが判り易くなっています。
プログラムコードは以下からダウンロード可能です。(拡張子を.inoに変更要)
1) 20210802_MH-Z19C_CO2meter-sjis (Shift-JIS)
2) 20210802_MH-Z19C_CO2meter-utf8 (UTF-8)
3) 20210802_MH-Z19C_CO2meter-utf8-bom (UTF-8 + BOM)
これまでプログラムは Shift-JIS エンコードしたものを公開してきました。これはWebブラウザで読んだ時に日本語のコメントが文字化けすることがあったためです。ただ、最近は海外の読者の方も少し増えていて、そういう方にとっては Shift-JIS のファイルは扱いにくいはずです。そんなことで、UTF-8 のファイルも BOM無しとBOM付きの両方で公開することにしました。なお、UTF-8 の方が一般的だと思うので、将来的にはShift-JIS での公開は止めたいと思っています。
あと、今回のプログラムの更新にはVSCode for Arduino を使ってみました。
◆表示例

CO2濃度が下がった時は、左下のLEDが緑色に点灯します。(上昇時は赤色LEDが点灯します)
◆空気を読む
ここまでの話と関係ありませんが、この二酸化炭素モニターのOLED画面は、CO2センサーの値が変化した時に点灯するようにプログラムしてあります。そんなことで、人が近付いてこのモニターを見ていると、吐く息(に含まれる二酸化炭素)に反応してセンサーの値が上昇し、OLEDの画面が自動点灯します。
これって反応速度は遅いものの、人感センサーとして動作していることになります。それより面白いのは、本当に「空気を読んでいる」わけで、なかなかしゃれの効いた仕掛けだと思います。
◆まとめ
LEDの色で二酸化炭素濃度の増加/減少の傾向が判るようになりました。遠くから状況が判るので便利です。
ただ、単に最後に変化した方向(増減)を表示しているだけなので、値がほとんど変化していない場合でも必ず赤か緑のいずれかが点灯しているので、ちょっと煩わしいかも知れません。同じ状態が例えば5分続いたらLEDを消灯させるようにした方が良いかも知れません。