Главная → Датчики

Ёмкостный датчик влажности почвы v1.2: почему резистивный датчик сгнивает за месяц

12 сентября 2026 · Датчики

Если у вас когда-то сгнил резистивный датчик влажности почвы — вы не одиноки. Разберёмся, почему это происходит, чем лучше ёмкостный датчик v1.2 и как правильно подключить его к Arduino и ESP32. Модуль также продаётся под артикулом DFRobot SEN0193 — его паспорт (datasheet) я и использую ниже.

Почему резистивный датчик умирает

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

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

Ёмкостный датчик устроен иначе: его электроды спрятаны под паяльной маской стеклотекстолита и ток через почву не проводят — они работают как обкладка конденсатора. Измеряется ёмкость, а не сопротивление, поэтому электролиза на электродах нет. В паспорте SEN0193 производитель прямо пишет, что модуль «изготовлен из коррозионностойкого материала, что даёт отличный срок службы».

Как это работает внутри

Сердце платы v1.2 — таймер TLC555 (в клонах встречается и NE555, но принципиально это ничего не меняет). Электроды на нижней стороне платы образуют одну обкладку конденсатора; среда между ними — воздух, сухой грунт или влажный грунт с корнями. Чем влажнее земля, тем выше её диэлектрическая проницаемость: у воды она около 80, у сухого грунта — 4–7. Ёмкость растёт, частота генератора TLC555 меняется, а детектор пиков и операционный усилитель превращают её в постоянное напряжение на пине AOUT. Для вас это самый обычный аналоговый датчик: три провода и один вход АЦП, никакие библиотеки не нужны.

Главное направление сигнала: чем ВЛАЖНЕЕ почва, тем НИЖЕ напряжение на AOUT. Это обратная полярность относительно привычных резистивных датчиков, и именно на ней ломается перенос старого кода на новый модуль.

Характеристики из паспорта SEN0193

Параметр Значение
Напряжение питания 3,3–5,5 В (стабилизатор на плате)
Ток потребления 5 мА
Аналоговый выход 0–3,0 В
Интерфейс PH2.0-3P (VCC, GND, AOUT)
Размер 98 × 23 мм (3,86 × 0,905 дюйма)
Вес 15 г
Совместимость любой микроконтроллер с АЦП; Raspberry Pi — только через ��нешний АЦП

Типичный разброс при 5 В питания: около 2,5–2,8 В в сухом воздухе и около 1,2–1,4 В в стакане воды. Точные цифры у каждого экземпляра свои, поэтому калибровка обязательна — см. ниже.

Подключение к Arduino (Uno / Nano)

Схема тривиальна:

Датчик AOUT → A0
Датчик VCC  → 5V
Датчик GND  → GND
// Ёмкостный датчик влажности почвы v1.2, Arduino Uno
const int sensorPin = A0;
int airValue;   // показание АЦП в сухом воздухе
int waterValue; // показание АЦП в стакане воды

void setup() {
  Serial.begin(9600);
  // Калибровка. Сначала датчик лежит в сухом воздухе:
  delay(5000);
  airValue = analogRead(sensorPin);
  Serial.print("Air: "); Serial.println(airValue);
  // Затем опускаем до белой черты в стакан с водой:
  delay(5000);
  waterValue = analogRead(sensorPin);
  Serial.print("Water: "); Serial.println(waterValue);
}

void loop() {
  int raw = analogRead(sensorPin);
  // Чем влажнее земля, тем ниже raw — переворачиваем шкалу:
  int percent = map(raw, waterValue, airValue, 100, 0);
  percent = constrain(percent, 0, 100);
  Serial.print("ADC: "); Serial.print(raw);
  Serial.print("  Vlaga: "); Serial.print(percent); Serial.println("%");
  delay(1000);
}

map(raw, waterValue, airValue, 100, 0) — ключевой момент: сырые показания АЦП падают при увлажнении, поэтому шкалу переворачиваем вручную. Каждый датчик калибруется отдельно: у китайских экземпляров разброс «сухого» значения достигает нескольких сотен, и калибровка по чужим цифрам даст бессмысленные проценты.

Подключение к ESP32

Датчик AOUT → GPIO34
Датчик VCC  → 3.3V
Датчик GND  → GND
const int sensorPin = 34;
int airValue   = 3200; // свои значения после калибровки
int waterValue = 1500;

void setup() {
  Serial.begin(115200);
  analogReadResolution(12); // 0..4095
}

void loop() {
  int raw = analogRead(sensorPin);
  int percent = map(raw, waterValue, airValue, 100, 0);
  percent = constrain(percent, 0, 100);
  Serial.printf("ADC: %d  Vlaga: %d%%\n", raw, percent);
  delay(2000);
}

Два тонких момента. Первый: подключайтесь к GPIO32–39 (ADC1). Каналы ADC2 на ESP32 при активном Wi-Fi читаются нестабильно — если планируете слать данные по Wi-Fi, держитесь ADC1. Второй: на входе ESP32 допускается не больше 3,3 В, поэтому VCC берём от 3,3 В, хотя модуль работает и от 5 В. При 5 В сухой выход доходит до ~2,8–3,0 В — то есть на самом пределе входного лимита, без запаса. Лучше не рисковать.

Частые ошибки

  1. Питание от цифрового пина. Ток всего 5 мА, и в батарейных проектах датчик советуют выключать через GPIO. Новички забывают выставить пин в OUTPUT и HIGH до чтения: модуль выдаёт мусор и выглядит «сломанным». Если делаете так — настройте пин заранее и дайте модулю 100–200 мс на запуск стабилизатора.
  2. Погружение выше белой черты. Белая линия на плате — граница рабочей части. Выше неё стоят электроника и разъём: вода замкнёт цепи и убьёт плату. Датчик должен сидеть в грунте до белой черты, не глубже.
  3. Длинный провод без фильтрации. Аналоговый сигнал на 2–3 метрах провода ловит наводки от помпы и светодиодных лент. Возле контроллера поставьте конденсатор 0,1 мкФ между AOUT и GND и усредняйте в коде (медиана или среднее из 10 отсчётов).
  4. Ожидание мгновенной реакции. Вода распределяется в грунте за минуты. Полили горшок — датчик покажет рост через 1–5 минут; это нормально. Быструю проверку делайте стаканом воды, а не лейкой.
  5. Чужая калибровка. Значения 260/520 из примера DFRobot верны только для их экземпляра при 5 В. У вас будут другие — калибруйте каждый датчик самостоятельно двумя точками: воздух и вода.

Что дальше: от датчика к автополиву

Следующий шаг — автополив: помпа, реле и правило «поливать при влажности ниже 30 %». Как подключить реле-модуль к Arduino и ESP32, разбирал в обзоре реле-модуля, а чтобы полив работал даже при пропадании интернета, к проекту добавляется модуль часов реального времени DS3231. Ёмкостный датчик в таком проекте обязателен: резистивный за первый сезон сгниёт, и автоматика останется без достоверных данных.

Вывод

Модуль v1.2 за 150–250 рублей закрывает вечную боль самодельного автополива. Это простой аналоговый датчик на три провода: без библиотек, без протоколов и без гниющих электродов — он меряет ёмкость, а не ток через металл в почве. Откалибруйте его двумя точками (воздух и вода), не топите выше белой черты — и он переживёт и цветок на окне, и теплицу на даче.

Информация собрана из открытых источников и паспортов производителей и не является истиной в последней инстанции. Характеристики, распиновку и совместимость проверяйте по документации конкретной партии модуля перед покупкой и подключением.

Читайте дальше

Готовые проекты

Готовый проект: логгер температуры на SD-карту с часами DS3231

Постановка задачи Частая задача: измерять температуру в теплице, гараже или серверном шкафу с записью на карту, чтобы потом строить графики. Вариант «считать…

Читать обзор →
Моторы и приводы

Шаговый двигатель 28BYJ-48 с драйвером ULN2003: обзор и подключение

Если нужно повернуть вал строго на заданный угол — шторка, задвижка, дозатор корма — берите шаговый мотор. Самый доступный вариант из наборов…

Читать обзор →
Готовые проекты

Автономная метеостанция на ESP32: собираем из трёх модулей

Соберём законченное устройство: комнатная метеостанция, которая показывает температуру, влажность и давление на экране и работает от аккумулятора. Все три модуля мы уже…

Читать обзор →