Автополив на Arduino: датчик влажности + насос + расписание
Автополив на Arduino у меня начался с командировки: уезжал на 10 дней, а фиалки на подоконнике надо было поливать каждые 3 дня. Первый собранный полив проработал неделю и залил соседей снизу — помпа включилась, а датчик влажности замер, и обратной связи не было. Со второго раза собрал уже с гистерезисом, таймером обратного хода и сухим ходом: помпа крутится не дольше 30 секунд, и если датчик влажности не меняется — выключается. Это и есть «автополив arduino»: несколько строк кода, которые страхуют от протечки.
Ниже — сборка автополива на Arduino Uno с ёмкостным датчиком влажности почвы, помпой 5V, RTC DS3231 и расписанием. Схема, скетч, цены деталей, гистерезис 20% (вкл при 30%, выкл при 50%), защита от сухого хода и почему аналоговый датчик с двух проводов надёжнее резистивного с электродами. Логику датчика и помпы можно «пощупать» в симуляторе платы до пайки — компонент soil на A0, relay на D7.
Датчик влажности почвы: ёмкостный против резистивного
Резистивный датчик — два электрода в землю, меряет сопротивление между ними. Дёшево (50-80 ₽), но электроды корродируют за 2-3 месяца, и показания плывут. Ёмкостный датчик — медная плата в изоляции, меряет диэлектрическую проницаемость почвы. Дороже (150-250 ₽), но живёт годами: нет контакта электродов с водой. Для постоянного автополива — только ёмкостный. Резистивный — для разовых экспериментов и учебы. Я за год перепробовал 4 резистивных и 1 ёмкостный: первый жив до сих пор.
- Ёмкостный датчик: 150-250 ₽, A0 выход, 3.3-5V питание, не корродирует.
- Резистивный датчик: 50-80 ₽, A0 выход, корродирует за 2-3 месяца.
- Калибровка: сухая земля ~ 800, влажная ~ 300 (переворачиваем шкалу через map).
- Питание датчика 3V3: при 5V коррозия ускоряется, при 3V3 — стандарт для ёмкостного.
- Фильтр: среднее из 3 чтений с паузой 50 мс — иначе шум от помпы искажает.
Помпа 5V: ток, питание, защита от сухого хода
Мини-помпа 5V для аквариума (100-200 ₽) тянет 200-300 мА, питание через модуль реле на D7 с отдельным блоком 5V/1A. Грабля — ток пуска помпы до 600 мА, и Uno от USB-порта ПК при пуске может ребутнуться. Решение: реле-модуль с опторазвязкой, и питание помпы не с платы, а с отдельного БП. Защита от сухого хода: если после 30 секунд работы помпы датчик влажности не изменился — выключаем помпу и пишем в Serial «ALERT: no water». Иначе помпа крутится вхолостую и сгорит за 5-10 минут.
Гистерезис DRY/WET вместо одного порога — единственный честный способ: при одном пороге 500 реле стрекочет у границы, при двух (вкл при 600, выкл при 350) помпа включается и работает, пока влажность не поднимется. Таймер MAX_PUMP_MS = 30 секунд — защита от сухого хода: если вода кончилась, помпа не крутится вхолостую, а выключается. Полный разбор порогов и гистерезиса — в уроке про автополив с реле и почвой.
RTC DS3231: расписание по времени, а не по влажности
Расписание по влажности удобно для цветов на подоконнике, но для огорода на даче «поливать в 19:00» надёжнее — датчик влажности на открытом грунте врёт после дождя. RTC DS3231 на I2C, батарейка CR2032 для хода при отключении. Скетч: при времени 19:00 и влажности ниже DRY включаем помпу, через 30 секунд или достижения WET — выключаем. Так нет полива в полдень (вечерний полив лучше для растений), и нет циклического полива при нормальной влажности. Подробно — в уроке про полив по расписанию.
Зоны полива: 3 помпы на 3 группы растений
Разным растениям — разный режим: фиалки 2 раза в неделю, кактусы раз в 2 недели, рассада каждый день. На Uno это 3 реле на D7, D8, D6 и 3 датчика влажности на A0, A1, A2. Скетч раз в минуту проверяет все 3 зоны, и для каждой запускает свой цикл полива. Полив проходит по очереди, не параллельно — иначе помпы просаживают питание. Реалистичный максимум для Uno: 4 зоны полива с независимыми датчиками; дальше нужен I2C-расширитель PCF8574 или переход на Mega.
Грабли автополива, на которые я наступал
- Резистивный датчик корродирует за 2-3 месяца: только ёмкостный для постоянной установки.
- Помпа 5V от USB-порта ПК: ток пуска 600 мА, плата ребутится. Отдельный блок 5V/1A на реле-помпу.
- Сухой ход помпы: крутится 5-10 минут и сгорает. Таймер MAX_PUMP_MS = 30 секунд и проверка изменения датчика.
- Полив в полдень на солнце: листья горят от капель (линза). Только вечерний или утренний полив.
- Шланг от помпы без обратного клапана: вода стекает обратно, помпа работает вхолостую при следующем включении. Обратный клапан 100 ₽ — обязательно.