45.GARDEN-TEC個別テスト (2023.10.22-2023.11.9)

GARDEN-TECの制御ボックス内部は次のようになっています。写真では見えませんが、中央の基板の下にRasPi(モデル3B)があります。基板とRasPiをGPIOでケーブル接続することでI/Oを分離し、メンテナンス性を向上しています。

ハードが完成したところで(現時点では風向・風速計を除外)ソフトの作成にかかります。まずは個別のデバイスのテストが必要です。GARDEN-TECの制御ソフトは個別のテストプログラムを元に開発を進めます。公開するテストプログラムは、毎回お断りしている通り拡張子が「.txt」になっているので「.py」に置き換えて下さい。参考にされる場合は自己責任でお願いします。

簡単なところから、投光器と散水器のON/OFF動作を確認します。I/O出力のピン番号が異なるだけで、基本的には同じプログラムを使用します。ウインドウ上のボタンを押すと機能がONになり、投光器は10秒後、散水器は5秒後にOFFになります。ハードにおいては、それぞれのリレー接点に並行してメカニカルスイッチを結線してあり、手動でもON/OFFできるようになっています。一方ソフトにおいては、それぞれにON/OFFボタンを備えて遠隔操作できるようにし、本番ではRasPiによる防犯のための自動運用機能を提供します。

GARDEN-TECにおいては、BOUHAN-TECの機能を全面的に取り込みたいと考えていて、夜間の監視のために赤外線ライトを追加し、警告機能(パトライトのフラッシュと警告音)の実現も予定しています。いずれもGPIOのピン番号が違うだけで、制御部のハードは同じものになっています。因みに各々のGPIO番号は下記を想定しています。
投光器(LEDライト):GPIO20
警告装置:GPIO21
赤外線ライト:GPIO22
散水器:GPIO25

投光器のテストプログラム
散水器のテストプログラム

次に雨滴センサーですが、センサー自体は基板のプリントパターン間の抵抗を測るだけの単純なもので、コンパレーターを使ってリレー出力をON/OFFします。原理は乾いた状態ではパターン間に大きな抵抗がありますが、雨が降ると抵抗値が下がることで検知するわけです。テストプログラムでは5秒間隔でセンサー出力をチェックし、雨が降っていない時にはSUNNY、雨を検知するとRAINと表示します。雨滴センサーのGPIO番号は次の通りです。
雨滴センサー:GPIO16

雨滴センサーのテストプログラム

最初に購入した雨滴センサーは基板にプリントパターンを施しただけのもので、見るからに耐久性は無さそうでした。案の定、数日雨に当たっただけでパターンが錆び、使い物にならなくなりました。検出回路基板自体はきちんと動作していましたが、これでは製品として欠陥としか言いようがありません。保護のためのメッキ処理は最低限必須です。そうした製品も売られているようなので、次は吟味したいと思います。実はこうなることは予想していたことで、amazonの送料を節約するためにとりあえず購入したのでした。別途新たに購入したものはメッキ処理がされていて、ある程度の耐久性は期待できそうです。耐久性の高い雨滴センサーを得るためには、センサー自体の素材も重要です。こうした簡易型のものでは無く、別の方法で検知するようなアイデアもあるので、いずれ追求したいものです。

侵入者が発する赤外線の動きを検知するのがモーションセンサーです。人感センサーとも言われ、センサーライトやヒーター等に組み込まれているのをよく見かけます。GARDEN-TECではカメラと連動する形で監視と録画を行うのに利用します。テストプログラムでは1秒間隔でセンサー出力をチェックし、何も無い時にはWAITと表示し、人を検知するとDETECTと表示します。モーションセンサーのGPIO番号は次の通りです。
モーションセンサー:GPIO12

人感センサーのテストプログラム

侵入者を捉えるもう一つのデバイスが超音波距離センサーです。超音波発信器と受信器がセットになっていて、ターゲットまでの距離を測定します。GARDEN-TECでは対象物を検出するだけで無く、手動操作でセンサーの方向を変えることができ、広範囲の検知を可能にしています。センサーの回転にはサーボモーターを使用し、テストプログラムではスライダを操作することで方向を変えます。同時に対象物までの距離を表示します。超音波距離センサーのGPIO番号は次の通りです。
超音波距離センサー(トリガー):GPIO23
超音波距離センサー(エコー):GPIO24

超音波距離センサーのテストプログラム

気象に関する機能として、GARDEN-TECは気圧センサーを備えます。採用したモジュールは超小型の基板ながら、気圧(気圧・高度・海面気圧)の他に温度も測定できます。そのため、制御ボックス内にセンサーを設置して、外部の温度/湿度センサーと比較することで、ボックス内の温度上昇も確認できるようにします。

気圧センサーのテストプログラム

GARDEN-TECの目玉は何と言ってもカメラによる監視機能です。Piカメラを使って外の景色をデスクトップに映し出します。カメラは水平方向と垂直方向に回転するためのサーボモーターを備えており、広い視野角を確保しています。テストプログラムではカメラウインドウを表示して、ウインドウ上のスライダでカメラの方向を変更します。CANVASを利用して機能を実現しているため、ウインドウ上に様々な情報や制御ボタン等を配置でき、今後色々な応用が可能となるでしょう。実を言うと、CANVAS上にこうした機能を実現するサンプルがなかなか見つからず、かなり苦労して試行錯誤の上で組み上げました。カメラは0.1秒毎に映像を切り替えていて、ほぼリアルタイムで表示しています。RasPiの処理能力にもよりますが、この間隔を変えることで表示レートを変更できます。なお、カメラはカメラベースに固定する際に上下逆さまの状態になるため、プログラム内で180度回転する処理を加えています。以前製作したBOUHAN-TECで既に録画も実現しているので、最終的には防犯録画監視機能を搭載予定です。

カメラのテストプログラム

環境測定として太陽光を測る照度センサーには、SAIBAI-TECやBOUHAN-TECでも使用したBH1750FVIを使用します。太陽光に直接当たることから、制御ボックスから突き出す形でフタの部分に取り付けています。基板がむき出しでは風雨にさらされてすぐに壊れてしまうため、プラスチックのカバーを付けて、センサーの部分には透明の薄いプラ板を貼り付けています。テストプログラムはネットで公開されているものを流用していたのですが、照度の求め方が仕様に従っていないことが分かり変更しました。感度設定はデフォルトのままで使用しています。

照度センサーのテストプログラム

GARDEN-TECはバッテリーでの運用を想定しているため、AD-CONVERTERを使って電源電圧の監視をします。また、地中温度センサーの測定も行うため、2chの入力を使います。使用したAD-CONVERTERは、SAIBAI-TECに使用したものと同じ2hの入力に対応した10bitのMCP3002です。

AD-CONVERTERのテストプログラム

地中の温度を測定するセンサーもSAIBAI-TECで使用したものと同じDS18B20です。1-Wireを使用するために、RasPiであらかじめ準備する必要があります。

地中温度センサーのテストプログラム

大気中の温度/湿度を測るセンサーは従来通りDHT11を使用します。テストプログラムも同じもので良いので、「24.温度・湿度測定(DHT11)」を参照して下さい。