Осветительные приборы

Ардуино защита от протечек воды. Датчик уровня воды

Ардуино защита от протечек воды. Датчик уровня воды
  • Интернет вещей ,
  • DIY или Сделай сам
  • В статье представлен прагматичный подход по созданию одного из элементов Умного Дома - экономной защиты от потопа (антипротечки) на базе универсального контроллера домашней автоматизации.

    Главные отличия от ранее представленных на хабре решений данной задачи – простота реализации, относительно дешево + для повторения не надо быть программистом. Правда паять все равно придется, но всего 2 раза.

    Введение

    На хабре, как на ресурсе технически активных людей, на который страждущие идут за советом и решением проблем, размещено множество статей по теме Умный Дом.
    И часто в комментариях встречаются сожаления о том, что мол никто пока не родил одновременно мощный, простой в освоении и экономный способ реализации Умного Дома для обывателей. То надо паять, то кодить, причем часто на разных языках: и для микроконтроллера, и для веб и так далее.
    А так чтоб взял, купил запчасти-кубики за недорого и сам лично запустил – такое редко встречается.

    Вот я и решил вставить свои 5 копеек, так как похоже, мне как раз попался один из вариантов реализации Умного Дома, который может подойти для многих прагматически настроенных потребителей.

    Я расскажу на примере реализации защиты от потопа, хотя уже, на этом же контроллере у меня функционирует система охранной сигнализации, регистрации температуры и автоматического отключения нужных розеток при уходе из дома.

    Итак, по моей «пирамиде потребностей Маслоу для Умного Дома» (с) – важность сигнализации и предотвращения потопа находится на том же уровне, что и важность сигнализации о вторжении или появлении дыма.

    Пирамида потребностей Маслоу для Умного Дома

    Ибо масштаб трагедии может быть ужасающим:

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

    Проблема

    Итак, захотелось в случае обнаружения протечки воды – получать оповещение (смс и/или email) и, чтобы автоматически перекрывалась подача воды в квартиру. А также иметь возможность открывать и перекрывать воду «вручную», в том числе удаленно через интернет.

    Решение

    Существует ряд готовых наборов для полного или частичного решения данной задачи, но, во-первых, они мягко говоря дороговаты, во-вторых, имея в руках универсальный контроллер управления умным домом все это можно сделать самому и будет не хуже, а даже лучше ввиду того, что все будет интегрировано в единую систему и будет взаимодействовать именно так как мне хочется, а не так, как решил производитель системы. А учитывая, что самая дорогостоящая часть систему уже есть (контроллер), то избавляемся от дублирования и избыточности.

    Текущая структура моей системы Умный Дом. Красным выделены компоненты непосредственно участвующие в системе Антипротечки.

    Настольный макет прикладной части системы антипротечки выглядел так:

    У меня сейчас горячая вода получается путем нагрева в бойлере холодной воды. Поэтому перекрывать нужно только одну трубу.

    При необходимости, систему можно будет элементарно нарастить и сделать перекрытие второй трубы просто добавив еще один клапан и подключив его параллельно к радиореле.

    Датчик протечки

    Самый сложный момент во всей системе.
    Беда в том, что если вопросы по контролю вторжения и появления дыма или газа элементарно решаются стандартными датчиками, то с контролем утечки воды все несколько иначе. В перечне совместимых датчиков моего универсального контроллера пока нет датчика протечки воды. По крайней мере не было…

    Поиск на хабре быстро показал путь наименьшего сопротивления : взять стандартный беспроводной герконовый датчик и вместо геркона, а точнее параллельно ему, вывести провода с контактами и замыкать их водой.

    Данный подход имеет ряд недостатков: одним из главных является окисление не позолоченных контактов со временем.

    Ранее читал в интернете, что существуют другие способы определения протечки воды, например, бесконтактные, но дешевизна, оперативность и элементарность реализации описанного выше варианта прервала полет инженерной мысли в сторону инновационных подходов.

    За основу был взят китайский беспроводной магнитоконтактный (герконовый) датчик MD-209R. В моем случае был выбран относительно дешевый датчик-клон, совместимый с протоколом передачи PowerCode (фирмы Visonic), так как это один из беспроводных протоколов, поддерживаемых моим контроллером.

    Параллельно встроенному геркону я подпаял 2 провода, замыкание которых фактически приводят к срабатыванию датчика.

    Итак, после нехитрых манипуляций с паяльником получилось это:

    Клапан с электроприводом


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

    Свой макет я испытывал на китайском клапане с электроприводом под трубу на 1/2 дюйма .

    Конструкция электропривода клапана автоматически отключает питание на катушку после открытия или закрытия. Таким образом, нет необходимости командами с контроллера снимать напряжение через радиореле после выполнения операции.

    Радиореле

    Для подачи питания на привод я закупил на ebay вот такое двухканальное радиореле из списка совместимых с контроллером. Тип YKT-02XX-433

    Внутри установлена так любимая китайскими производителями микросхема-кодер 1527.

    В нем стоят 10-амперные реле, поэтому, в принципе, ими можно коммутировать почти любую бытовую нагрузку до 250В. Ограничение 2 кВт.

    Для управления электроприводом этого более чем достаточно, так как привод клапана питается от 12 В и по паспорту потребляет всего 4 Вт, причем только во время изменения состояния клапана.

    Данное радиореле может работать в нескольких режимах, один из которых нам как раз и надо: взаимная блокировка каналов. В этом режиме - при включении реле одного канала, автоматически выключается реле другого канала. Таким образом, мы «почти аппаратно» защищаемся от одновременной подачи напряжения на «открытие» и «закрытие» на соленоид электропривода клапана вследствие каких-либо глюков.

    Схема подключения клапана, приемника:

    Управление


    В качестве «мозгов» системы я применил Наносервер NS1000 - универсальный контроллер отечественного производителя 1-М Умным Домом .

    Возможности контроллера, которые так или иначе используются в данном проекте:
    Поддержка сверхбюджетных беспроводных датчиков и радиореле.
    Выполнение сценариев оффлайн (даже без интернет).
    Оповещение о событиях через смс и по электронной почте.
    Элементарное составление «сценариев» работы системы без написания кода.
    Возможность управление устройствами со смартфона (Android).
    Управление через WEB.
    Ведение «логов».

    Сценарии

    В процессе настройки контроллера нужно учесть следующий нюанс:
    Герконовый датчик посылает сообщение о срабатывании когда размыкается, а нам надо чтобы при замыкании. Соответственно, в условии запуска сценария нужно указать не включение датчика, а выключение. И не по состоянию, а по изменению. Чтобы оповещения не повторялись циклически.
    Условие запуска сценария 1: Если Канал «Датчик протечки» выключился.
    Шаги сценария:
    . Оповещение «Хозяин, у нас потоп!»
    . Включить канал «Клапан воды закрыть»

    И сценарий на открытие клапана по команде с брелка или со смартфона:
    Условие запуска сценария 2: Если Канал «Можно открыть клапан воды» включился.
    Шаги сценария:
    . Включить канал «Клапан воды открыть»

    В WEB-интерфейсе облачного сервиса это выглядит так:

    Для ручного управления устройствами ничего «программировать» не надо – после добавления в систему, управление каждым устройством автоматически становится доступно из Личного кабинета через WEB-интерфейс и с Android-приложения.

    Вид панели WEB-управления Умным Домом через интернет:

    Внешний вид Android-приложения

    Что в результате?

    Цель достигнута. При срабатывании датчика протечки, я получаю смс-оповещение вида «Хозяин, у нас потоп!» и клапан автоматически перекрывается в течение менее 30 секунд.
    Так же, я имею возможность не автоматически открывать и закрывать клапан, путем нажатия на кнопки брелка, со смартфона или с браузера через интернет.
    Срабатывание каждого датчика и устройства регистрируется в журнале логов.

    При этом, не пришлось писать код и самостоятельное повторение данного решения вполне доступно для большинства (конечно, не считая установки клапанов на трубы).

    Настройка системы, зная, что ты хочешь, занимает от силы 10 минут. Включая активацию датчика и радиореле, создание всех сценариев.

    Понятно, что в том виде, как оно представлено на фотографиях, в реальности оно долго и надежно работать не сможет.
    Блок питания привода клапана, радиореле, да и сам датчик нужно еще поместить в пластиковые коробочки с хоть какой-то степенью защиты.

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

    Другими словами - аппетит приходит во время еды.

    Благо дело, что для наращивания функционала не надо звать «сертифицированных» специалистов, чтобы они что-то подкрутили в системе. Все это можно элементарно сделать самому, благодаря простоте принципов настройки универсального контроллера.

    Немного о ценах:

    Наносервер NS-1000 - 44$
    Датчик магнитоконтактный MD-209R - 13$
    Радиореле - 10$
    Клапан- 15$

    Итого (без учета доставки) = 82$

    Не так уж и дешево. Но это если не учитывать, что наносервер используется не только для фукнции антипротечки. Ведь на нем реализована система охранной и пожарной сигнализации и другие возможности…

    P.S.

    В процессе реализации, уже купив клапан, я обнаружил, что существуют

    В этой статье мы узнаем, как можно использовать датчик протечки Arduino. Такие датчики часто называют по-разному: датчик дождя, влаги, капель, протечки. При этом почти всегда имеется в виду один и тот же датчик, как правило, выполненный в виде готового модуля.

    Датчик легко подключается к Arduino, скетч для работы с такими датчиками прост, цена не высока. Идеальный вариант для несложных проектов на Arduino Uno, Mega, Nano.

    Описание датчика

    Датчик протечки и дождя в проектах Arduino позволяет определить появление капель влаги и вовремя отреагировать на это, например, включив оповещение. Такие системы активно используются в аграрной отрасли, в автомобилестроении, и в других повседневных сферах нашей жизни. В этой статье мы рассмотрим работу с готовым модулем, который можно легко приобрести в любых специализированных интернет-магазинах.

    Модуль датчика состоит из двух частей:

    • «Сенсорная» плата обнаружения капель. Она отслеживает количество попавшей на неё влаги. По сути, сенсор представляет собой простой переменный резистор, замыкаемый водой в разных местах, что вызывает изменение сопротивления.
    • Вторая часть датчика – сдвоенный компаратор (как правило, LM393, но возможны варианты LM293 и LM193). Его главная задача - преобразование значения с сенсора в аналоговый сигнал от 0 до 5 вольт.

    На рынке встречаются варианты датчиков как с разнесенными сенсором и компаратором, так и с объединенными на одной панели.

    Датчик запитывается от напряжения 5 В, который можно легко завести с любой платы Arduino. Как правило, у модуля датчика доступно два выхода:

    • Аналоговый. Значение, получаемое контроллером, будет варьироваться от 0 до 1023. Где 0 – все затопило или идет ливень, сенсор очень влажный, 1023 – сухая погода, сенсор сухой (в некоторых датчиках встречаются противоположные значения, 1023 – максимальная влажность, 0 – максимальная сухость).
    • Цифровой. Выдает высокое (5В) или низкое напряжение в случае превышения некоторого порога. Уровень порога срабатывания регулируется с помощью подстроечного резистора.

    Для подключения датчика к Arduino понадобится сама плата (UNO, Mega, Nano или любая другая) и сам датчик. Если вы хотите проверять интенсивность осадков, то рекомендуется расположить датчик не горизонтально, а под некоторым углом, чтобы накапливаемые капли стекали вниз.

    Схема подключения модуля датчика протечки к ардуино:

    • VCC (вход питания) – должен совпадать для соединенной схемы Arduino по напряжению и току. То есть в данном случае 5В;
    • GND – заземление;
    • АO – аналоговый выход;
    • DO - цифровой выход.

    Аналоговый выход присоединяем к аналоговому пину микроконтроллера, например, A1. Цифровой выход, соответственно подключается к одному из цифровых пинов. Напряжение можно подать с вывода 5В платы ардуино, земля соединяется с землей.

    При подключении датчиков протечки в реальных проектах надо обязательно предусматривать защиту электронной части модуля от попадания влаги!

    Пример скетча

    #define PIN_ANALOG_RAIN_SENSOR A1 // Аналоговый вход для сигнала датчика протечки и дождя #define PIN_DIGITAL_RAIN_SENSOR 5 // Цифровой вход для сигнала датчика протечки и дождя void setup(){ Serial.begin(9600); } void loop(){ int sensorValue = analogRead(PIN_ANALOG_RAIN_SENSOR); // Считываем данные с аналогового порта Serial.print("Analog value: "); Serial.println(sensorValue); // Выводим аналоговое значение в монитр порта sensorValue = digitalRead(PIN_DIGITAL_RAIN_SENSOR); // Считываем данные с цифрового порта Serial.print("Digital value: "); Serial.println(sensorValue); // Выводим цифровое значение в монитр порта delay(1000); // Задержка между измерениями }

    #define PIN_ANALOG_RAIN_SENSOR A1 // Аналоговый вход для сигнала датчика протечки и дождя

    #define PIN_DIGITAL_RAIN_SENSOR 5 // Цифровой вход для сигнала датчика протечки и дождя

    void setup () {

    Serial . begin (9600 ) ;

    void loop () {

    int sensorValue = analogRead (PIN_ANALOG_RAIN_SENSOR ) ; // Считываем данные с аналогового порта

    Serial . print ("Analog value: " ) ;

    // Выводим аналоговое значение в монитр порта

    sensorValue = digitalRead (PIN_DIGITAL_RAIN_SENSOR ) ; // Считываем данные с цифрового порта

    Serial . print ("Digital value: " ) ;

    Serial . println (sensorValue ) ; // Выводим цифровое значение в монитр порта

    delay (1000 ) ; // Задержка между измерениями

    В данном скетче мы просто считываем значения с датчика и выводим их в монитор порта. Проведите эксперимент и проверьте, как изменяется получаемое значение, когда вы дотрагиваетесь до датчика мокрой или сухой рукой. Намочили датчик – пошел дождь или появилась протечка, вытерли сухой тряпкой – дождь закончился.

    Пример проекта дождевой сигнализации

    Рассмотрим пример с использованием звуковой сигнализации в виде подключенного зумера на цифровом выходе D6. При желании можно вместо сигнализации подключить реле и выполнять различные операции с размыканием сети. В скетче полученные данные мы будем передавать в монитор порта по UART-интерфейсу.

    Скетч для проекта с сигнализацией

    Ниже представлен тестовый код, который активирует звуковой сигнал на уже упомянутом выше цифровом выходе 6, с задержкой времени, для того, чтобы исключить ложные срабатывания при случайном попадании воды на сенсор. Работа реализована через переменную, которая обновляется каждую секунду и выступает порогом – curCounter. Сигнализация приводится в действие тогда, когда значение, передаваемое с сенсора, станет меньше 300. Задержка между обнаружением влаги и срабатыванием звукового сигнала составляет чуть больше 30 секунд.

    #define PIN_RAIN_SENSOR A1 // Аналоговый вход для сигнала датчика протечки и дождя #define PIN_ALERT 6 // Цифровой выход для сигнализации #define MAX_COUNTER 30 // Пороговое значение для счетчика #define ALERT_LEVEL 300 // Пороговое значение для счетчика int curCounter= 0; // Счётчик для сбора "статистики", который увеличивается на 1 каждую секунду после срабатывания датчика void setup(){ Serial.begin(9600); pinMode(PIN_ALERT, OUTPUT); pinMode(PIN_RAIN_SENSOR, INPUT); // Можно не указывать, т.к. это значение по умолчанию } void loop(){ int sensorValue = analogRead(PIN_RAIN_SENSOR); Serial.println(sensorValue); // Выводим значение в монитр порта delay(300); // короткая задержка // Если накопили достаточно оснований для включения сигнализации if (curCounter >= MAX_COUNTER){ digitalWrite(PIN_ALERT, HIGH); // Срабатывание сигнализации curCounter = MAX_COUNTER; // Защита от переполнения переменной } // Определяем уровень влажности if (sensorValue < ALERT_LEVEL){ // В очередной раз убедились, что все влажно, увеличиваем счетчик curCounter++; }else { // Интенсивность дождя не превышает порога digitalWrite(PIN_ALERT, LOW); // Выключаем сигнализацию curCounter = 0; // Обнуляем счетчик } delay(1000); // Задержка между измерениями }

    #define PIN_RAIN_SENSOR A1 // Аналоговый вход для сигнала датчика протечки и дождя

    #define PIN_ALERT 6 // Цифровой выход для сигнализации

    #define MAX_COUNTER 30 // Пороговое значение для счетчика

    #define ALERT_LEVEL 300 // Пороговое значение для счетчика

    int curCounter = 0 ; // Счётчик для сбора "статистики", который увеличивается на 1 каждую секунду после срабатывания датчика

    void setup () {

    Serial . begin (9600 ) ;

    pinMode (PIN_ALERT , OUTPUT ) ;

    pinMode (PIN_RAIN_SENSOR , INPUT ) ; // Можно не указывать, т.к. это значение по умолчанию

    void loop () {

    int sensorValue = analogRead (PIN_RAIN_SENSOR ) ;

    Serial . println (sensorValue ) ; // Выводим значение в монитр порта

    delay (300 ) ; // короткая задержка

    На этапе ремонта была установлена защита от протечек «Аквасторож». Два крана (горячая, холодная вода) и 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» в данном варианте должен быть надет!

    Пример визуализации панели управления Аквасторожом на домашней веб странице.

    Задержки чисто программные и от них можно избавится если переписать немного код.

    В статье представлен прагматичный подход по созданию одного из элементов Умного Дома - экономной защиты от потопа (антипротечки) на базе универсального контроллера домашней автоматизации.

    Главные отличия от ранее представленных на хабре решений данной задачи – простота реализации, относительно дешево + для повторения не надо быть программистом. Правда паять все равно придется, но всего 2 раза.

    Введение

    На хабре, как на ресурсе технически активных людей, на который страждущие идут за советом и решением проблем, размещено множество статей по теме Умный Дом.
    И часто в комментариях встречаются сожаления о том, что мол никто пока не родил одновременно мощный, простой в освоении и экономный способ реализации Умного Дома для обывателей. То надо паять, то кодить, причем часто на разных языках: и для микроконтроллера, и для веб и так далее.
    А так чтоб взял, купил запчасти-кубики за недорого и сам лично запустил – такое редко встречается.

    Вот я и решил вставить свои 5 копеек, так как похоже, мне как раз попался один из вариантов реализации Умного Дома, который может подойти для многих прагматически настроенных потребителей.

    Я расскажу на примере реализации защиты от потопа, хотя уже, на этом же контроллере у меня функционирует система охранной сигнализации, регистрации температуры и автоматического отключения нужных розеток при уходе из дома.

    Итак, по моей «пирамиде потребностей Маслоу для Умного Дома» (с) – важность сигнализации и предотвращения потопа находится на том же уровне, что и важность сигнализации о вторжении или появлении дыма.

    Пирамида потребностей Маслоу для Умного Дома

    Ибо масштаб трагедии может быть ужасающим:

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

    Проблема

    Итак, захотелось в случае обнаружения протечки воды – получать оповещение (смс и/или email) и, чтобы автоматически перекрывалась подача воды в квартиру. А также иметь возможность открывать и перекрывать воду «вручную», в том числе удаленно через интернет.

    Решение

    Существует ряд готовых наборов для полного или частичного решения данной задачи, но, во-первых, они мягко говоря дороговаты, во-вторых, имея в руках универсальный контроллер управления умным домом все это можно сделать самому и будет не хуже, а даже лучше ввиду того, что все будет интегрировано в единую систему и будет взаимодействовать именно так как мне хочется, а не так, как решил производитель системы. А учитывая, что самая дорогостоящая часть систему уже есть (контроллер), то избавляемся от дублирования и избыточности.

    Текущая структура моей системы Умный Дом. Красным выделены компоненты непосредственно участвующие в системе Антипротечки.

    Настольный макет прикладной части системы антипротечки выглядел так:

    У меня сейчас горячая вода получается путем нагрева в бойлере холодной воды. Поэтому перекрывать нужно только одну трубу.

    При необходимости, систему можно будет элементарно нарастить и сделать перекрытие второй трубы просто добавив еще один клапан и подключив его параллельно к радиореле.

    Датчик протечки

    Самый сложный момент во всей системе.
    Беда в том, что если вопросы по контролю вторжения и появления дыма или газа элементарно решаются стандартными датчиками, то с контролем утечки воды все несколько иначе. В перечне совместимых датчиков моего универсального контроллера пока нет датчика протечки воды. По крайней мере не было…

    Поиск на хабре быстро показал путь наименьшего сопротивления : взять стандартный беспроводной герконовый датчик и вместо геркона, а точнее параллельно ему, вывести провода с контактами и замыкать их водой.

    Данный подход имеет ряд недостатков: одним из главных является окисление не позолоченных контактов со временем.

    Ранее читал в интернете, что существуют другие способы определения протечки воды, например, бесконтактные, но дешевизна, оперативность и элементарность реализации описанного выше варианта прервала полет инженерной мысли в сторону инновационных подходов.

    За основу был взят китайский беспроводной магнитоконтактный (герконовый) датчик MD-209R. В моем случае был выбран относительно дешевый датчик-клон, совместимый с протоколом передачи PowerCode (фирмы Visonic), так как это один из беспроводных протоколов, поддерживаемых моим контроллером.

    Параллельно встроенному геркону я подпаял 2 провода, замыкание которых фактически приводят к срабатыванию датчика.

    Итак, после нехитрых манипуляций с паяльником получилось это:

    Клапан с электроприводом


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

    Свой макет я испытывал на китайском клапане с электроприводом под трубу на 1/2 дюйма .

    Конструкция электропривода клапана автоматически отключает питание на катушку после открытия или закрытия. Таким образом, нет необходимости командами с контроллера снимать напряжение через радиореле после выполнения операции.

    Радиореле

    Для подачи питания на привод я закупил на ebay вот такое двухканальное радиореле из списка совместимых с контроллером. Тип YKT-02XX-433

    Внутри установлена так любимая китайскими производителями микросхема-кодер 1527.

    В нем стоят 10-амперные реле, поэтому, в принципе, ими можно коммутировать почти любую бытовую нагрузку до 250В. Ограничение 2 кВт.

    Для управления электроприводом этого более чем достаточно, так как привод клапана питается от 12 В и по паспорту потребляет всего 4 Вт, причем только во время изменения состояния клапана.

    Данное радиореле может работать в нескольких режимах, один из которых нам как раз и надо: взаимная блокировка каналов. В этом режиме - при включении реле одного канала, автоматически выключается реле другого канала. Таким образом, мы «почти аппаратно» защищаемся от одновременной подачи напряжения на «открытие» и «закрытие» на соленоид электропривода клапана вследствие каких-либо глюков.

    Схема подключения клапана, приемника:

    Управление


    В качестве «мозгов» системы я применил Наносервер NS1000 - универсальный контроллер отечественного производителя 1-М Умным Домом .

    Возможности контроллера, которые так или иначе используются в данном проекте:
    Поддержка сверхбюджетных беспроводных датчиков и радиореле.
    Выполнение сценариев оффлайн (даже без интернет).
    Оповещение о событиях через смс и по электронной почте.
    Элементарное составление «сценариев» работы системы без написания кода.
    Возможность управление устройствами со смартфона (Android).
    Управление через WEB.
    Ведение «логов».

    Сценарии

    В процессе настройки контроллера нужно учесть следующий нюанс:
    Герконовый датчик посылает сообщение о срабатывании когда размыкается, а нам надо чтобы при замыкании. Соответственно, в условии запуска сценария нужно указать не включение датчика, а выключение. И не по состоянию, а по изменению. Чтобы оповещения не повторялись циклически.
    Условие запуска сценария 1: Если Канал «Датчик протечки» выключился.
    Шаги сценария:
    . Оповещение «Хозяин, у нас потоп!»
    . Включить канал «Клапан воды закрыть»

    И сценарий на открытие клапана по команде с брелка или со смартфона:
    Условие запуска сценария 2: Если Канал «Можно открыть клапан воды» включился.
    Шаги сценария:
    . Включить канал «Клапан воды открыть»

    В WEB-интерфейсе облачного сервиса это выглядит так:

    Для ручного управления устройствами ничего «программировать» не надо – после добавления в систему, управление каждым устройством автоматически становится доступно из Личного кабинета через WEB-интерфейс и с Android-приложения.

    Вид панели WEB-управления Умным Домом через интернет:

    Внешний вид Android-приложения

    Что в результате?

    Цель достигнута. При срабатывании датчика протечки, я получаю смс-оповещение вида «Хозяин, у нас потоп!» и клапан автоматически перекрывается в течение менее 30 секунд.
    Так же, я имею возможность не автоматически открывать и закрывать клапан, путем нажатия на кнопки брелка, со смартфона или с браузера через интернет.
    Срабатывание каждого датчика и устройства регистрируется в журнале логов.

    При этом, не пришлось писать код и самостоятельное повторение данного решения вполне доступно для большинства (конечно, не считая установки клапанов на трубы).

    Настройка системы, зная, что ты хочешь, занимает от силы 10 минут. Включая активацию датчика и радиореле, создание всех сценариев.

    Понятно, что в том виде, как оно представлено на фотографиях, в реальности оно долго и надежно работать не сможет.
    Блок питания привода клапана, радиореле, да и сам датчик нужно еще поместить в пластиковые коробочки с хоть какой-то степенью защиты.

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

    Другими словами - аппетит приходит во время еды.

    Благо дело, что для наращивания функционала не надо звать «сертифицированных» специалистов, чтобы они что-то подкрутили в системе. Все это можно элементарно сделать самому, благодаря простоте принципов настройки универсального контроллера.

    Немного о ценах:

    Наносервер NS-1000 - 44$
    Датчик магнитоконтактный MD-209R - 13$
    Радиореле - 10$
    Клапан- 15$

    Итого (без учета доставки) = 82$

    Не так уж и дешево. Но это если не учитывать, что наносервер используется не только для фукнции антипротечки. Ведь на нем реализована система охранной и пожарной сигнализации и другие возможности…

    P.S.

    В процессе реализации, уже купив клапан, я обнаружил, что существуют

    В этой статье мы узнаем, как можно использовать датчик протечки ардуино. Такие датчики часто называют по-разному: датчик дождя, влаги, капель, протечки. При этом почти всегда имеется в виду один и тот же датчик, как правило, выполненный в виде готового модуля. Датчик легко подключается к Arduino, скетч для работы с такими датчиками прост, цена не высока. Идеальный вариант для несложных проектов на Arduino Uno, Mega, Nano.

    Датчик протечки и дождя в проектах ардуино позволяет определить появление капель влаги и вовремя отреагировать на это, например, включив оповещение. Такие системы активно используются в аграрной отрасли, в автомобилестроении, и в других повседневных сферах нашей жизни. В этой статье мы рассмотрим работу с готовым модулем, который можно легко приобрести в любых специализированных интернет-магазинах.

    Модуль датчика состоит из двух частей:

    • «Сенсорная» плата обнаружения капель. Она отслеживает количество попавшей на неё влаги. По сути, сенсор представляет собой простой переменный резистор, замыкаемый водой в разных местах, что вызывает изменение сопротивления.
    • Вторая часть датчика – сдвоенный компаратор (как правило, LM393, но возможны варианты LM293 и LM193). Его главная задача – преобразование значения с сенсора в аналоговый сигнал от 0 до 5 вольт.

    На рынке встречаются варианты датчиков как с разнесенными сенсором и компаратором, так и с объединенными на одной панели.

    Датчик запитывается от напряжения 5 В, который можно легко завести с любой платы Arduino. Как правило, у модуля датчика доступно два выхода:

    • Аналоговый. Значение, получаемое контроллером, будет варьироваться от 0 до 1023. Где 0 – все затопило или идет ливень, сенсор очень влажный, 1023 – сухая погода, сенсор сухой (в некоторых датчиках встречаются противоположные значения, 1023 – максимальная влажность, 0 – максимальная сухость).
    • Цифровой. Выдает высокое (5В) или низкое напряжение в случае превышения некоторого порога. Уровень порога срабатывания регулируется с помощью подстроечного резистора.

    Подключение датчика протечки и дождя к ардуино

    Для подключения датчика к ардуино понадобится сама плата (UNO, Mega, Nano или любая другая) и сам датчик. Если вы хотите проверять интенсивность осадков, то рекомендуется расположить датчик не горизонтально, а под некоторым углом, чтобы накапливаемые капли стекали вниз.

    Схема подключения модуля датчика протечки к ардуино:

    • VCC (вход питания) – должен совпадать для соединенной схемы ардуино по напряжению и току. То есть в данном случае 5В;
    • GND – заземление;
    • АO – аналоговый выход;
    • DO – цифровой выход.

    Аналоговый выход присоединяем к аналоговому пину микроконтроллера, например, A1. Цифровой выход, соответственно подключается к одному из цифровых пинов. Напряжение можно подать с вывода 5В платы ардуино, земля соединяется с землей.

    При подключении датчиков протечки в реальных проектах надо обязательно предусматривать защиту электронной части модуля от попадания влаги!

    Пример скетча

    #define PIN_ANALOG_RAIN_SENSOR A1 // Аналоговый вход для сигнала датчика протечки и дождя #define PIN_DIGITAL_RAIN_SENSOR 5 // Цифровой вход для сигнала датчика протечки и дождя void setup(){ Serial.begin(9600); } void loop(){ int sensorValue = analogRead(PIN_ANALOG_RAIN_SENSOR); // Считываем данные с аналогового порта Serial.print("Analog value: "); Serial.println(sensorValue); // Выводим аналоговое значение в монитр порта sensorValue = digitalRead(PIN_DIGITAL_RAIN_SENSOR); // Считываем данные с цифрового порта Serial.print("Digital value: "); Serial.println(sensorValue); // Выводим цифровое значение в монитр порта delay(1000); // Задержка между измерениями }

    В данном скетче мы просто считываем значения с датчика и выводим их в монитор порта. Проведите эксперимент и проверьте, как изменяется получаемое значение, когда вы дотрагиваетесь до датчика мокрой или сухой рукой. Намочили датчик – пошел дождь или появилась протечка, вытерли сухой тряпкой – дождь закончился.

    Пример проекта дождевой сигнализации

    Рассмотрим пример с использованием звуковой сигнализации в виде подключенного зумера на цифровом выходе D6. При желании можно вместо сигнализации подключить реле и выполнять различные операции с размыканием сети. В скетче полученные данные мы будем передавать в монитор порта по UART-интерфейсу.

    Скетч для проекта с сигнализацией

    Ниже представлен тестовый код, который активирует звуковой сигнал на уже упомянутом выше цифровом выходе 6, с задержкой времени, для того, чтобы исключить ложные срабатывания при случайном попадании воды на сенсор. Работа реализована через переменную, которая обновляется каждую секунду и выступает порогом – curCounter. Сигнализация приводится в действие тогда, когда значение, передаваемое с сенсора, станет меньше 300. Задержка между обнаружением влаги и срабатыванием звукового сигнала составляет чуть больше 30 секунд.

    #define PIN_RAIN_SENSOR A1 // Аналоговый вход для сигнала датчика протечки и дождя #define PIN_ALERT 6 // Цифровой выход для сигнализации #define MAX_COUNTER 30 // Пороговое значение для счетчика #define ALERT_LEVEL 300 // Пороговое значение для счетчика int curCounter= 0; // Счётчик для сбора "статистики", который увеличивается на 1 каждую секунду после срабатывания датчика void setup(){ Serial.begin(9600); pinMode(PIN_ALERT, OUTPUT); pinMode(PIN_RAIN_SENSOR, INPUT); // Можно не указывать, т.к. это значение по умолчанию } void loop(){ int sensorValue = analogRead(PIN_RAIN_SENSOR); Serial.println(sensorValue); // Выводим значение в монитр порта delay(300); // короткая задержка // Если накопили достаточно оснований для включения сигнализации if (curCounter >= MAX_COUNTER){ digitalWrite(PIN_ALERT, HIGH); // Срабатывание сигнализации curCounter = MAX_COUNTER; // Защита от переполнения переменной } // Определяем уровень влажности if (sensorValue < ALERT_LEVEL){ // В очередной раз убедились, что все влажно, увеличиваем счетчик curCounter++; }else { // Интенсивность дождя не превышает порога digitalWrite(PIN_ALERT, LOW); // Выключаем сигнализацию curCounter = 0; // Обнуляем счетчик } delay(1000); // Задержка между измерениями }

    Подведение итогов

    Датчик дождя и протечки можно использовать в ардуино для создания устройств, реагирующих на появление влажности в виде капель. Среди преимуществ рассмотренного модуля можно отметить его простоту, удобство и дешевизну. Подключается датчик очень легко – с помощью аналогового или цифрового выходов. Для получения значения в скетче используется стандартная функция analogRead (или digitalRead для цифрового пина). Используя полученные значения, можно включать сигнализацию или другие внешние устройства с помощью реле.