今回は、ちょっとお高いセンサを使ってみました。

 

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歩近づきました。