arduino CO2 濃度計

注意

こいつは結構試行錯誤しました. 下の記録はそれなりに整理したもの.

概要

arduino を使って CO2 濃度を測りたい.

これまでにやってきた, 温度・湿度・圧力を測る (BME280) もの に, CO2 センサーを加える.

ここに書いてあるのは, UART でデータをやり取りする場合の記録.

使用機材

  • arduino uno
  • CO2 センサー (MH-Z19C)
    • 秋月電子通商 (ここ) から購入.

参考ページ

配線

基本的には, こちらの配線に CO2 センサーを加える.

  • MH-Z19C の Vin を arduino の 5 V に接続.
  • MH-Z19C の GND を arduino の GND に接続.
  • MH-Z19C の Tx を arduino の 6 に接続.
    • Tx を 1←TX に接続したらいけないのね
  • MH-Z19C の Rx を arduino の 7 に接続.
    • Rx を 2←RX に接続したらいけないのね

補足 1

よくわかっていないのだが, センサーの Tx の接続した先は arduino の Rx になるらしい. そして, センサーの Rx の接続した先は arduino の Tx になるらしい. だから, arduino 上で動くスケッチで指定する Tx のピンはセンサーの Rx に繋がっていて, arduino 上で動くスケッチで指定する Rx のピンはセンサーの Tx に繋がっている.

補足 2

ここでは以上の配線で十分だが, PWM も繋いでおくと, PWM 通信のときにも使える.

  • MH-Z19C の PWM を arduino の 8 に接続.

ライブラリのインストール

MH-Z19C を便利に使えるライブラリをインストールする.

ここを参考にして, <URL:https://github.com/nara256/mhz19_uart> からライブラリの zip ファイル (mhz19_uart-master.zip) をダウンロード.

  • [スケッチ] -> [ライブラリのインクルード] -> [.ZIP 形式のライブラリをインストール... ] で, ダウンロードしたライブラリをインストール

スケッチ

ここを参考にして, スケッチを作成.

上にも書いたように, スケッチ上で指定する RX, TX のピンは, センサーでは TX, RX にそれぞれ繋がることに注意.

実行

スケッチを検証 (コンパイル) して書き込む (転送する) と, LCD (とシリアルモニタ) に圧力と温度が表示される.

写真

後日談 1

当初, 素直にライブラリを用いて CO2 濃度を読むと高すぎるようだった (> 1000 ppm とか).

そこで, CO2 濃度を 2000/5000 = 0.4 倍してみることにした. (用いているセンサーは, 2000 ppm までの範囲を扱う時と 5000 ppm までを扱う時があるようで(?), ライブラリは後者を想定しているが今は前者になっているのかもしれない.)

しかし, その状態で換気すると/屋外で測ってみると, 値が小さすぎる (< 400 ppm). そこで素直にライブラリを用いて読んだ CO2 濃度の値を使うことにした.

その結果の (屋内での) 値は, ~600 ppm とか. これはこれで高すぎるような. (ちなみに, 売り物の CO2 濃度計の数値は 400 ppm.)

後日談 2

こちらを参考にして, 電源を安定させるためにこの DC コンバータを使ってみたが, CO2 濃度の値はほぼ変わらなかった.

後日談 3

PC のシリアル接続への出力は, PC のソフトウェアを介してファイルに保存できる. 例えば, TeraTerm を使ってシリアルポートをモニタ出来るので, TeraTerm でファイルにログを出力することができる.

そのために書き換えたスケッチがこれ.

なお, Excel でも data streamer という機能でシリアルポートをモニタ出来るらしい. (自分の PC に入っていた Excel は古くてできなかったけれど.)