33.自動ミニトマト栽培機(環境測定装置) (2021.6.1-2021.8.15)

準備編ではミニトマト栽培機に使用するセンサー類の実験をしました。それを元に実用化のための環境測定装置を作ります。測定装置はそのまま本番の制御にも使う予定です。測定するのは準備編を踏襲して、
1.ミニトマト周囲の温度・湿度(大気)と照度(太陽光)
2.鉢の中の温度・水分量
です。個別のテストはできているので、それらを組み合わせたシステムを構築します。まずは、このシステムを使ってミニトマトを栽培する環境データを測定し、今後の制御の基礎データを得ることにします。どのような条件で生育が進むのか把握するためには、条件を変えて色々実験もしなければなりません。これまでのように育てながら、環境データのみを取得するテスト運用は可能ですが、システムが完成するには何年もかかる気長な作業です。千里の道も一歩からと言いますし、地道に計画を進めて行きたいと思います。


植え付けから1月半ほど経過(6/23)して、実が赤みを帯びてきました。

環境測定用のプログラムは、センサーごとにモジュール化してメインプログラムから利用します。テキストファイルとして確認頂けます。(使用時は拡張子を.pyにする)
メインプログラム: miniTomatoSaibai_main.py
以下は各センサー用モジュールです。DHT11で使用する既製のコア・モジュールは「24.温度・湿度測定(DHT11)」でご確認下さい。
照度センサー: bh1750fvi_input.py
大気温度・湿度センサー: dht11_input.py
地中水分センサー:: mcp3204_input.py
地中温度センサー: ds18b20_input.py

プログラムを走らせると、30分(後に10分)ごとに自動で全センサーデータを取得します。データは逐次ファイルに保存し、1日ごとに2種類のファイルを作成します。一つは目視でのデータ確認用、もう一つはグラフ化するためのCSVファイルです。水分センサーは補正値と個体差の関係で、マイナスの値や100%を超えるケースも出てきます。範囲外は値を丸めてしまっても良いのですが、様子を見るために現状はこのままにしておきます。実は現状では装置にやや問題があり、大気温度・湿度センサーは時々値の取得に失敗(正常なデータでは無い)し、測定開始時に照度センサーの値がしばらく上がってきません。センサー自体の問題かもしれませんが、今は課題として保留にしておきます。地中温度センサーにも課題があり、時々データ取得不能になります。これは一度システムを終了して電源を切った上で再度起動しなければ復旧しません。致命的な問題のため原因の究明が必要です。もしかするとセンサーに固有の問題があるのかもしれません。

水分センサーは検出部はそのまま水に入れても良いものの、回路部分の防水性は全く無いので下図のように対策を施しました。回路部に絶縁テープを巻き、その上からエポキシパテで固めています。ケーブルはチューブでガードし、隙間部分はエポキシ樹脂で覆いました。完全ではありませんが、ある程度の防水性は期待できるので、多少雨に濡れる等しても大丈夫だと思います。地中温度センサーは元々防水型なので問題ありません。

測定装置の全体像は下の写真のようなものです。上に写る白い箱状のものが制御装置本体になります。右にあるのはペットボトルの上を切り取った水タンクです。水補給用のポンプを沈めてあります。装置の要であるRasPiはバージョン3のModel Bです。初代のModel B+を使う予定でしたが、処理能力が低くて最新のRaspberry Pi OSを満足に走らせることができませんでした。RasPi本体を含む電気回路部は、直射日光や雨を避けるために軒下に設置し、更にプラスチックケースで全体を覆っています。100円ショップでケースになりそうな手頃なものがあったので流用することにしました。軽くて見た目も上々です。柔らかくて加工性も良いのですが、逆にバリが付きまとうので後処理に苦労します。金属ヤスリでは取り除けないため、デザインカッターで不要部分を切り取ります。それでも加工部分はあまりきれいにならないので、ワッシャーやゴムプッシュを使って見苦しい部分を隠すことにしました。ファンの丸穴はカッターの歯で円形にくりぬく工具を使っています。電脳知恵袋のコーナーで、ゴムベルトを作る際に使用したものです。少しずつ溝を深く切り込んでいくとうまく加工できます。

RasPiはフタの内側に固定してあります。普段は無線LANを介してWindows PCからリモートで使うので、内部にすっきりと収められます。いざと言う時には直接モニターやマウス等を接続できるし、メンテナンスも楽になって便利なはずです。フタを開けた時の様子は下の写真を参照して下さい。RasPiの左下に見えるのは照度センサーで、右上に見えるのが空中温度・湿度センサーです。ファンがあるとは言え内部は温度上昇するでしょうから、温度・湿度センサーは外に出したいところですが、とりあえず収まりが良いのでこの位置で様子を見ます。照度センサーは箱の上部の穴から光を取り込みます。センサー類はクッション付きの両面テープでケースに固定しています。


フタ側:RasPiを固定


箱側:電源やファンを内蔵

前述したように夏場の高熱を避けるため、ケースには空冷ファンも取り付けます。そのため、反対側に吸気用の穴を開けフィルターを貼り付けてあります。フィルターはホームセンターで防塵マスクの交換用を購入しました。電源はノートPC用のACアダプタ(19V、3.42A)を流用します。我が家にはこの手のアダプタがゴロゴロしているので、適当なものをチョイスしました。DC-DCコンバーターで降圧して使うので、電流容量さえある程度あれば何でも構いません。装置にはDC-DCコンバーターを2個使用しており、1個はRasPiを含むロジック用で出力5V(5Amax)を、もう1個は水中ポンプ用で可変式(1.25~36V、8Amax)のものです。水中ポンプのモーターは3V定格と記されていましたが、恐らくモーターの定格は1.5V(3Vmax)なので、安全を見込んで2.5Vに設定しておきます(定格では十分に水を吸い上げられないでしょうから、この位が妥協点と思われます)。なお、電流は500mA程度と見込んでいます。

箱側の内部は上の写真を参照して下さい。わかりにくいですが、左側の上に見えるのが5Vに降圧するDC-DCコンバーター(非常にコンパクト)、下に見えるのが可変式DC-DCコンバーターです。特に後者は販売仕様だけ見るとかなり高性能ですが、価格からして眉唾物です。電圧可変範囲や電流規格は半分程度に見込んでおいた方が無難です。耐久性も不明なので実験用と割り切っています。ボリュームで出力電圧を調整できますが、リニアに変化しないのでやや使いにくいです。両コンバーターはクッション付きの両面テープでケースに固定しています。中央が中間基板で各種接続中継やADコンバーター、リレーモジュールを搭載します。基板にスペーサーは付いていますが、メンテナンスしやすいように固定していません。ケースの底に置いてあるだけです。そして右に見えるのが冷却用の排気ファンです。ご覧のように内部はバラックに近い状態ですが、実験用なのでこれで間に合わせます。


後部ファン、電源スイッチ、電源ソケット等

冷却ファンは12V仕様のため、DC-DCコンバーターで5Vに降圧した電圧を更に昇圧コンバーターで12Vにしています。ACアダプタからの電圧を三端子レギュレーターで降圧する方法もありますが、たまたま手元に使い道の無いマイクロ昇圧コンバーターがあったので流用しました。電流値はたぶんギリギリですが、さほど素子も発熱していないので大丈夫でしょう。今回は水やりに水中モーターを使いますが、将来的に電磁ソレノイドを使う可能性もあるので、出力電圧や電流は余裕があった方が良いと考えています。そのためフレキシブルに対応できるよう、ON/OFF制御はリレーモジュールを使うことにしました。最終的にはFETでスイッチングしたいところです。

ファンの反対側には吸気口が3個あり、前述したように異物の混入を避けるためにフィルターを付けてあります。上の黒い部分はカメラの穴を塞いでいるゴムで、RasPi用のマイクロカメラを裏から貼り付けられるようにしてあります。今回は使いませんが、遠隔地からモニターもできるよう配慮しました。


前部吸気口、上の黒い部分はカメラ用の穴

DHT11が時々データの取得に失敗する旨を前述しましたが、1度のデータ取得で成功するまで最大10回リトライする処理を追加したため(前記のプログラムも対策済)、ここまで確認した限りでは失敗は無くなりました。ところで、チェック時に気付いたのですが、DHT11は小数点以下が常に0しか取得できないはずなのに、測定装置に取り付けたデバイスからは小数点以下1桁の値が得られています。以前のテストでは確かに小数点以下は0だったはずです。不思議に思ったのですが、よくよく考えてみたら途中でDHT11のコア・モジュールを新たにゲットしたものに差し替えたのでした。「24.温度・湿度測定(DHT11)」でも書きましたが、処理が改良されて小数点以下1桁まで値が取得できるようになったようです。これは嬉しい誤算で、DHT11の応用範囲が大幅に広がるものと期待できます。

上で紹介した個別のセンサー用プログラムは単独でも動作するモジュールですが、実用段階に向けてメインのプログラムと統合することにしました。更に常時コンソールで値を確認できるよう、専用のウインドウを開いて測定値表示と手動給水もできるようにしたいと思います。最終的には1日分のデータをグラフ化する機能も加え、状況を把握したり自動栽培のための検討の材料にするつもりです。続きは応用編で解説します。

<補足>
今年のミニトマトは収穫時期を迎えているので、実際に運用するのは来年以降になります。当然栽培に必要なデータも得られないので、来シーズンまでは花の栽培機として実験を続けたいと考えています。元々はミニトマト栽培機として作ったものですが、ソフト次第で他の作物や花等にも使えるものです。つまり汎用の植物栽培装置なので、有効性を確認するためにも色々チャレンジしようと思います。基本となるハードができたことで、今後は重要なソフト開発に取り組めます。

<追記(2021.8.15)
温度センサーDHT11が時々データ取得に失敗する問題は、処理プログラムをその後入手した改良型に変更して解決しました。温度も小数点以下1桁まで取得できるようになり満足いくものです。なお、地中温度センサーDS18B20が時々データ取得不能に陥る問題は、2個のセンサーにおいて1個目と2個目のデータ読み込みの間に1秒の時間待ちを入れてみました。デバイスの制限で連続データの取得には750ms以上のWAITが必要になるようです。しかし、原因は他にあるようで解決には至っていません。頻度は高くは無いものの、1度エラーを起こすとRasPiの電源オフが必須となり厄介です。ネットでも同様の事例があることから、センサー自体の設計・製造不良も疑われます。安価なため信頼性が低い点は否めないので、別のセンサーがあれば試してみたいところです。 → その後のシステム稼動で、センサーを1個にした場合はエラーの発生が無くなりました。

ボックス内の大気温度センサーは、室内の温度計に比べてやや高めの値になっているようですが、フタを開放した状態でも温度に変化が見られないため、このままの位置で固定しておきます。それに何らかの装置異常(デバイス焼損等による高温化)が起きた時に、ボックス内の温度検知にも兼用できて一石二鳥です。通常は40度以上の気温になることは無いので、警告を発するか電源を強制的に切断する等の対策も検討すべきかもしれません。

<追記(2023.11.25)
本項で取り上げている照度センサーのプログラムには誤りがあります。ネットからの流用だったのですが、それ自体が仕様に沿った使い方をしていませんでした。照度センサーについては「46.照度センサーBH1750FVIの検証」で詳しく検証しており、プログラムもそちらを参照して下さい。