Компоненты · 4 мин чтения

Датчик влажности почвы: автоматический полив растений на Arduino

Как работает датчик влажности почвы? Резистивные и ёмкостные датчики, подключение к Arduino, калибровка по сухому и мокрому значению, защита от коррозии, автополив с реле и насосом, работа с ESP32 и Pico.

Датчик влажности почвы — простой датчик, который измеряет, насколько влажная земля в горшке или на грядке. На нём строится множество проектов: от лампочки-сигнала, что растение хочет пить, до системы, которая поливает цветы, пока ты в отпуске. Он дешёвый, подключается к Arduino тремя проводами, а если добавить реле и маленький насос, получится по-настоящему полезная автоматика.

Модуль датчика влажности почвы
Датчик влажности почвы: щуп в форме вилки втыкают в землю, а плата с компаратором даёт аналоговый (AO) и цифровой (DO) выход.

Как работает датчик влажности почвы?

Вода в почве меняет то, насколько хорошо она проводит ток и накапливает заряд. Резистивные датчики измеряют сопротивление между двумя металлическими щупами, воткнутыми в землю: чем влажнее почва, тем ниже сопротивление. Ёмкостные датчики измеряют ёмкость вокруг электрода с покрытием; металл вообще не касается земли. У большинства модулей показание высокое, когда почва сухая, и низкое, когда она влажная.

ПараметрРезистивный (YL-69, FC-28)Ёмкостный (v1.2)
Что измеряетСопротивление между двумя металлическими щупамиЁмкость вокруг электрода
Открытый металлДаНет (с покрытием)
КоррозияПри постоянном питании разрушается за несколько недельОчень долговечный
ВыходАналоговый (AO) и цифровой (DO)Аналоговый
ЦенаОчень дешёвыйНемного дороже
Лучше всего дляКоротких экспериментовПостоянных проектов для горшков и сада

Подключение

Вывод датчикаArduino UnoESP32Raspberry Pi Pico
VCCD7 (чтобы питать только во время измерения) или 5VGPIO 25 или 3V3GP15 или 3V3
GNDGNDGNDGND
AO (AOUT)A0GPIO 34GP26
DOD2 (необязательно)НеобязательноНеобязательно
Если резистивный датчик питается постоянно, ток через щупы вызывает электролиз, и металл разрушается за несколько недель. Проще всего избежать этого, подключив VCC датчика не к 5V, а к цифровому пину и включая его на несколько миллисекунд только на время измерения. Датчик потребляет всего несколько mA, так что пин легко его запитает.

Чтение влажности на Arduino и калибровка

Каждый датчик и каждая почва дают разные значения, поэтому сначала откалибруй свой датчик: запиши показание, когда датчик на воздухе (полностью сухо) и когда он опущен в стакан с водой (полностью мокро). Затем с помощью map() переведи этот диапазон в проценты от 0 до 100. Замени DRY и WET в коде на свои значения:

C++ (Arduino IDE)
1const int SENSOR_PIN = A0;
2const int POWER_PIN = 7;       // sensörü yalnızca ölçerken besle / power only while measuring
3const int DRY = 850;           // havadayken okunan / reading in air (kendin ölç / measure yours)
4const int WET = 380;           // sudayken okunan / reading in water (kendin ölç / measure yours)
5
6void setup() {
7  pinMode(POWER_PIN, OUTPUT);
8  Serial.begin(9600);
9}
10
11int readMoisture() {
12  digitalWrite(POWER_PIN, HIGH);
13  delay(10);                                              // değerin oturmasını bekle / let it settle
14  int raw = analogRead(SENSOR_PIN);
15  digitalWrite(POWER_PIN, LOW);
16  return constrain(map(raw, DRY, WET, 0, 100), 0, 100);   // % nem / % moisture
17}
18
19void loop() {
20  int moisture = readMoisture();
21  Serial.print("Toprak nemi / Soil moisture: %");
22  Serial.println(moisture);
23  delay(2000);
24}
Ставь датчик в зону корней, подальше от края горшка и при каждом измерении на одну и ту же глубину. Электроника в верхней части ёмкостных датчиков не защищена от воды: не втыкай датчик глубже отмеченной на нём линии и защити верх платы термоклеем или трубкой.

Автополив: реле и насос

Погружной мини-насос для воды на 6V
Погружной мини-насос: работает от 3–6 V, стоит в ёмкости с водой и подаёт воду в горшок по трубке.

Теперь превратим показание в реальное действие: когда влажность почвы падает ниже 30%, включаем насос на 4 секунды, а затем ждём 1 минуту, чтобы вода разошлась по земле, и только потом измеряем снова. Эта пауза не даёт насосу работать без остановки и залить горшок только потому, что вода ещё не дошла до датчика. Насос нельзя питать напрямую от пина Arduino: управляй им через реле или MOSFET. Про подключение реле читай в статье Что такое модуль реле?

C++ (Arduino IDE)
1const int SENSOR_PIN = A0, POWER_PIN = 7, PUMP_PIN = 8;   // PUMP_PIN → röle IN / relay IN
2const int DRY = 850, WET = 380;
3const int START_BELOW = 30;          // %30'un altında sula / water below 30%
4const unsigned long PUMP_MS = 4000;  // her seferde 4 sn / 4 s per run
5const unsigned long SOAK_MS = 60000; // suyun yayılması için bekle / wait for the water to soak in
6
7int readMoisture() {
8  digitalWrite(POWER_PIN, HIGH);
9  delay(10);
10  int raw = analogRead(SENSOR_PIN);
11  digitalWrite(POWER_PIN, LOW);
12  return constrain(map(raw, DRY, WET, 0, 100), 0, 100);
13}
14
15void setup() {
16  pinMode(POWER_PIN, OUTPUT);
17  pinMode(PUMP_PIN, OUTPUT);
18  digitalWrite(PUMP_PIN, HIGH);      // aktif LOW röle: kapalı başla / active-LOW relay: start off
19}
20
21void loop() {
22  if (readMoisture() < START_BELOW) {
23    digitalWrite(PUMP_PIN, LOW);     // pompayı çalıştır / pump on
24    delay(PUMP_MS);
25    digitalWrite(PUMP_PIN, HIGH);    // pompayı durdur / pump off
26    delay(SOAK_MS);                  // tekrar ölçmeden önce bekle / wait before measuring again
27  }
28  delay(5000);
29}
Вода и электроника работают бок о бок: держи Arduino и реле подальше от ёмкости с водой и выше неё, а все соединения проводов заизолируй. Насос, работающий всухую, выходит из строя за несколько минут; датчик уровня воды в баке и ограничение общего времени полива за день защитят и насос, и твой дом.

Влажность почвы на ESP32 и Raspberry Pi Pico

На ESP32 подключай датчик к одному из пинов ADC1 (GPIO 32–39): они работают и при включённом Wi-Fi. Значения идут от 0 до 4095, поэтому калибровку нужно сделать заново. С ESP32 можно отправлять уровень влажности на телефон уведомлением или собрать датчик для горшка, который раз в час просыпается из глубокого сна, делает замер и месяцами работает от батареек. Чтение на Pico с MicroPython выглядит так:

MicroPython
1from machine import ADC, Pin
2import time
3
4sensor = ADC(26)               # GP26 → AOUT
5power = Pin(15, Pin.OUT)       # sensörü yalnızca ölçerken besle / power only while measuring
6DRY, WET = 52000, 24000        # kendi değerlerinle değiştir / replace with your readings
7
8def moisture():
9    power.value(1)
10    time.sleep_ms(10)
11    raw = sensor.read_u16()
12    power.value(0)
13    pct = (DRY - raw) * 100 // (DRY - WET)
14    return max(0, min(100, pct))
15
16while True:
17    print("Toprak nemi / Soil moisture: %", moisture())
18    time.sleep(2)

Какой должна быть влажность почвы?

Тип растенияПримерная целевая влажность
Кактусы и суккуленты10–30%
Большинство комнатных растений40–60%
Томаты, перцы и овощи60–80%
Папоротники и влаголюбивые растения70–90%

Эти проценты отсчитываются от диапазона «сухо — мокро» твоего датчика; это не научное содержание воды в почве. Лучший порог находят, если несколько дней наблюдать, что показывает датчик, когда растению действительно пора на полив.

Идеи проектов с датчиком влажности почвы

  • Автополив горшка: система, которая сама поливает цветы, даже когда ты в отпуске.
  • Сигнал «Хочу пить»: светодиод загорается или зуммер пищит, когда земля пересыхает.
  • Уведомление на телефон: ESP32 отправляет сообщение в Telegram, когда влажность падает.
  • Полив нескольких горшков: поливай растения по отдельности, дав каждому горшку свой датчик и маленький клапан.
  • Мини-теплица: измеряй ещё и влажность воздуха датчиком DHT11, освещённость — фоторезистором (LDR) и выводи всё на один дисплей.
  • Умный сад: автоматически пропускай полив, когда датчик дождя фиксирует осадки.

Частые ошибки и как их исправить

  • Значение всегда 1023 или всегда 0: читается пин DO вместо AO, нет питания или оборван провод к плате датчика.
  • Щупы покрылись коррозией, показания бессмысленные: резистивный датчик питался постоянно; питай его от пина или перейди на ёмкостную модель.
  • Показания со временем «плывут»: проводимость меняется, когда почва уплотняется или в неё вносят удобрения; время от времени калибруй заново.
  • Насос не выключается: реле с активным LOW, а HIGH/LOW в коде перепутаны, или замер повторяется до того, как вода впиталась; добавь паузу между измерениями.
  • Ёмкостный датчик выдаёт странные значения: намокла электроника сверху; защити плату от воды.
  • На ESP32 показания портятся при включении Wi-Fi: датчик стоит на пине ADC2; перенеси его на пин между GPIO 32 и 39.

Датчик влажности почвы может стать твоим первым проектом, который не просто измеряет, а действительно что-то меняет в реальном мире. В приложении BlueGrays есть проект умной станции полива — пошагово, со схемой и кодом.

Частые вопросы

Какой датчик влажности почвы купить: ёмкостный или резистивный?

Для экспериментов на несколько дней хватит резистивного датчика. Для проекта, который месяцами будет стоять в горшке, выбирай ёмкостный: без открытого металла он не корродирует, и его показания со временем меньше «плывут».

Сколько служит датчик влажности почвы?

Щупы резистивного датчика с постоянным питанием заметно разрушаются за несколько недель. Если питать его только во время измерения, он прослужит месяцы. Ёмкостные датчики работают годами, если их электронику беречь от воды.

Почему показание высокое, когда почва сухая, и низкое, когда влажная?

В большинстве модулей датчик включён как часть делителя напряжения: чем влажнее почва, тем сильнее меняется её сопротивление или ёмкость, и напряжение на аналоговом пине падает. Поэтому в коде диапазон переворачивают через map(raw, DRY, WET, 0, 100), чтобы получить проценты.

На какую глубину закапывать датчик влажности почвы?

Ставь датчик в зону корней растения, подальше от края горшка. Ёмкостные датчики достаточно закопать до отмеченной на них линии; электроника не должна касаться земли и воды.

Можно ли подключить водяной насос напрямую к Arduino?

Нет. Даже маленькие насосы потребляют 100–300 mA, а пин Arduino столько не даст. Управляй насосом через модуль реле или через MOSFET с обратным (защитным) диодом; питай его от отдельного источника и соедини земли вместе.

Сколько горшков можно отслеживать одной Arduino?

У Arduino Uno 6 аналоговых входов, поэтому напрямую можно читать 6 датчиков. Для большего числа используй 16-канальный аналоговый мультиплексор вроде CD74HC4067 или дополнительный модуль АЦП вроде ADS1115.

Все проекты
Умная станция полива
#83Продвинутый
Premium

Умная станция полива

Садовник, который сам поливает растения, чтобы они не засохли, пока ты в отпуске. Датчик влажности почвы измеряет, насколько влажная земля; когда она сохнет, Arduino на несколько секунд включает водян

5.0(42)
57
Температура и влажность с DHT11
#55Средний

Температура и влажность с DHT11

Насколько тепло в твоей комнате и влажный ли воздух или сухой? Датчик DHT11 измеряет температуру и влажность, а Arduino выводит значения на двухстрочный LCD-экран и обновляет их каждые пару секунд. Ес

4.7(47)
73
Температура и влажность с DHT22 на ESP32 (с LCD-дисплеем)
#117Средний

Температура и влажность с DHT22 на ESP32 (с LCD-дисплеем)

Этот проект измеряет температуру и влажность воздуха датчиком DHT22 и в реальном времени показывает данные на I2C LCD 16x2. Данные читаются с датчика по однопроводному протоколу через библиотеку Adafruit DHT. Проект служит основой для IoT-метеостанций, умного дома или систем мониторинга среды в теплицах. Связь с DHT22 идёт через пин GPIO 4 у ESP32.

4.8(38)
56
Включение лампы 220V кнопкой (удержание)
#19Продвинутый
Premium

Включение лампы 220V кнопкой (удержание)

Пока ты держишь кнопку, горит настоящая лампа на 220 вольт, а как только отпустишь — гаснет. Слабый сигнал Arduino не может зажечь лампу напрямую, поэтому между ними стоит реле — выключатель с электри

4.4(30)
38
Умное освещение на ESP32 (PIR + LDR + реле + OLED)
#141Продвинутый
Premium

Умное освещение на ESP32 (PIR + LDR + реле + OLED)

Сделай умное освещение для коридора, ванной или кладовки на ESP32! С PIR-датчиком движения, датчиком освещённости LDR и модулем реле собирается классический сценарий «свет включается при движении в темноте»: если вокруг уже светло, движение свет НЕ включает, и днём энергия экономится. Свет горит 30 секунд; если движение продолжается, таймер сбрасывается, и свет горит дольше. OLED SSD1306 крупно показывает состояние (ON / DAYTIME / WAITING) и обратный отсчёт.

4.3(6)
11
Регистратор температуры на ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
#144Продвинутый
Premium

Регистратор температуры на ESP32 (DHT22 + DS1307 RTC + microSD + OLED)

Собери на ESP32 регистратор температуры с отметками времени! Каждую минуту читай температуру и влажность с DHT22, бери реальное время из DS1307 RTC и записывай всё на карту microSD в формате CSV. OLED показывает текущую температуру (крупным шрифтом), влажность в процентах, время и счётчик записей. Файл /temp_log.csv на SD-карте открывается в Excel, Google Sheets или Python pandas — идеально для теплиц, комнат, лабораторий и хранения продуктов.

4.7(7)
12
ESP32 HTTPClient + API погоды (с экраном LCD)
#133Продвинутый
Premium

ESP32 HTTPClient + API погоды (с экраном LCD)

В этом проекте ESP32 через HTTPClient.h делает вызов REST API к сервису погоды (wttr.in) через интернет. Полученный ответ в JSON разбирается с помощью ArduinoJson v7, а город, температура, влажность, погода и ветер выводятся на I2C LCD на турецком и английском. wttr.in бесплатен и не требует ключа API — достаточно указать любое название города, чтобы получить текущую погоду. Данные автоматически обновляются каждые 30 минут.

4.7(13)
20