今回は、ちょっとお高いセンサを使ってみました。
CO2(二酸化炭素)センサ 【MH-Z19C】
データシートはこちら。
https://www.winsen-sensor.com/d/files/infrared-gas-sensor/mh-z19c-pins-type-co2-manual-ver1_0.pdf
まず見た目が金色でお高く見えます!
表側
裏側
実はこのセンサ、NDIR(非分散赤外線吸収法)と呼ばれる検出方法のセンサになっています。
ガスの検知では結構良さそうなので、一度使ってみたくて購入してみました。
配線はシンプルで、4本だけ繋げればOK
配線図はこのようになります。
初めはTxD-Rx、RxD-Txと繋いでいたのですが、それだと繋がらなかったので逆にしたらいけました。
表示ミス?
(2022.3.29 追記)
ノードを最新版に更新すると、TxD - Rx、RxD - Tx の接続で動作しました。
繋げると、こんな感じになります。
Arduinoかラズパイか、どちらで動かそうと悩んでいたところ、Node-REDのノードが配布されているのを見つけて即こちらを選択。
ピンポイントでこのセンサのノードがあるとか本当に助かる・・・。
参考にさせて頂いたのはこちらの記事になります。
まずはノードの追加。
「z19」で検索すると、2つ出てきます。
今回は上のノード「node-red-contrib-mh-z19-co2sensor」を使いました。
うまく追加できると、1つのノードが追加されます。
今回は、ボタンを押したら値を取得するようにしました。
本当は連続して値を取りたいけど、それはまた後日。
このような感じに繋げました。
各ノードの中身は下記のようにしました。
inject
「文字列」に変更して「getCO2」と入力。
これをセンサのノードに送ってあげます。
MH-Z19-CO2Sensor
今回使用したのはRaspberryPi2ModelB ですが、初期値のままでいけました。
シリアルポートの設定は、ラズパイ本体の設定を1箇所変更する必要があります。
- シリアルポート :有効
- シリアルコンソール :無効 (初期値は有効になっている)
このあと、ラズパイ本体を再起動。
debug
こちらは初期値のまま。
この内容でデプロイすると、injectノードを押すたびにCO2濃度が取得できます。
うん、良い感じ!!
部屋のCO2濃度値は800前後、息を吹きかけると2,000近い値になりました。
あと、温度のデータもついでに取ってくれています。
軽く調べてみると、CO2濃度は1,000ppm以下が望ましいようです。
1,000ppmを超えたら換気するなど、警告を出すようにしたいですね。
これでまたやりたいことに1歩近づきました。