Датчик протечки воды. Отправка сообщений в телеграм.

Датчик протечки воды. Отправка сообщений в телеграм.

Сегодня снова вернёмся к Телеграм. Будем делать систему, срабатывающую при  протечки воды, с отправкой сообщения в бот Телеграм.
Для этого  примера, я буду использовать вот такой датчик, но вы можете взять другой. Этот датчик имеет 3 вывода. Питание и сигнальный выход.  Датчик работает с аналоговым входом Ардуино или ESP, что для нас не очень хорошо, так как в ESP всего 1 Аналоговый вход.
В Ардуино их много, так, что там проще.
Есть датчики которые имеют и Аналоговый и Цифровой выход. Можете взять такой. Но для цифрового выхода придётся немного переделать код.

Посмотрим что получилось.

При включении датчика в Телеграм бот приходит сообщение, что Бот <ПРОТЕЧКИ ВОДЫ> стартовал.
Теперь он готов к работе. Если на датчик попадёт вода, то в Телеграм придёт сообщение, что обнаружена протечка.  Таких сообщений придёт 3, с интервалом в 10 секунд. Если датчик так и останется в воде, то больше сообщений не будет. Для дальнейшей работы надо протереть датчик или подождать пока он не высохнет.

Если хотите собрать себе такое же устройство, то давайте разбираться как это работает.
Сначала принцип работы. При попадании воды на датчик у него изменяется напряжение на выходе. При полостью сухом датчике оно равно примерно 0 вольт, а при полностью погружённом в воду стремиться к 3,3 вольта. Это напряжение питания поданное на датчик. Но крайних значений 0 , а особенно 3,3 вольта не будет никогда, поэтому мы и получаем вот такие значения.  
Выходное напряжение датчика зависит от степени погружения датчика и ещё от многих параметров. Поэтому у каждого будут разные значения. У меня например больше 2 не поднималось. Это напряжение мы подаём на Аналоговый вход . Он подключен к аналого-цифровому преобразователю. Так как АЦП у ESP8266 10-битный то на выходе мы получаем 1024 значения. От 0 до 1023. Для того чтобы получить обратно напряжение надо использовать вот эту формулу.
Всё, что я здесь сказал и показал нам для примера не понадобится. Это так, для общего развития.

А вот это нам будет нужно. Загружаем следующий скетч.
Значения которые приходят с датчика поступают на Аналоговый вход А0. Мы можем их считать функцией analogRead. Эти значения будут в диапазона от 0 до 1023. Если капнуть водой на датчик, значения изменятся. Посмотрите какое у вас значение. Вам надо будет его вставить в следующий код.
Давайте посмотрим ещё один скетч. Вставим значение которое мы определили в прошлом примере, и вставим чуть меньше, что бы срабатывало наверняка.
Принцип работы этого скетча в том чтобы при срабатывании датчика вывести в монитор порта текст Тревога, включить светодиод установленные на плате. Так как он подключен по инверсной схеме, то есть если приходит Высокий сигнал, то светодиод гаснет, а если Низкий, то загорается.
Если у вас всё работает верно то переходим к заключительному примеру.

Ну вот и самое интересное. Код отправки сообщений в Телеграм.
Я буду рассказывать в расчёте на то, что вы посмотрели вот это видео, про создание чат бота. Если вы его не смотрели и у вас ещё нет бота, то вам надо прерваться и создать бот.
В идеале, конечно лучше чтобы вы посмотрели и вот это видео, так как я использую немного переделанный код из того урока. Но это уже на ваше усмотрение.

Теперь скетч.

  • Эти библиотеки уже должны быть установлены.
  •  Сюда вписываем настройки WIFI сети.
  • Вставляем токен бота и ID чата, кстати, чатов может быть несколько. Я потом сделаю отдельное видео, как добавлять несколько чатов.
  • Указываем, что датчик подключен к Аналоговому входу А0.
  • Переменная для хранения состояния датчика. В начале она равна false.
  • И количество сообщений которое будет отправлено в бот при обнаружении протечки. Если не указать количество, то сообщения в бот будут поступать бесконечно.
  • Сюда я вынес значение полученное в прошлом примере.  Когда капали на датчик что бы узнать порого срабатывания.
  • Дальше делаем внутреннюю подтяжку – это спасёт нас от случайных значений на входе А0.
  • Это код для соединения с WIFI сетью и получения IP адреса.
  • А это первое сообщение боту, что датчик подключен и начал свою работу.

Ни и сам код проверки.
Если на датчик попала вода и счётчик не равен 0, то отправить сообщение в бот, что обнаружена протечка.
Уменьшить счётчик на единицу и подождать 10 секунд.
Если условие всё ещё верно, то отправить новое сообщение, уменьшить счётчик и снова подождать 10 секунд.
Если датчик всё ещё в воде, то снова отправить сообщение, уменьшить счётчик и подождать 10 секунд.
А вот теперь условие не будет верно. Так как счётчик равен 0. И если датчик в воде, то нового сообщения не придёт.
Это сработает когда вы вытрите, или  датчик сам подсохнет, и снова установит счётчик на тройку.
Датчик снова готов к работе.

Если вам интересна эта тема, то я могу снять ещё много видео про Использование Телеграм и не только про это.
Объём вашего интереса, я буду оценивать по количеству лайков и комментариев. Чем их будет больше, тем быстрее выйдет новое видео.
Ну, а если вам нравятся мои уроки, то ставьте лайк и делитесь моими видео, с другими. Это очень поможет мне в продвижении канала, а меня будет стимулировать выпускать уроки чаще и интереснее.
Вы видите ссылки на видео, которые, я думаю будут вам интересны. Перейдя на любое из этих видео вы узнаете что-то новое, а ещё поможете мне. Ведь любой ваш просмотр - это знак YOUTUBE, что это кому-то интересно и что его надо показывать чаще.
Спасибо.

Дополнительные материалы и примеры
Датчик протечки воды. Отправка сообщений в телеграмм
Датчик влажности почвы на ардуино