Arduino Nanoで構築するスマートホーム植物自動水やりシステム
必要な部品と材料
![]() |
Arduino Nano R3 | × | 1 |
![]() |
Adafruit 標準LCD - 16x2 白文字/青背景 | × | 1 |
| ミニ水中ポンプ | × | 1 | |
![]() |
プッシュボタン付きロータリーエンコーダー | × | 1 |
| L298N IC | × | 1 | |
![]() |
フォトレジスタ (光センサー) | × | 1 |
![]() |
汎用NPNトランジスタ | × | 1 |
![]() |
抵抗 10kΩ | × | 1 |
![]() |
単回転ポテンショメータ 10kΩ | × | 1 |
![]() |
コンデンサ 10μF | × | 1 |
![]() |
コンデンサ 1000μF | × | 1 |
![]() |
コンデンサ 470μF | × | 1 |
![]() |
コンデンサ 100nF | × | 7 |
| 1N4001ダイオード | × | 8 | |
| RCAソケット | × | 1 | |
| 土壌水分センサー | × | 1 | |
| ねじ端子台 | × | 3 | |
| AMS1117-ADJ (可変レギュレータ) | × | 1 | |
| 抵抗 2kΩ | × | 1 | |
| 抵抗 680Ω | × | 1 | |
| DC 9V 3A 電源 | × | 1 |
必要な工具
![]() |
はんだごて (汎用) |
アプリとオンラインサービス
![]() |
Arduino IDE |
このプロジェクトについて
また一つの植物水やり装置
インターネット上には土壌水分センサーの使い方を解説したプロジェクトやチュートリアルが数多く存在します。このプロジェクトでは、ネット上で見つけた優れたアイデアを組み合わせ、ソフトウェア部分を完成させて家庭用植物水やりシステムコントローラーを構築しました。解決策は一見明らかに見えますが、細部に踏み込むまで悪魔の存在に気づけません。それらの詳細を調査しましょう。
コントローラーの主な機能
このコントローラーには以下の機能があります:
- 2つの植物に対応、2つの独立したチャネルを備え、各チャネルは無効化可能
- 各チャネルに2つの一般パラメータ: 正転/逆転のポンプ運転時間 (10秒単位で設定)
- 手動モード搭載: ボタン押下で即座に水やり実行
- 水やり後に湿度をチェック、湿度が上昇しない場合はチャネルを無効化
- 光センサーを実装し、夜間の動作を防止
- 設定パラメータ用のメニューシステム搭載、設定はEEPROMに保存
土壌水分の測定
土壌水分を正確に測定するには? eBayでセンサーを購入し、植物に挿して抵抗を測る方法が多くのチュートリアルで紹介されています。しかし筆者の環境では「乾燥」と「湿潤」の抵抗値が非常に近く (300kΩと500kΩ)、いつ水を与えるべきか正確に判断できませんでした。問題は純水が電気を通さず、水中のミネラルが導電するためです。測定抵抗値は植物のミネラル量/種類に大きく依存し、与えた水量には依存しません。
ネットで素晴らしいアイデアを見つけました: 抵抗ではなく静電容量を測定する方法です。水は誘電率が大きいため、「湿潤」な植物の静電容量は「乾燥」時より約100万倍大きくなります (200μF vs 200pF)。これが決定的な差になります。
静電容量の測定方法
Arduinoを高精度静電容量計に変える手法もありますが、筆者の意見では複雑すぎ、植物センサーにそこまでの精度は不要です。もっとシンプルな方法があり、アナログピン2本のみで「乾燥」と「湿潤」を区別する十分な精度が得られます。前述の通り生の読み値の差が大きすぎるため、コードではセンサー読み値の自然対数を使用して値の範囲を圧縮し、閾値設定を容易にしています。
なぜHブリッジが必要か?
単一のMOSFETトランジスタでウォーターポンプを駆動する案も考えられました。しかし、水源タンク (ボトル) の水位が植物より高い場合、ポンプ停止後も水が流れ続けてしまいます。確実に水を止めるには? ポンプをしばらく逆回転させればよいのです。DCモーターなら極性 (+/-) を反転させるだけで逆回転可能。そのためにはHブリッジが必要です。L298N ICが適しています。このプロジェクトのポンプは9V/3Aを使用するため、ICにはヒートシンクとパワー抵抗が必要です。ここでは1Ω 5Wのパワー抵抗を使用。L298Nは2つのモーターを制御できるため、2つの植物を同時に管理できます。
コントローラーのメニューシステム
植物コントローラーの操作にはロータリーエンコーダーを使用します。起動時にはメイン画面が表示されます。上段に両チャネルの現在のセンサー読み値、無効なチャネルには「xxxx」と表示。下段に乾燥閾値を表示。

手動水やり: エンコーダーを短く押すと手動画面が表示されます。
設定メニュー: メイン画面でエンコーダーを長押し (約1秒) すると設定メニューに入ります。メニュー構造は以下の通り:
- 左チャネル
- 右チャネル
- ディスプレイバックライト輝度 (または自動)
- 夜間のバックライト輝度
各チャネル固有のメニュー:
- チャネル有効/無効
- 乾燥閾値
- ポンプ正転時間 (10秒単位)
- ポンプ逆転時間 (10秒単位)
- パラメータテスト
「乾燥閾値」 は水やりを開始する最小土壌水分を設定します。値はセンサー静電容量の自然対数です。メイン画面の現在値と乾燥閾値を参考に設定してください。
「パラメータテスト」 では、EEPROMに保存する前に水やり動作を確認し、時間パラメータを調整できます。
ハードウェア構成
コントローラーは2枚の3×7cm両面基板で構成されます。1枚目はL298Nモータードライバー、ダイオード、電源/ポンプ接続用ねじ端子、センサーコネクター、AMS1117-ADJによる5V電源モジュール (L298NとArduino用) を搭載。デバッグ時に別電源レギュレータを使用するのが便利でしたが、Arduino搭載のレギュレータで5Vを得ることも可能です。
2枚目にはArduino Nano、ロータリーエンコーダー/フォトレジスタ用コネクター、LCDディスプレイソケットを実装しています。
コード
WateringSystem Python
ソースコード: GitHubリポジトリ
回路図
製造プロセス
- Raspberry PiとWebダッシュボードで作る自動植物水やりシステム
- スマートホテル&ホーム監視システム:クラウドベース自動制御
- スマート渇きアラート植物アラーム – 最適な水やりタイミングを知らせるDIYセンサー
- DIY ADXL335地震検知器 - 低消費電力3軸加速度センサープロジェクト
- Arduinoで作る全自動植物水やりシステム - 湿度センサーとRTCで最適制御
- AWS IoTで実現するスマート植物監視システム
- Alexa対応Arduinoホームコントローラー:音声でスマートホーム自動化
- Windows 10 IoT対応 スマート植物監視システム
- Arduino Yunとシャーププラズマクラスター連携 スマート空気清浄機システム
- Arduino UNOで作る太陽追尾式ソーラー発電システム – デュアルアックス完全ガイド
- Arduinoで作るセキュリティシステム:超音波センサーとサーボで広範囲監視・アラート












