Датчик протечки воды своими руками на ESP8266
Две пластины на полу под раковиной, ESP8266 и сообщение на телефон, когда между пластинами появилась вода. Главное — не убить щупы электролизом и не посадить батарею за неделю.
Содержание
Датчик протечки на ESP8266 — это две нержавеющие пластины на полу, плата и сообщение, когда вода замкнула пластины. Питание щупов включают только на время измерения, чтобы они не разрушались от электролиза, а между измерениями плату отправляют в глубокий сон: по даташиту Espressif в нём потребляется 20 мкА.
Сообщение отправляйте по MQTT или HTTP на свой сервер или Home Assistant в локальной сети, а не на облачный сервис, который может оказаться недоступным.
Ниже — данные даташита, принцип работы с примером расчёта, сборка, оценка работы от батареи и ошибки, которые приводят к ложным срабатываниям.
Что нужно знать об ESP8266

Данные из даташита Espressif на ESP8266EX:
| Параметр | Значение |
|---|---|
| Рабочее напряжение | 2,5–3,6 В |
| Глубокий сон (Deep-sleep) | 20 мкА при 2,5 В |
| Light-sleep | 0,9 мА |
| Modem-sleep | 15 мА |
| Передача 802.11b, 11 Мбит/с, +17 дБм | 170 мА |
| Передача 802.11g, 54 Мбит/с, +15 дБм | 140 мА |
| Передача 802.11n, MCS7, +13 дБм | 120 мА |
| Приём 802.11b / g / n | 50 / 56 / 56 мА |
| Ток вывода GPIO, максимум | 12 мА |
| АЦП | 10 бит, вход TOUT, 0–1,0 В |
Даташит помечает ESP8266EX как NRND, то есть не рекомендованный для новых разработок. Для нового проекта можно взять ESP32.
Вход АЦП на самом чипе рассчитан на 1,0 В.
На платах вроде Wemos D1 mini стоит делитель, и на вход A0 можно подавать до 3,3 В. Проверяйте по схеме вашей платы.
Как это работает

Щупы лежат на полу на расстоянии пары миллиметров друг от друга. Один подключён к питанию 3,3 В или, лучше, к выводу GPIO через резистор 1 кОм (см. ниже), другой к входу и через 10 кОм к земле.
Сухой пол — на входе ноль, вода замыкает щупы, и на входе появляется напряжение. Считать его можно и цифровым входом, и АЦП: АЦП даёт ещё и «степень мокроты».
Расчёт напряжения на входе
Цепочка работает как делитель: Uвх = U · R2 / (R1 + Rв + R2), где R1 = 1 кОм, R2 = 10 кОм, а Rв — сопротивление воды между щупами.
Пример при питании 3,3 В.
При Rв = 10 кОм: Uвх = 3,3 · 10 / (1 + 10 + 10) ≈ 1,57 В.
При слабой воде Rв = 100 кОм: Uвх = 3,3 · 10 / (1 + 100 + 10) ≈ 0,30 В. На сухом полу Rв очень велико, и Uвх близко к нулю.
Это расчёт для примера: сопротивление воды зависит от её состава. Порог подберите по своим щупам, смочив их. Делители считает калькулятор делителя напряжения.
Сборка

Порядок такой, чтобы ошибки находились на столе, а не под раковиной.
- Припаяйте провода к щупам.Место пайки закройте термоусадкой или герметиком.
- Подключите щупы по схеме.Пока без платы в воде.
- Прошейте простой скетч.Читать вход, сравнивать с порогом, при превышении отправлять сообщение по MQTT или HTTP на свой сервер.
- Проверьте пальцем.Смочите два щупа, на мониторе порта должно появиться срабатывание.
- Установите.Положите щупы на пол, плату закрепите выше уровня возможной воды.
После установки оставьте датчик на сутки и убедитесь, что ложных срабатываний нет.
Уведомления
Вариантов отправки сообщения четыре.
- MQTT в локальный брокер.Платы публикуют сообщение, а Home Assistant или другой клиент отправляет уведомление на телефон. Подробнее — в статье MQTT для умного дома.
- HTTP на свой сервер.Плата вызывает адрес в вашей сети.
- Готовая прошивка.Tasmota или ESPHome умеют отправлять состояние без своего кода: смотрите Tasmota и ESPHome.
- Внешний сервис.Мессенджеры и облака могут быть недоступны или менять правила, поэтому не делайте датчик зависимым от одного такого сервиса.
Для работы без интернета полезна статья про умный дом без интернета.
Продление жизни щупов и батареи
Две задачи решаются одним приёмом: питание включают только на время измерения.
- Питание на щупы только на время измерения.Постоянный ток в воде разрушает металл за считанные недели. Подключите щуп к выходу GPIO, включайте его на несколько миллисекунд перед измерением и сразу выключайте.
- Нержавеющая сталь вместо меди или железа.Она хуже окисляется.
- Глубокий сон между измерениями.Проснулась, измерила, отправила сообщение только при тревоге, ушла в сон.
- Питание платы.Плата с мостом USB в сне потребляет сильно больше, чем сам чип: измерьте мультиметром.
Для глубокого сна по даташиту вывод GPIO16 нужно соединить с RST: иначе плата не проснётся по таймеру.
Оценка работы от батареи
Расчёт на сутки при проверке раз в 10 минут. Допущения для примера: на пробуждение с подключением к Wi-Fi уходит 2 секунды при токе 140 мА (передача 802.11g по даташиту).
Заряд за одно пробуждение: 140 мА × 2 с = 280 мА·с ≈ 0,078 мА·ч.
В сутки 144 пробуждения: 144 × 0,078 ≈ 11,2 мА·ч. Сон чипа при 20 мкА за 24 часа даёт ещё 0,48 мА·ч. Итого около 11,7 мА·ч в сутки.
При ёмкости батареи 2000 мА·ч получается порядка 170 суток в идеальном случае. Реальный срок меньше: плата, стабилизатор, саморазряд и падение напряжения к концу разряда не учтены.
Интервал проверки — компромисс между батареей и скоростью реакции: при проверке раз в 10 минут сообщение о протечке может уйти с задержкой до 10 минут.
Перевод ёмкости между единицами сделает калькулятор мА·ч в А·ч.
Рабочее напряжение чипа — не ниже 2,5 В. Две свежие щелочные батарейки дают около 3 В, но к концу разряда напряжение опускается к этой границе.
Типовые ошибки
- Щупы постоянно под напряжением.Корродируют, появляются ложные срабатывания.
- Датчик не в самой низкой точке.Вода на полу его не достигает.
- Нет связи в подвале или шкафу.Сигнал слабый, тревога не уходит; проверяйте связь на месте установки.
- Датчик установлен и забыт.Батарея села; добавьте сообщение «жив» раз в сутки.
- Плата стоит на полу.Она залита сама, когда протечка началась.
- GPIO16 не соединён с RST.Плата не просыпается из глубокого сна.
Что в итоге
Подходит: кухня, ванная, подвал, стиральная машина, где нужно знать о воде как можно раньше. Не заменяет автоматического перекрытия воды: для него нужен кран с приводом, и это отдельная, более серьёзная задача.
Частые вопросы
Почему щупы разрушаются со временем?
Постоянный ток в воде вызывает электролиз, и металл растворяется. Это происходит за считанные недели.
Подавайте напряжение на щупы только на время измерения, на несколько миллисекунд, и берите нержавеющую сталь.
Как долго проработает датчик от батареи?
Зависит от платы и частоты проверок. В примере выше при проверке раз в 10 минут и 2 секундах на пробуждение получается порядка 11,7 мА·ч в сутки.
Для вашей платы измерьте ток в сне мультиметром: плата с мостом USB тратит заметно больше, чем сам чип.
Куда отправлять уведомление, если сервис недоступен?
Лучше на свой сервер в локальной сети: MQTT-брокер или Home Assistant. Тогда датчик не зависит от внешних сервисов.
Если нужны внешние уведомления, предусмотрите запасной канал: внешние сервисы бывают недоступны.
Какую плату взять и где купить?
Подойдёт Wemos D1 mini или аналог с ESP8266: платы продаются в российских магазинах радиодеталей и на маркетплейсах.
Даташит помечает ESP8266EX как NRND, поэтому для нового проекта можно взять ESP32, если схема это допускает.
Почему датчик срабатывает без воды или не срабатывает при воде?
Причины: влажный воздух и конденсат между щупами, коррозия, слабое питание. При неисправности смочите щупы и проверьте напряжение на входе мультиметром.
Порог выставляйте по своим щупам, смочив их водой, которая обычно течёт у вас из крана.
Полезно при расчёте питания
Что понадобится
| Обозначение | Номинал | Тип | Кол-во |
|---|---|---|---|
| — | Плата ESP8266 (например Wemos D1 mini) | 3,3 В логика | 1 |
| — | Щупы: две нержавеющие пластины или винта | не медь и не железо: коррозия | 2 |
| — | Резистор 10 кОм | подтяжка к земле | 1 |
| — | Резистор 1 кОм | ограничение тока в щупе | 1 |
| — | Провода в изоляции | к щупам | 2 |
| — | Блок питания 5 В / USB | или батарея с экономичным режимом | 1 |



























