Arduinoで作る自動植物水やりシステム
部品と用品
| Arduino UNO | 1 |
| 土壌湿度センサー | 1 |
| リレーモジュール(5V駆動) | 1 |
| 小型水中ポンプ(5V/12V) | 1 |
| チューブ・配管パーツ | 1式 |
| 防水ケース | 1 |
| ジャンパーワイヤー | 適量 |
必要な工具
- はんだごて・ハンダ
- ニッパー・ペンチ
- ドライバーセット
- ホットグルーガン(防水処理用)
このプロジェクトについて
観葉植物の水やりを忘れがちな方、旅行中も植物を枯らしたくない方のための、Arduinoベースの自動水やりシステムです。土壌湿度センサーで土の乾燥を検知し、設定閾値を下回ったときだけポンプを駆動して給水します。
システムの仕組み
- 土壌湿度センサーが常時土の水分量をモニタリング
- 閾値(デフォルト:40%)を下回るとリレー経由でポンプを起動
- 設定時間(デフォルト:5秒)給水後、ポンプを停止
- 再度センサー値を確認し、まだ乾燥していれば繰り返し
- LCDディスプレイで現在の湿度、ポンプ状態、最終給水時刻を表示
回路構成
土壌湿度センサーのVCCを5V、GNDをGND、信号ピンをA0に接続。リレーモジュールの制御ピンをD7、ポンプの電源線をリレーのNO(常開)接点に接続します。ポンプ電源は別途5Vまたは12Vアダプターを用意してください。

コード
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int MOISTURE_PIN = A0;
const int RELAY_PIN = 7;
const int DRY_THRESHOLD = 600; // アナログ値(環境に合わせて調整)
const int WATER_TIME = 5000; // 給水時間(ms)
const int CHECK_INTERVAL = 3600000; // チェック間隔(1時間)
unsigned long lastCheck = 0;
unsigned long lastWatering = 0;
bool pumpActive = false;
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // リレーOFF(アクティブロー)
lcd.init();
lcd.backlight();
lcd.print("Auto Watering");
lcd.setCursor(0, 1);
lcd.print("System Ready");
delay(2000);
}
void loop() {
int moisture = analogRead(MOISTURE_PIN);
unsigned long now = millis();
// LCD表示更新
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Moisture: ");
lcd.print(map(moisture, 0, 1023, 100, 0));
lcd.print("%");
lcd.setCursor(0, 1);
if (pumpActive) {
lcd.print("Watering...");
} else {
lcd.print("Pump: OFF");
}
// 定期チェック
if (now - lastCheck >= CHECK_INTERVAL) {
lastCheck = now;
if (moisture > DRY_THRESHOLD && !pumpActive) {
// 乾燥検知 → 給水開始
pumpActive = true;
digitalWrite(RELAY_PIN, LOW); // リレーON
lastWatering = now;
Serial.println("Watering started");
}
}
// 給水時間経過で停止
if (pumpActive && now - lastWatering >= WATER_TIME) {
digitalWrite(RELAY_PIN, HIGH); // リレーOFF
pumpActive = false;
Serial.println("Watering stopped");
}
delay(1000);
}
キャリブレーション
土壌湿度センサーの値は土の種類、センサーの埋め込み深さ、温度によって変わります。シリアルモニターで乾燥時と湿潤時の値を確認し、DRY_THRESHOLD を調整してください。一般的に値が大きいほど乾燥、小さいほど湿潤を示します。
設置のコツ
- センサーは植物の根元付近、根が張っている深さに挿す
- ポンプと水タンクは植物より低い位置に置き、サイフォン現象を防ぐ
- 屋外使用時は防水ケースに収め、コネクタ部分にシリコンコーキング
- ソーラーパネル+バッテリーで完全自立化も可能
拡張アイデア
- WiFiモジュール(ESP8266/ESP32)を追加してスマホ通知・遠隔監視
- 複数植物対応:マルチプレクサで複数センサーを切り替え
- 水タンク残量センサー(浮きスイッチや超音波)で給水切れ検知
- データログ(SDカードやクラウド)で生育記録を蓄積
製造プロセス
- CNC試作ガイド:精度、速度、コスト効率の良い生産
- 家庭用テーブル選びの完全ガイド:種類、歴史、素材、製造
- ビリヤード台(プールテーブル):設計、歴史、建設標準
- CNC工作機械:歴史、設計、未来のトレンド
- Arduino用バイポーラステッピングモーターライブラリ – 産業グレードの制御機能
- CNC旋削加工解説:高品質部品のための精密加工
- 動力付きロータリーテーブル:精度、効率、高度な位置決め
- CNC用ステッピングモーターとサーボモーター:プロジェクトに最適なのはどちら?
- 4×8 CNCプラズマウォーターテーブル:精密板金切断
- 1325 4軸ATC CNCルーター PTPテーブル搭載——デュアルスピンドル、旋盤ユニット、ダブル作業台で高効率木工を実現
- ワークショップに最適なCNCプラズマテーブルの選び方