- 作成のモチベーション等
旅行などで遠出している時でも植物に水やりがしたかったため作成しました。
既製品の場合、水タンクのサイズが小さかったり(500mLペットボトル)、水道から直接水を得るための改造が必要だったりで使い勝手があまり良くなかった為自作しました。 いちいち既製品の特徴を調べるのが面倒だったというのもありますが... この水やり装置の場合、10Lの水タンクから水を汲み上げることができます。 なお、タンクとポンプは分離しているため、タンクを更に大型化することも可能です。
自分で水やりをすることで植物を育てているという実感を得るため、タイマー方式は採用しませんでした。
あと、もっと凄いやつを作っている人がいても気にしない、趣味のモノづくりで上を見てもしょうがないので。
- システム構成図
HWはRaspberrry Pi、Sensor board、Pump driverで構成されています。
Rasbpberry Piは3Bを使用しています。
Sensor boardには土壌湿度センサを3つ繋げられるようになっています。センサへ常時給電するとセンサの劣化が早まる恐れがあるため、センサ稼働時のみ給電できるようロードスイッチを取り付けています(NPNバイポーラトランジスタ+Pch FET構成) Raspberry PiとのI/Oは、SPI(A/Dコンバータで使用)とGPIO(ロードスイッチで使用)となっています。
Pump driverはリレーとフォトカプラによる構成です。フォトカプラでGNDを絶縁しており、リレーで発生したノイズがRaspberry Piへ届かないようにしています。 Raspbery PiとのI/Oは、GPIOのみとなっています。
Pumpは灯油用電動ポンプを改造しており、乾電池で駆動します(DC3V) リレーで回路のON/OFFが制御されます。
- 動作フロー
操作用のアプリはSlackを採用しており、Slackに入力したコマンドをWebSocket経由でRaspberry Piへ送信します(コマンド内容は"植物名+時間"か、”湿度”)
Raspberry Piは受信したコマンドの内容に基づき動作を決定します。Raspberry Pi側のプログラムはPythonで実装されています。
水をやる場合、指定した植物のポンプを指定した時間だけONにします(eg:コマンド”トマト10秒”→トマトのプランターに繋がったポンプが10秒だけONする)
土壌湿度を測定する場合、全てのプランターの湿度がまとめて測定され、その結果がSlackに返されます(eg:コマンド”湿度”→ピーマンの土は乾いています、トマトの土は湿っています...)