プロジェクト26:土壌水分センサーで自動水やりシステムを作ろう
このプロジェクトで学ぶこと: 土壌水分センサーとリレーを組み合わせ、植物が必要なときだけ自動で水やりする自律システムを作ります。28プロジェクトの集大成として、センサー・判断・アクチュエーター制御の全要素を統合します。
完成イメージ
[土が乾くとポンプ(またはLED)が自動でONになり、十分な水分を検知するとOFFになる動画を挿入]
必要な部品
| 部品名 | 数量 |
|---|---|
| Arduino Uno R3 | 1 |
| 土壌水分センサーモジュール | 1 |
| リレーモジュール(5V) | 1 |
| 小型ポンプ(または水やり動作を示すLED) | 1 |
| LCD1602モジュール(I2C) | 1 |
| ブレッドボード | 1 |
| ジャンパー線 | 多数 |
回路図と配線
[回路図画像を挿入]
配線手順
- 土壌水分センサーの VCC → 5V、GND → GND、AO(アナログ出力) → A0ピン に接続する
- リレーモジュールの VCC → 5V、GND → GND、IN → 7番ピン に接続する
- リレーの COM と NO の間にポンプ(またはLED+抵抗)を接続する
- LCDをI2C(SDA→A4、SCL→A5)に接続する
安全上の注意 実際の水ポンプを使う場合は、電気と水が混触しないよう配線を防水・絶縁してください。学習目的ではポンプの代わりにLEDで動作を確認するのが安全です。
Arduinoスケッチ(プログラム)
// 自動水やりシステム
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int SOIL_PIN = A0;
const int RELAY_PIN = 7;
// 土壌センサーのしきい値(値が小さいほど湿っている)
const int DRY_THRESHOLD = 600; // この値を超えたら乾燥と判定→水やり開始
const int WET_THRESHOLD = 400; // この値を下回ったら十分な水分→水やり停止
LiquidCrystal_I2C lcd(0x27, 16, 2);
bool isWatering = false;
void setup() {
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // 初期はポンプOFF
lcd.init();
lcd.backlight();
Serial.begin(9600);
}
void loop() {
int soilValue = analogRead(SOIL_PIN);
// ヒステリシス制御(チャタリング防止)
if (!isWatering && soilValue > DRY_THRESHOLD) {
isWatering = true;
digitalWrite(RELAY_PIN, HIGH); // ポンプON
} else if (isWatering && soilValue < WET_THRESHOLD) {
isWatering = false;
digitalWrite(RELAY_PIN, LOW); // ポンプOFF
}
// LCD表示
lcd.setCursor(0, 0);
lcd.print("Soil: ");
lcd.print(soilValue);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(isWatering ? "Watering... " : "OK - Enough ");
// シリアルモニタ
Serial.print("土壌値: ");
Serial.print(soilValue);
Serial.print(" 状態: ");
Serial.println(isWatering ? "水やり中" : "待機");
delay(1000);
}
コードのポイント解説
ヒステリシス制御 ONのしきい値(600)とOFFのしきい値(400)を異なる値にすることで、センサー値がしきい値付近をわずかに上下するたびにリレーがON/OFFを繰り返す「チャタリング」を防ぎます。これは家庭用エアコンの温度制御でも使われている基本的な制御技術です。
状態変数 isWatering 現在「水やり中か否か」をbool型で保持します。センサー値だけでなく「今どんな状態か」を変数に持つことで、複雑な条件を正確に制御できます。
集大成としての構成 このプログラムは、これまで学んだアナログ入力(センサー)・リレー制御(出力)・LCD表示・状態管理の全要素を統合しています。各ブロックが独立しているため、機能を追加しやすい構造です。
動作確認
- スケッチをアップロードする
- センサーを空気中に置くと「Watering…」、水を入れたコップに入れると「OK」に切り替われば成功
- しきい値はシリアルモニタの値を見ながら環境に合わせて調整する
このプロジェクトで学んだこと
- ヒステリシス制御: ONとOFFに異なるしきい値を使ってチャタリングを防ぐ方法を習得しました
- 状態変数による設計: 「現在の状態」を変数で管理するプログラム設計パターンを学びました
- システム統合の完成: センサー→判断→アクチュエーター制御の自律システムを自分の手で完成させました
シリーズを完走したあなたへ
28プロジェクトを完走おめでとうございます!あなたはこのシリーズを通じて以下を習得しました:
- 入力技術: デジタル・アナログ入力、I2C通信、複数センサーの組み合わせ
- 出力技術: LED・ブザー・サーボ・DCモーター・ステッピングモーター・リレー・LCD表示
- プログラミング: 変数・配列・ループ・関数・状態管理・ライブラリ活用
- 設計思想: ヒステリシス制御・差動制御・ノンブロッキング処理
これらの技術の組み合わせで、IoTデバイス・ロボット・スマートホーム機器など、あらゆる自律システムの基礎が揃いました。
深掘り:技術の背景と社会への広がり
スマート農業と食糧安全保障
自動水やりシステムの原型は1960年代に農業用の「点滴灌漑(ドリップイリゲーション)」が商業化されたことに始まります。乾燥した気候のイスラエルで開発されたこの技術は、水の消費を従来の表面灌漑より70〜80%削減しながら収量を向上させ、砂漠の農地化を可能にしました。現代のスマート農業では土壌センサー・気象センサー・AI予測モデルを組み合わせ、1m²単位で最適な水分・肥料管理を行う「精密農業」が世界に広がっています。
水不足と気候変動:センサー技術が救う命
農業は世界の淡水消費量の約70%を占めており(FAO)、水資源の効率的利用は21世紀最大の環境課題の1つです。気候変動による干ばつの深刻化が予測される中、スマート灌漑システムの普及は食糧安全保障に直結しています。国連SDGsの目標2(飢餓ゼロ)と目標6(安全な水の確保)の両方に、土壌センサー技術は貢献できます。あなたが今日ブレッドボードに組んだシステムは、世界の食糧問題と水問題を解決する技術の小さな原型です。電子工作は趣味であり、同時に社会課題と向き合う技術でもあります。

