Подключение защиты от протечек «Аквасторож» в систему Умный Дом. Как не переплачивать за Умный Дом. Защита от потопа (антипротечка) Защита от протечки воды arduino
Arduino Датчик уровня воды предназначен для определения уровня воды в различных емкостях, где недоступен визуальный контроль, с целью предупреждения перенаполнения емкости водой через критическую отметку.
Конструкции датчиков уровня воды могут быть различными – поплавковые, погруженные, врезные. Данный датчик воды – погруженный. Чем больше погружение датчика в воду, тем меньше сопротивление между двумя соседними проводами. Датчик имеет три контакта для подключения к контроллеру.
- + – питание датчика;
- - – земля;
- S - аналоговое значение.
Технические характеристики модуля
- Напряжение питания: 3.3-5 В;
- Ток потребления 20 мА;
- Выход: аналоговый;
- Зона обнаружения: 16×30 мм;
- Размеры: 62×20×8 мм;
- Рабочая температура: 10 – 30 °С.
Пример использования
Рассмотрим подключение датчика уровня воды к Arduino. Создадим проект звуковой сигнализации затопления помещения. При погружении датчика в воду, сигнализация издает три вида звуковых сигналов (небольшое затопление, средний уровень, критический уровень), соответствуюший трем уровням воды. Для воспроизведения звуковых можно к цифровому выводу подключить пьезоизлучатель - электроакустическое устройства воспроизведения звука. Но при этом звук получается очень тихий. Чтобы получить громкость более приличного уровня, к цифровому выводу Arduino динамик, но не напрямую, а через транзистор. Для проекта нам понадобятся следующие детали:- Плата Arduino Uno
- Датчик уровня воды
- Динамик 8 Ом
- Резистор 500 Ом
- Транзистор КТ503е
- Соединительные провода
Запустим Arduino IDE. Создадим новый скетч и внесем в него следующие строчки // Датчик уровня воды // http://сайт // контакт подключения аналогового выхода датчика int aPin=A0; // контакт подключения вывода реле int soundPin=11; // частота звукового сигнала int freq={587,466,293}; // переменная для сохранения значения датчика int avalue=0; // значение уровней int levels={600,500,400}; // текущий уровень int level=0; void setup() { // инициализация последовательного порта Serial.begin(9600); // настройка выводов индикации светодиодов // в режим OUTPUT pinMode(soundPin,OUTPUT); } void loop() { // получение значения с аналогового вывода датчика avalue=analogRead(aPin); // вывод значения в монитор последовательного порта Arduino Serial.print("avalue=");Serial.println(avalue); // вывод звука различной частоты для разных уровней погружения if(avalue>levels) tone(soundPin,freq,2000); else if(avalue>levels) tone(soundPin,freq,2000); else if(avalue>levels) tone(soundPin,freq,2000); else noTone(soundPin); // пауза перед следующим получением значения 1000 мс delay(1000); } Аналоговый вывод датчика подключен к аналоговому входу Arduino, который представляет собой аналого-цифровой преобразователь (АЦП) с разрешением 10 бит, что позволяет на выходе получать значения от 0 до 1023. Значение аналоговых сигналов на аналоговом входе Arduino для трех уровней погружения были определены экспериментальным путем: > 400 – минимальное погружение; > 500 – средний уровень погружения; > 600 – большое погружение. Соответственно для каждого уровня погружения на динамике воспроизводится звуковой сигнал разной частоты: минимальное погружение – 293 Гц (нота ре 1 октавы); средний уровень погружения – 466 Гц (нота си-бимоль 1 октавы); большое погружение – 587 Гц (нота ре 2 октавы). При отсутствии погружения звуковой сигнал на динамике не воспроизводится.
Часто задаваемые вопросы FAQ
1. Не горит светодиод питания 2. При погружении в воду не изменяется значение выходного аналогового сигнала- Проверьте соединение датчика с входом Arduino.
- Проверьте наличие и полярность подаваемого на датчик питания (3,3 – 5 В).
Продолжаю серию статей о компонентах умного дома. Сегодня поговорим о датчике протечки, какие электро краны купить и как этим управлять.
Для реализации проекта по защите от потопа в квартире я заказа у китайцев два электрических крана под резьбу 1/2 "" (DN15) схемой подключения DC3 и питанием 5 вольт.
Можно было заказать и на 12 вольт (они почему-то дешевле), но у меня не было подходящего блока питания. Для 5-и вольт подойдет любая зарядка от старого телефона.
Электрический кран
Кран имеет 3 провода:
- Красный - плюс 5 вольт
- Зеленый - минус
- Желтый - управляющий (плюс - закрыт, разрыв - открыт)
Электрическая схема
Управлять этими кранами будет ESP8266-01. Это очень удобное и дешевое решение, но требующее подключения стабилизатора на 3.3 вольта. Управление мы будем осуществлять по протоколу MQTT с мобильного телефона на android.
Подробно о том как подготовить ESP к прошивке скетчем из Arduino IDE и настройке брокер-сервера cloudmqtt.com для обмена данными между устройствами я описывал в статье "ESP + MQTT как основа умного дома " и по тому повторяться не буду.
Управлять нашими электрическими кранами будет микроконтроллер ESP8266. Порт RxD будет управлять открытием/закрытием крана. Порт GPIO0 будет измерять сопротивление между ним и землей - датчик воды. Краны подключены не напрямую, а через транзистор КТ316. Ток для этих кранов не большой и этого маломощного транзистора хватает. Принципиальная схема устройства:
Датчик воды представляет собой кусок текстолита с двумя контактами. Он двухсторонним скотчем приклеен в укромном низком месте где может появиться вода.
Принцип работы
При включении устройства оно проверяет сопротивление на датчике. Если оно мало - включает тревогу и отключает подачу воды, если в норме - работает в следящем режиме.
Параллельно с этим устройство соединяется к домашнему роутеру и через интернет находит подключение к брокер серверу. Подписывается на топики "valve/1", "valve/alarm". Если на брокер сервер с мобильного клиента приходит топик "valve/alarm" = true - кран открывается, false - закрывается. Топик "valve/alarm" = true искусственно вызывает срабатывание тревоги и краны закрываются. "valve/alarm" = false отключает тревогу, если датчик не касается воды.
Скетч программы для Arduino IDE
#includeУправление на телефона
Скачал на свой Android программу - IoT MQTT Dashboard. В ней настроил отображение значения топиков "valve/1", "valve/alarm", которые присылаются раз в 3 секунды. Для управления кранами создал два переключателя "valve/1" и "valve/alarm", которые отсылают строки "true" и "false" при переключении.
Теперь остается спаять схемку и подключить. Тратить время на печатную плату было лень и сделал все по простому.
Устройство закрепил в техническом шкафу санузла. Подвел питание 5 вольт от блока питания, что бы лишний раз не светить фазой возле водяных труб.
Модернизация
В планах на доработку системы - отказ от проводных датчиков и использовать радио модули 433 МГц датчиков охраны двери с герконом. Геркон выпаивается и подпаивается самопальный сенсор воды (Контакты на плате уже есть. Такой же датчик для воды стоит вдвое дороже но практически ничем не отличается.)
На плату нужно будет добавить приемник 433 МГц и доработать код.
Библиотека pubsubclient.h в приложении. Она используются в скетче. Если выйдет более свежая версия библиотеки - может потеряться обратная совместимость с кодом и тогда можно использовать pubsubclient.h из архива.
На этапе ремонта была установлена защита от протечек «Аквасторож». Два крана (горячая, холодная вода) и 4 проводных датчика. В Аквастороже предусмотрено реле, которое срабатывает если возникает аварийная ситуация (сработка датчика протечки) и имеется разъем RJ45 через который можно управлять открытием и закрытием кранов, подачей управляющих сигналов на соответствующие контакты. Вполне вероятно есть возможность прочитать данные и напрямую из микроконтроллера по интерфейсу UART, т.к. данный разъем присутствует на плате, но у меня не получилось прочитать какие либо данные, возможно что бы микроконтроллер выдал данные, нужно отправить ему команду запроса.
Интеграция Аквасторожа в умный дом по инструкции производителя не совсем умная, так как нет возможности узнать текущее состояние параметров блока управления, а именно состояние батарей, активный режим, режим неисправности датчиков и т.п. В итоге было решено подключится к панели управления напрямую для считывания состояния светодиодов на панели управления.
Первоначальная версия интеграции Аквасторожа в умный дом была построена на Arduino Nano и модуля nRF24L01. Такая интеграция была как временное решение, но нет ничего более постоянного, чем временное и на данном этапе я просто заменил модуль nRF24L01 на ESP8266, оставив ардуину. В планах избавиться от ардуины и сделать плату с ESP8266 + расширитель портов MCP23017 совместно с оптопарами.
На аналоговые входы ардуины подключены сигналы идущие на светодиоды лицевой панели (закрыто, открыто, отключение датчиков, готов, залив, неисправность, батареи разряжены), светодиоды с номерами 1, 2, 3, 4, 5 не подключены так как не хватает аналоговых портов на Ардуине, к цифровым их подключить не получится без дополнительных решений, так как вся электроника в Аквастороже питается от 2.5 Вольт, а нижняя граница логической единицы как раз находится на этом уровне и получить стабильные данные не получилось. В следующий раз я поставлю оптопары для согласования уровней.
Три выхода Ардуины через резисторы подключены параллельно кнопкам, при нажатии кнопки замыкаются на землю.
Ардуина считывает состояния светодиодов и каждые 2 секунды передает их по UART в ESP8266, которая считывает эти данные и передает по MQTT на сервер умного дома.
Пищалку заклеил изолентой так как она очень громкая.
Схема подключения «Аквасторожа» к GSM сигнализации по инструкции производителя
Систему «Аквасторож» можно подключить практически к любой GSM-сигнализации.
Схема подключения предельно проста и состоит всего из 3х цепей:
Цепь «In4» – «GRD»: получение GSM-сигнализацией информации о срабатывании системы Аквасторож на «Залив»
Цепи «R1-1» – «R1-2» / «R2-1» – «R2-2»: передача от GSM-сигнализации команды на «закрытие» / «открытие» кранов системы «Аквасторож»
Для дистанционного «Открытия» кранов необходимо замкнуть
цепь «R2-1» – «R2-2» в течение не более 2 секунд.
Для дистанционного «Закрытия» кранов необходимо замкнуть
цепь «R1-1» – «R1-2» в течение не более 2 секунд.
Подключение системы «Аквасторож» к Умному дому по инструкции производителя
Класический блок управления:
При «Заливе» система «Аквасторож» на 2 секунды замкнет/разомкнёт контакты 1-2 / 2-3 низковольтного реле, а затем вернёт их в исходное состояние.
Для дистанционного «Открытия» кранов необходимо замкнуть контакты 1-6 разъёма RJ-45 в течение не более 2 секунд.
Для дистанционного «Закрытия» кранов необходимо замкнуть контакты 1-5 разъёма RJ-45 в течение не более 2 секунд.
Блок управления«Аквасторож ЭКСПЕРТ» PRO*:
*Данный вариант исполнения контроллера «Аквасторож Эксперт» позволяет получать информацию о положении кранов
«Аквасторож».
При «Заливе» система «Аквасторож» замкнет/разомкнёт контакты 1-2 / 2-3 бистабильного реле и останется в этом состоянии, сигнализируя о «Закрытии» кранов «Аквасторож».
Если будет подан сигнал на «Открытие» кранов, то система «Аквасторож» разомкнёт/замкнёт контакты 1-2 / 2-3 бистабильного реле, сигнализируя об «Открытии» кранов
«Аквасторож».
Джампер #4 на плате контроллера «Эксперт PRO» в данном варианте должен быть надет!
Пример визуализации панели управления Аквасторожом на домашней веб странице.
Задержки чисто программные и от них можно избавится если переписать немного код.
Arduino Датчик уровня воды предназначен для определения уровня воды в различных емкостях, где недоступен визуальный контроль, с целью предупреждения перенаполнения емкости водой через критическую отметку.
Конструкции датчиков уровня воды могут быть различными – поплавковые, погруженные, врезные. Данный датчик воды – погруженный. Чем больше погружение датчика в воду, тем меньше сопротивление между двумя соседними проводами. Датчик имеет три контакта для подключения к контроллеру.
- + – питание датчика;
- - – земля;
- S - аналоговое значение.
Технические характеристики модуля
- Напряжение питания: 3.3-5 В;
- Ток потребления 20 мА;
- Выход: аналоговый;
- Зона обнаружения: 16×30 мм;
- Размеры: 62×20×8 мм;
- Рабочая температура: 10 – 30 °С.
Пример использования
Рассмотрим подключение датчика уровня воды к Arduino. Создадим проект звуковой сигнализации затопления помещения. При погружении датчика в воду, сигнализация издает три вида звуковых сигналов (небольшое затопление, средний уровень, критический уровень), соответствуюший трем уровням воды. Для воспроизведения звуковых можно к цифровому выводу подключить пьезоизлучатель - электроакустическое устройства воспроизведения звука. Но при этом звук получается очень тихий. Чтобы получить громкость более приличного уровня, к цифровому выводу Arduino динамик, но не напрямую, а через транзистор. Для проекта нам понадобятся следующие детали:- Плата Arduino Uno
- Датчик уровня воды
- Динамик 8 Ом
- Резистор 500 Ом
- Транзистор КТ503е
- Соединительные провода
Запустим Arduino IDE. Создадим новый скетч и внесем в него следующие строчки // Датчик уровня воды // http://3d-diy.ru // контакт подключения аналогового выхода датчика int aPin=A0; // контакт подключения вывода реле int soundPin=11; // частота звукового сигнала int freq={587,466,293}; // переменная для сохранения значения датчика int avalue=0; // значение уровней int levels={600,500,400}; // текущий уровень int level=0; void setup() { // инициализация последовательного порта Serial.begin(9600); // настройка выводов индикации светодиодов // в режим OUTPUT pinMode(soundPin,OUTPUT); } void loop() { // получение значения с аналогового вывода датчика avalue=analogRead(aPin); // вывод значения в монитор последовательного порта Arduino Serial.print("avalue=");Serial.println(avalue); // вывод звука различной частоты для разных уровней погружения if(avalue>levels) tone(soundPin,freq,2000); else if(avalue>levels) tone(soundPin,freq,2000); else if(avalue>levels) tone(soundPin,freq,2000); else noTone(soundPin); // пауза перед следующим получением значения 1000 мс delay(1000); } Аналоговый вывод датчика подключен к аналоговому входу Arduino, который представляет собой аналого-цифровой преобразователь (АЦП) с разрешением 10 бит, что позволяет на выходе получать значения от 0 до 1023. Значение аналоговых сигналов на аналоговом входе Arduino для трех уровней погружения были определены экспериментальным путем: > 400 – минимальное погружение; > 500 – средний уровень погружения; > 600 – большое погружение. Соответственно для каждого уровня погружения на динамике воспроизводится звуковой сигнал разной частоты: минимальное погружение – 293 Гц (нота ре 1 октавы); средний уровень погружения – 466 Гц (нота си-бимоль 1 октавы); большое погружение – 587 Гц (нота ре 2 октавы). При отсутствии погружения звуковой сигнал на динамике не воспроизводится.
Часто задаваемые вопросы FAQ
1. Не горит светодиод питания 2. При погружении в воду не изменяется значение выходного аналогового сигнала- Проверьте соединение датчика с входом Arduino.
- Проверьте наличие и полярность подаваемого на датчик питания (3,3 – 5 В).