Arduinoベーススマート灌漑システム:回路図・Arduinoコード付きで効率的な農業を実現
Arduinoベース スマート灌漑システム
インドは人口の70%が農業で生計を立てる国です。現代では、機械の活用によりあらゆる作業が最も容易に行えるようになりました。自動化は生産性を向上させ、多くの時間と労力を節約します。灌漑は、圃場投資から最大の利益を得るための農業において最も重要な部分です。しかし、農家が使用できる農業機械はいくつかあります。残念ながら、高コストのため農家が購入できません。彼らに必要なのは、農業目的に容易に使用できるシンプルで低コストな機械です。
本記事では、低コスト材料で設計されたスマートでシンプルな灌漑システムについて説明します。この灌漑システムの目的は、土壌水分を検知してモーターポンプを自動的に稼働させることです。
農業分野だけでなく、不在時に自宅の植物を世話する自動植物灌漑システムも必要です。本記事では、自宅でくつろぎながら植物に自動的に水やりができるスマート灌漑システムプロジェクトの設計プロセスを説明します。このデバイスで水やりスケジュールと稼働時間を調整できます。
従来の灌漑システムの非効率性による過剰灌水で、約50%の水が損失しています。この問題を解決するため、土壌水分レベルをチェックして植物に自動的に水を供給するスマート灌漑システムを設計します。回路が土壌に十分な水分を検知すると、モーターポンプが停止します。
また、GSMモジュールを使用して土壌水分状態とウォーターポンプの状況を定期的に通知します。このプロジェクトは高信頼性で、灌漑プロセスから人的労働の必要性を排除するのに非常に有用です。
前述の通り、土壌水分センサーで土壌水分を検知します。プロジェクト開始前に、回路動作を明確に理解するために使用する主要コンポーネントを見てみましょう。
- 関連プロジェクト:自動植物給水・灌漑システム ─ 回路、コード、プロジェクトレポート
土壌水分センサー
土壌水分センサーには2本のプローブがあり、土壌中の水分体積含量を測定します。この2本のプローブで電流を土壌に流し、土壌に存在する水分値を取得します。
土壌に水分があると抵抗が低下し、電気を通しやすくなります。結果として、センサーが検知する水分レベルは高くなります。乾燥土壌は電気を通しにくいです。水分が少ないと電気伝導度が低下し、抵抗が高くなるため、水分レベルは低く検知されます。

技術仕様:
- 入力電圧 – 3.3〜5V
- 出力電圧 – 0〜4.2V
- 入力電流 – 35mA
- 出力 – アナログ/デジタル
土壌水分センサー ピンアウト:
- Vcc – 電源
- A0 – アナログ出力
- D0 – デジタル出力
- GND – グラウンド
関連プロジェクト:雨警報回路 ─ 雪、水、雨検知プロジェクト
前述の通り、土壌水分センサーは2枚の導電プレートで構成され、プローブとして機能します。第1プレートを+5V電源に、第2プレートを直接グラウンドに接続。出力は土壌水分センサーピンの第1端子から直接取得します。
土壌水分センサーは開放・閉鎖回路の原理で動作します。土壌が乾燥時は電流が流れず開放回路として動作。土壌が湿潤時は一方の端子から他方へ電流が流れ始め、閉鎖回路として動作します。この水分センサーをArduino UNOボードとインターフェース接続しました。インターフェース接続とシミュレーションコードについては記事後半で説明します。
- 関連プロジェクト:水位表示回路図─ シンプルな2つのプロジェクト
土壌水分センサーの応用:
家庭菜園や芝生で手動植物水やりの手間を省くために使用可能。室内植物への定期的な灌漑用水供給にも利用できます。
このプロジェクトの第2の重要部分は、Arduinoマイクロコントローラーと共に通信用として使用するGSMモジュールです。
TTL SIM800 GSMモジュール:
灌漑システムプロジェクトでSIM800 GSMモジュールを使用し、Arduinoとインターフェース接続してメッセージ送受信を行います。GSMモジュールは基本的にGSMモデムです。このデバイスはPCBに接続され、ボードから様々なタイプの出力を取得します。本プロジェクトでは、ArduinoとGSMモジュールをインターフェース接続し、TTL出力を取得します。このクアッドバンドGSMモジュールは、GSM 850MHz、EGSM 900MHz、DCS 1800MHz、PCS 1900MHzの周波数範囲で動作します。GSMモジュールはArduinoやマイクロコントローラーと高い互換性があります。TTL SIM800 GSMモジュールは24×24×3mmサイズで組み立てられ、スマートフォン、PDA等ほぼすべてのデバイスに搭載可能です。
アジアでは、ほとんどの携帯電話事業者が900MHz帯で運用しています。GSMモジュールは、単一GSMモデムをPCBに接続して製造されます。RS232出力のプロビジョニングが提供されます。プロジェクトのGSM電源要件を再確認し、デバイスに適したGSMモジュールを選択してください。また、Arduinoと直接インターフェース接続できるよう、TTL出力ピン搭載のものを常に選んでください。
- 関連プロジェクト:スマートホームオートメーションシステム ─ 回路とソースコード
技術仕様:
- クアッドバンドベース
- 必要電圧 - 9VDC〜12VDC
- 電源 – スイッチングレギュレーターベース
- 消費電力 – 1mA
- 動作温度 – -40℃〜+85℃
GSM 800モジュールの特徴:
- コーディングスキーム – CS-1, CS-2, CS-3, CS-4 Tx電力
- 低消費電力
- マイク入力とレシーバー出力を含むオーディオチャンネル搭載
以上で、土壌水分センサーとGMSモジュールの両デバイスの動作について理解できました。次に、両コンポーネントをArduinoマイクロコントローラーとインターフェース接続します。
- 関連記事:スマートWiFiサーキットブレーカー ─ 構造、設置、動作
Arduino UNOボード
Arduino UNOボードの詳細に入る前に、市場にはArduino Mega、Arduino Dueなど様々なバージョンのArduinoボードが存在することをお知らせしておきます。本プロジェクトでは、最も安価でインターフェース接続が容易なArduino UNOを使用します。このマイクロコントローラーは14個のデジタルI/Oピンと6個のアナログピンを持ち、TX・RXピンを用いたシリアル通信もサポートします。Arduinoの最大の利点は、要件に応じてソフトウェアとボードを最適化・変更できることです。
土壌水分センサーとGSMモジュールのArduinoインターフェース接続
この回路のインターフェース接続はシンプルです。回路図に従ってください。
まず、土壌水分センサーのアナログピンをArduinoのアナログピン1に接続。センサーのVCCとGNDをArduinoの5VとGNDに接続。
次に、モジュールにSIMカードを挿入。GSMモジュールを電源に接続。本プロジェクトでは12Vモジュールを使用(5Vモジュールの場合はArduinoの5Vで直接給電可能)。回路図の通り12V電源を接続。モジュールのGNDピンをArduinoのGNDに接続。モジュールのSTピンをArduinoのデジタルピン9に、SRピンをデジタルピン10に接続。検知水分レベルを表示するLCDも接続(回路図参照)、コントラスト調整用のポテンショメーターも接続。
- 関連プロジェクト:Arduinoと超音波センサーによる距離測定
リレーとトランジスタをリレードライバー図に従って接続。
以下の部品を準備し、回路図通りに配線してください:
- Arduino UNOボード
- GSMモジュール
- 接続ワイヤー
- トランジスタ
- 16×2 LCDディスプレイ
- 電源
- リレー
- ポンプ
- 土壌水分センサー
- 抵抗
- 端子コネクタ
- 電圧レギュレーター

プログラミングコード解説
このプロジェクトのプログラミング部分は非常に簡単です。まず、LCD用と水分センサー用のライブラリを定義。次に、センサーの送信・受信ピンをデジタルピン9と10に接続するとして定義:
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(9,10);
次に、ピン番号の代わりに使用する変数を定義:
int M_Sensor = A0;
int W_led = 7;
int P_led = 13;
次に、Arduinoに接続したLCDピンを定義:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
setup関数で、まずlcd.begin()関数でLCDを初期化し、mySerial.begin()関数で水分センサーを初期化。16,2を渡すのはLCDが16列2行で、全面を使用するため。次に、デジタルピン13を出力モード(ポンプステータスLEDとリレー接続)、ピン7を入力モード(水位LED接続)として定義。
void setup() {
lcd.begin(16, 2);
mySerial.begin(9600);
pinMode(7, INPUT);
pinMode(13, OUTPUT);
}
loop関数へ。最初にlcd.clear()でLCDをクリア(前回出力が残らないよう)。次に水分センサー値を取得し、変数'Moist'に格納:
lcd.clear();
int Moist = analogRead(M_Sensor);
乾燥・湿潤・過湿土壌の条件分岐:
if (Moist > 700) { // 乾燥土壌
lcd.setCursor(11,0);
lcd.print("DRY");
lcd.setCursor(11,1);
lcd.print("SOIL");
if (digitalRead(W_led) == 1) { // 貯水タンクの水有無確認
digitalWrite(13, HIGH);
lcd.setCursor(0,1);
lcd.print("PUMP:ON");
mySerial.println("AT+CMGF=1");
delay(1000);
mySerial.println("AT+CMGS=\"NUMBER\"\r");
delay(1000);
mySerial.println("PUMP:ON");
delay(100);
mySerial.println((char)26);
delay(1000);
} else {
digitalWrite(13, LOW);
lcd.setCursor(0,1);
lcd.print("PUMP:OFF");
mySerial.println("AT+CMGF=1");
delay(1000);
mySerial.println("AT+CMGS=\"NUMBER\"\r");
delay(1000);
mySerial.println("PUMP:OFF");
delay(100);
mySerial.println((char)26);
delay(1000);
}
}
if (Moist >= 300 && Moist <= 700) { // 適湿土壌
lcd.setCursor(11,0);
lcd.print("MOIST");
lcd.setCursor(11,1);
lcd.print("SOIL");
digitalWrite(13, LOW);
lcd.setCursor(0,1);
lcd.print("PUMP:OFF");
mySerial.println("AT+CMGF=1");
delay(1000);
mySerial.println("AT+CMGS=\"NUMBER\"\r");
delay(1000);
mySerial.println("PUMP:OFF");
delay(100);
mySerial.println((char)26);
delay(1000);
}
if (Moist < 300) { // 過湿土壌
lcd.setCursor(11,0);
lcd.print("SOGGY");
lcd.setCursor(11,1);
lcd.print("SOIL");
digitalWrite(13, LOW);
lcd.setCursor(0,1);
lcd.print("PUMP:OFF");
mySerial.println("AT+CMGF=1");
delay(1000);
mySerial.println("AT+CMGS=\"NUMBER\"\r");
delay(1000);
mySerial.println("PUMP:OFF");
delay(100);
mySerial.println((char)26);
delay(1000);
}
delay(1000);
}
- 関連記事:Arduino UNO活用可変電源 ─ 回路とコード
自動灌漑システムの動作
自動灌漑システムの動作は非常にシンプルで理解しやすいです。このプロジェクトでは、Arduinoが回路全体の動作を制御します。まず、土壌に水分がない場合、土壌センサーの2本プローブ間で伝導があります。結果としてトランジスタはON状態を維持。Arduinoのピン13もLOWのまま。Arduinoはユーザーへ「土壌水分は正常。モーターOFF」とメッセージ送信。この状況ではモーターポンプは「OFF」状態を維持。
土壌に水分がないとき、トランジスタQ2がOFFになり、ピンD7がHIGHになります。結果としてArduinoがウォーターポンプを起動し、「水分低下検知。モーターON」とユーザーへメッセージ送信。再び、土壌水分センサーが十分な水分を検知すると、モーターポンプが自動的にOFFになります。
- 関連プロジェクト:自動浴室照明スイッチ回路図と動作
スマート灌漑システムの特徴
このスマート灌漑システムは、理想的な灌漑システムのすべての基準を満たします。主なメリット:
- 気象条件に容易に適応し、それに応じて水分を検知してウォーターポンプを制御
- 土壌水分センサーが土壌水分を検知し、多量の水流を感知して自動停止・始動
- スマート灌漑システムで、圃場に行かずに遠隔から水流管理可能
- 回路接続LCDが土壌水分データを定期表示、異なる時点での水分記録として活用可能
関連プロジェクト:Arduinoによる物体検知自動ドアベル
結論
スマート灌漑システムは、生産性と信頼性の面から非常に有用です。また、容易に入手可能な電子部品で簡単に設計・組み立て可能。ソフトウェアで使用するArduinoマイクロコントローラーは非常に人気があり、不便なくインターフェース接続できます。土壌水分センサーで土壌水分を検知。
GSMモジュールでユーザーの携帯電話へメッセージ送信し状況通知。すべてのコンポーネントの動作とArduinoとのインターフェース接続方法を説明しました。これで、日常生活で水を節約する低コストスマート灌漑システムを設計できるようになったはずです。
関連プロジェクト:
- 電圧3倍回路の作り方?
- 電子工学科卒業研究プロジェクトアイデアリスト
- 電子工学科向けエンジニアリングプロジェクトアイデア
- 初心者向けシンプル・基本電子ミニプロジェクトアイデア
- その他電気・電子工学プロジェクト
産業技術
- Arduino Yunとシャーププラズマクラスター連携 スマート空気清浄機システム
- Helium & DFRobotで無線土壌水分センサーシステム - リアルタイム植物ケア
- 直列RLC回路解析のマスター:インピーダンスからKVLまで
- 555タイマーICによる1〜15分間隔タイマー回路:設計・構築・応用
- 自動植物水やり・灌漑システム:回路設計、コード、プロジェクト報告書
- VL53L0Xレーザー距離センサー:ピンアウト、回路、仕様、実用応用
- HDC2080デジタル湿度・温度センサー:回路図、仕様、アプリケーション
- 土壌水分センサー:仕組みと実用的なアプリケーション
- 圧電トランスデューサー解説:動作原理、回路設計、実用的なアプリケーション
- AI強化デジタルカメラで土壌水分監視に革命
- 精密マイクロストリップ回路・材料評価システム:超伝導薄膜向け