Arduino UNOで作る信頼性の高いDIY植物水分センサー
必要な部品と材料
| 部品 | 数量 |
|---|---|
| Arduino UNO | 1 |
| 抵抗 220Ω(LED用) | 3 |
| 抵抗 10kΩ | 1 |
| RGBディフューズドLED(コモンアノード) | 1 |
| ナットとボルト(任意サイズ) | 各2 |
| ハーフサイズ ブレッドボード | 1 |
| オス-オス ジャンパーワイヤ | 8 |
使用するアプリとオンラインサービス
- Arduino IDE
このプロジェクトについて
DIY植物水分センサー
詳細は筆者のウェブサイトをご覧ください!
このプロジェクトは、土壌の誘電率(電気を通しやすさ)を測定することで、植物周辺の土壌水分含有量を算出し、水やりが必要なら赤LED、水やり過多なら青LED、適正なら緑LEDで知らせます。
製作に必要なもの:
- Arduino UNOまたは同等品(×1)
- 220Ω抵抗(LED用)(×3)
- 10kΩ抵抗(×1) - 茶・黒・橙
- RGB LED(×1)または異色LED 3個
- 長めのジャンパーケーブル(×2) - センサープローブ用
- ジャンパーケーブル(×6)
- ブレッドボード(×1)
- ボルト(任意サイズ、×2)
- ボルトと同径のナット(×2)
ステップ1: センサープローブの製作


この手順を2回繰り返します(プローブは2本必要):
- ナットをボルトに軽く締める
- 長いジャンパーケーブルの端を、ナットとボルト頭の間に挟む
- ジャンパーケーブルが抜けなくなるまでナットを締め込む
ステップ2: 回路の組み立て



回路図またはブレッドボード図のどちらか見やすい方で配線してください。「out」と書かれた2本のワイヤが、先ほど作った2本のプローブです。
ステップ3: コードの書き込み
以下のコードをArduino IDEにコピペして書き込んでください:
int moistPin = 0;
int moistVal = 0;
int tooDry = 150; // 植物の乾燥閾値(低いほど乾燥)
int tooWet = 400; // 植物の過湿閾値(高いほど湿潤)
void setup() {
Serial.begin(9600);
}
void loop() {
moistVal = analogRead(moistPin);
Serial.println(moistVal);
int percent = 2.718282 * 2.718282 * (.008985 * moistVal + 0.207762); // プローブ間隔1-1.5インチ用の計算式
Serial.print(percent);
Serial.println("% Moisture ");
if (moistVal <= tooDry) {
digitalWrite(4, HIGH); // 赤LED
digitalWrite(3, LOW);
digitalWrite(2, LOW);
} else if (moistVal >= tooWet) {
digitalWrite(4, LOW);
digitalWrite(3, HIGH); // 青LED
digitalWrite(2, LOW);
} else {
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, HIGH); // 緑LED
}
delay(250);
}
ステップ4: センサープローブの設置

- 作った2本のプローブを、監視したい植物の近くの土に、間隔1〜1.5インチ(約2.5〜3.8cm)で差し込みます。
- 植物に適量の水をやり、シリアルモニタを開きます。
- 適切な水やりなら25〜30%前後の値が出るはずです。
- そうでない場合は、プローブの位置をずらして調整するか、水の量を見直してください。
補足事項
屋外で使用する場合は、回路をタッパーウェアなどの防水容器に入れて風雨から守ってください。センサーワイヤ用の穴を開け、電池ボックスを接続して電源とします。筆者の環境は屋内なので、容器なしで問題なく動作しています。
スケッチ
int moistPin = 0;
int moistVal = 0;
int tooDry = 150; //set low parameter for plant
int tooWet = 400; //set high parameter for plant
void setup() {
Serial.begin(9600);
}
void loop() {
moistVal = analogRead(moistPin);
Serial.println(moistVal);
int percent = 2.718282 * 2.718282 * (.008985 * moistVal + 0.207762); //calculate percent for probes about 1 - 1.5 inches apart
Serial.print(percent);
Serial.println("% Moisture ");
if (moistVal <= tooDry) {
digitalWrite(4, HIGH); //Red LED
digitalWrite(3, LOW);
digitalWrite(2, LOW);
} else if (moistVal >= tooWet) {
digitalWrite(4, LOW);
digitalWrite(3, HIGH); //Blue LED
digitalWrite(2, LOW);
} else {
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, HIGH); //Green LED
}
delay(250);
}
回路図
製造プロセス
- Raspberry Piで低コスト土壌水分センサーを構築 - スマート灌漑に活用
- スマート渇きアラート植物アラーム – 最適な水やりタイミングを知らせるDIYセンサー
- Arduino Nanoで20kHzオシロスコープを自作:Nokia 5110 LCD搭載・簡易DIYガイド
- イタリア語ワードクロック自作:Arduino Nano、NeoPixel、LCD、RTCで時刻を文字で表示
- Arduino Nanoで構築するスマートホーム植物自動水やりシステム
- Arduino カラーセンサープロトタイプ — ニューラルネットで色名を識別・表示
- Arduino MKR Fox 1200で作る信頼性の高いSigfox kWhメーター
- Bluetooth対応温度モニター:Arduino NanoとHC-06でスマホ監視
- 自動レンジ切替対応 静電容量メーター (10pF〜10µF) - Arduino Nano で簡単自作
- 非接触ジェスチャー錠: APDS-9960とArduinoでセキュアアクセス
- Arduino UNOで作る精密反応速度テスター