ベランダで育てている植物への水やりを完全自動化するため、ESP32をベースとした自動灌水システムを自作しました。 気象庁の天気予報データを取得して水やりスケジュールを最適化し、MQTTによるテレメトリ収集とRaspberry Piサーバーによる集中管理・監視まで備えたシステムです。
GitHub プロジェクト
https://github.com/ayumu-bekki/irrigation_system
背景
都内にあるアパートの狭いベランダで植物を育てているのですが、夏場の水やりに苦労していました。 仕事の都合で適切なタイミングに水をやれないこと、紫陽花や藤など水切れを起こしやすい植物があること、そして夏季などに1日以上家を空ける際には植物を室内退避させるという手間が発生していました。
最初は市販の自動灌水器(水やり花子)を試しましたが、ポンプ出力が弱く複数の植木鉢への灌水に力不足でした。
そこで、自分で自動灌水システムを設計・構築することにしました。
システム構成
こちらで紹介している内容は、2026年現在運用している最終的なシステム構成となります。
ESP32 灌水コントローラ
ESP32(ESP-WROOM-32E)を使った灌水コントローラです。
- 気象庁APIから天気予報を取得し、降水確率・気温に応じて水やりスケジュールを自動調整
- Wi-Fi経由でWebコンソールを提供し、スケジュール確認・手動水やりが可能
- ソレノイドバルブをMOSFETで制御
- 現在は、水道管直結ですが、初期は水栓が近くになくタンクに溜めた水をPWM制御を使いダイアフラムポンプで灌水していました。
- MQTTでテレメトリ(電圧・流量・水やり実行状況)を定期送信
電源はオフグリッド構成で、8Wソーラーパネル + 12V鉛蓄電池(8.5Ah) + 充放電制御器(電菱 SA-BA10)の組み合わせました。
フル充電から20日間はソーラーパネルによる発電がなくても稼働します。
散水パーツは信頼性と耐久性を重視し、既存のタカギ製水やりシステムを採用しました。
Raspberry Pi 中央制御サーバー
コントロールタワーとなる中央制御サーバーです。
- MQTTブローカー(Mosquitto)サービスを動作
- ESP32から情報を受信する
- 問題があった際に後述するパネル表示システムにアラートを送信
- 電圧が閾値を下回った・バルブを解放したが水量が少なかったなどの場合
- 複数のセンサーデータを時系列で保存・管理・ビジュアライズ
パネル表示システム
問題発生時や水やり実行状況をひと目で確認できるパネル表示システムです。
- 当日の水やり結果の表示
- 異常値(水量・電圧・システム)を検知した際に警告灯を点灯
- 警告灯の確認・一時停止ボタン
基本的に中央制御サーバーから、MQTTで制御されています。
アラートの一時停止と、MQTTのハートビート監視、日が変わった際の水やり表示のリセットなどは独立して制御させています。
開発の歩み
2021年 初期構築
まずはESP32 + ダイアフラムポンプ + ソーラーパネルによる基本的な自動灌水システムを構築。 気象庁の天気予報を取得して水やりをスケジューリングする機能と、Webコンソールによる手動操作・状態確認を実装しました。
2022年 電装拡張
バッテリー電圧によるポンプ出力の変動を解消するため、昇降圧対応のDC/DCコンバーターを追加。 また、バッテリー電圧をESP32のADCで計測してWebコンソールに表示する回路を追加しました。
2023年 水位センサー追加
静電容量式の水位センサーを自作し、貯水タンクの残量を計測できるようにしました。 銅板 + ラミネートフィルムによるセンサー、オペアンプ(LM358)による増幅回路を設計・実装。 Webコンソールに棒グラフで貯水量を表示し、水位が下がった際にRaspberry Pi経由で通知を受け取れるようになりました。
2024年 タンク式から水道直結式に変更・中央管理によるシステム化
引っ越し先のベランダに水栓があったため、ダイアフラムポンプからソレノイドバルブを使った水道直結式にし、流量メーターを追加しました。
また、タンクも不要になったため、水位センサーを外しています。
水やりが正常に行われているか監視するため、Raspberry PIを中央サーバーとするシステム化を行い、パネル表示システムで警告・水やり済みが容易に確認できるようにしました。
システム改善案
当初はESP32の灌水コントローラー単体で独立動作することを想定していましたが、中央管理するRaspberry Piサーバーやパネル表示システムができ、家庭内で実行するには過剰なシステムとなってきました。 このような構成を取るのであれば、可能な限り機能の実装をRaspberry Piサーバーに寄せて、ESP32側はセンサーやモーター・バルブの開放の制御に集中させた方が実装・管理のコストを抑えられ、また複数の水やり制御など大規模なシステムも柔軟に構築できるようになるでしょう。
関連記事
- 自動灌水システムを最終的に自分で構築した話。(2021) — 初期構築。システム全体の設計とパーツ選定
- 自動潅水システムの拡張と電子工作について(2022) — DC/DCコンバーター追加とバッテリー電圧計測の実装
- 自動潅水システムをさらに拡張(2023) — 静電容量式水位センサーの自作とMQTT対応
- 家庭内IoT機材 MQTTシステム設計実践例 — MQTTを使ったシステム設計の思想と実践例