the invention of t88

工作、資格取得、データ分析のことなど

ラズパイ×MH-Z19でCO2濃度測定

水耕栽培器IoT化(第6回)

またまた間が空いてしまった、水耕栽培器IoT化を進めていきたいと思います。

目標としては今年中に稼動させたい。
大分寒くなってきてるので、室内とは言え植物が正常に育つか不安ですが...。


今回は、CO2濃度センサを立ち上げたいと思います。

下記記事を参考にさせて頂きました。

qiita.com

CO2濃度センサ MH-Z19

CO2濃度センサにはMH-Z19を使います。
結構ネットで関連する記事も見つかり、よく使われている模様。
amazonとかでも売ってますが高いので、Aliexpressで購入しました。

ja.aliexpress.com

結線

結線用にピンヘッダーを半田付け。
f:id:take213uv:20181224075447j:plain


ラズパイと結線。
PWMかUARTかで結線が異なる。
今回はUARTを使うので、下記の様に結線。

ラズパイ MH-Z19
5V Vin
GND GND
GPIO14(UART_TXD) Rx
GPIO15(UART_RXD Tx

※RXDとTXDは互い違いで結線する

f:id:take213uv:20181224134806j:plain

ラズパイ設定、pythonスクリプト

こちらの記事に沿って、

  • UARTを有効化
  • ラズパイ再起動
  • python関連モジュールをpip install
  • git cloneで制御プログラムを取得
    を行う。

CO2濃度取得

制御プログラムを実行。
f:id:take213uv:20181224150231p:plain CO2濃度1899ppm。大分高い。


30分ほど換気後、再測定。
f:id:take213uv:20181224150350p:plain 815ppm。外気が約400ppmらしいのでこの数値はおかしい。

キャリブレーション

ゼロ点補正のコマンドをセンサに送ってキャリブレーションを行う*1
このコードもこちらの記事を参考に。

キャリブレーション後、再測定。 f:id:take213uv:20181224150935p:plain
399ppm。ちゃんとキャリブレーション出来たみたい。

オートキャリブレーションの無効化

デフォルトではオートキャリブレーションが有効になっている。
これは、1日のmin値を400ppmに合わせる仕組みなので、 一日中部屋を閉め切っているような場合は、ゼロ点がずれてしまう。
コマンドを送って無効化する。

先ほどのキャリブレーション用スクリプトを手直し。
センサのマニュアルからオートキャリブレーション入切のコードを確認。
f:id:take213uv:20181224152010p:plain

これに沿って、制御プログラムの
ser.write()内の文字列を
"\xff\x01\x79\x00\x00\x00\x00\x00\x06"
に変更。

戻り値がなく、よく分からないが、多分これでokなはず。

おわりに

大分時間が掛かりましたが、カメラ、温湿度センサ、CO2濃度センサの立ち上げが完了しました。 これで用意したセンサ類の準備は全て完了。

次回は、これらのセンサのデータを定期的にネットワークに上げ、 保存する仕組みを構築したいと思います。


前の記事:ラズパイで温湿度測定
次の記事:ラズパイで取得したデータをAmbientに上げる
水耕栽培器IoT化 目次

*1:zeroといっても0ppmではなく、外気の400ppmに合わせるようにオフセットが掛かる模様。