Реклама ⓘ
Главная » Автоматика в быту
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Cистема защиты от протечек воды на базе NodeMCU

Изучив рынок систем защиты от протечек воды, можно заметить, что цены на них начинаются от 15 тысяч рублей. За эту цену покупатель получает 2 крана с электроприводом, блок управления, и 1-3 датчика протечки воды. При этом системы такого рода полностью автономны и никоим образом не могут интегрироваться в умный дом.

Статья описывает создание своей системы, которая взаимодействует с умным домом по протоколу MQTT, а также может работать автономно за вдвое меньшую цену.

Статья предназначена для читателей, знакомых с процессом прошивки микроконтроллеров и протоколом MQTT.

Комплектующие

Начать подбор комплектующих стоит с шарового крана. Есть модели на 5, 12, 24, 220 вольт. От выбора крана зависит подбор обвязки микроконтроллера. В данном проекте используются краны модели Tsai Fan electric ball valve DN15 BSP DC12V CR301. Они имеют металлические шестерни привода, которые гораздо надежнее более дешевых аналогов с пластиковыми шестернями. Есть возможность ручного открытия/перекрытия подачи воды. Есть индикатор, который показывает положение привода крана. Модель 12 вольт позволит использовать свинцовые АКБ для бесперебойной и автономной работы системы.

Расшифровка модели:

  1. DN15 – соответствует диаметру трубы ½. Этот диаметр используется в большинстве российских квартир.
  2. DC12V - привод работает от постоянного напряжения 12 вольт.
  3. CR301 - привод имеет 3 провода: красный – сигнал открытия, зелёный – сигнал закрытия, черный – земля.

Схема подключения модели CR301

Аккумулятор можно выбрать любой емкости с токоотдачей более 1А (каждый кран потребляет 500Ма), предпочтительны свинцовые, которые используются в ИПБ. Выбрана модель Delta DTM 1207 12V 7Ah.

Для зарядки аккумулятора от блока питания 12 вольт и поддержания его напряжения на уровне 13.8 вольт необходим повышающий преобразователь.

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

 

Микроконтроллер выбран NodeMcu V3 на чипе CP2102.

В качестве автономного датчика протечки используются ардуиновские датчики обнаружения дождя. В качестве основного – датчики протечки Xiaomi, информацию от которых микроконтроллер получает по протоколу MQTT.

Датчик дождя

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

Для оповещения о нештатной ситуации используется зуммер 5 вольт.

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

Принципиальная схема

Описание

Устройство питается от сети постоянного напряжения 12 вольт. Между сетью и аккумулятором стоит повышающий преобразователь напряжения 12 в 13.8 вольт, который позволяет заряжать и поддерживать напряжение батареи в верхней границе допустимого диапазона. Между аккумулятором и микроконтроллером стоит понижающий преобразователь 13.8 в 4.4 вольта. Это минимальное напряжение, на котором МК работает уверенно и не перегревается его встроенный преобразователь напряжения.

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

К линии 13.8 вольт подключен потенциометр/построечный резистор номиналом не менее 10к. Он служит делителем напряжения для того, чтобы АЦП микроконтроллера могла работать с таким высоким напряжением.

В прошивке есть константа, которая обозначает, сколько позиций АЦП содержится в 1 вольте.

// сколько позиций АЦП в 1 вольте

const float oneVolt = 70;

Подстроечным резистором необходимо добиться, чтобы величина, которую замеряет АЦП в вольтах, соответствовала реальной. Информация с датчиков так же выводится в монитор COM-порта.

К порту D4 подключен зуммер. При появлении положительного сигнала на ноге зуммер начинает работать. При подключении соблюдайте полярность.

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

Алгоритм работы

Блок-схема

Текстовое описание

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

  for (int i  = 0; i < VALVE_COUNT * 2; i++) {
    pinMode(VALVE_PINS[i], OUTPUT);
    // отключаем релешки
    digitalWrite(VALVE_PINS[i], 1);
  }
  for (int i  = 1; i <= VALVE_COUNT; i++) {
    valves[i-1] = false;
    setValveMode(i, false);
  }

Далее начинается основной цикл программы. В нём происходит подключение к Wi-Fi и серверу MQTT, а так же переподключение в случае разрыва соединения.

  // подключаемся к wi-fi
  if (WiFi.status() != WL_CONNECTED) {
    if (!connectWifi()) return;
  }

  // подключаемся к MQTT серверу
  if (WiFi.status() == WL_CONNECTED) {
    if (!client.connected()) {
      if (!connectMqtt()) return;
      clientInitTopics();
    }
    client.loop();
    collectSensorData();
    delay(1000);

При подключении к серверу MQTT подписка на следующие топики MQTT (функция clientInitTopics()):

  1. Топик режима кранов (включение/выключение подачи воды извне)
  2. Топик сигнализации (включение/отключение зуммера извне)

После инициализации и подписки на события устройство начинает периодически прослушивать события, опрашивать подключенные датчики и отправлять информацию по MQTT:

  1. Прослушать события, на которые оформлена подписка
    client.loop() -> void callback(char* topic, byte* payload, unsigned int length)
    
  2. Получить статус автономного датчика протечки
        collectSensorData() -> getLeakState();
    • Если появилась протечка:
      • Отправляется событие протечки по
      • Отправляется событие включения сигнализации по
      • Включается сигнализация
      • Отключается подача воды
    • Если прекратилась протечка:
      • Отправляется событие прекращения протечки по
      • Отправляется событие отключения сигнализации по
      • Отключается сигнализация
  3. Измерить заряда аккумулятора
        collectSensorData() -> getCharge();

Накапливается 60 замеров заряда, далее отправляется значение напряжения в вольтах по MQTT. Так же отправляется значение напряжения в единицах АЦП для возможности расчёта статуса заряда на сервере.

Article2

Тестирование

Тестирование проводилось путём погружения в воду автономного и внешних датчиков протечки при отключенном внешнем питании.

При погружении ожидается включение сигнализации и перекрытие подачи воды.

При прекращении воздействия воды ожидается отключение сигнализации.

При отправке команды открытия крана по протоколу MQTT (нажатии на кнопку Выключить кран) ожидается открытие крана подачи воды.

При отправке команды закрытия крана по протоколу MQTT (нажатии на кнопку Включить кран) ожидается закрытие крана подачи воды.

Тестирование

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

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
U1 Up-down DC-DC Converter0-36V. 10A1 Мощность должна быть достаточной, чтобы заряжать АКБПоиск в магазине ОтронВ блокнот
U2 Step-down DC-DC Converter0-36V, 1A1 Поиск в магазине ОтронВ блокнот
V1, V2 Кран Tsai Fan electric ball valveDN15 BSP DC12V CR3012 Время срабатывания - 5 секунд, ток потребления - 500маПоиск в магазине ОтронВ блокнот
B1 Аккумулятор Delta DTM 120712V 7Ah1 Поиск в магазине ОтронВ блокнот
NMCU1 NodeMcu V31 Поиск в магазине ОтронВ блокнот
S1 Raindrops Detection Sensor Module For Arduino5V1 Поиск в магазине ОтронВ блокнот
BZ1 Buzzer5V1 Поиск в магазине ОтронВ блокнот
RL1, RL2 Relay module with optocoupler2 Поиск в магазине ОтронВ блокнот
RV1 Подстроечный резистор20К1 Маленький номинал будет греться!Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 1
Я собрал 0 Участие в конкурсе 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (6) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
ashelehov #
От этих датчиков толку никакого. Хоть их 100 поставь, протечет там, где датчика нет. Будет хреначить на стену, и по стене под плинтус. Обязательно нужно добавлять датчики влажности.
Ответить
0

[Автор]
ai-zer #
1) Датчики уже несколько раз сработали, перебдели.
2) Датчики влажности имеют инерцию и непонятно как они помогут, если вода побежит по стене? У них значение от этого сразу станет 95%? А как они себя поведут, если я нагоню пара в ванной?
Ответить
0
Pauk #
А обязательно нужно НОДЕ МКУ?
Ответить
0

[Автор]
ai-zer #
Нет, но это самый простой способ для работы по WIFI
Ответить
0
Kis_s #
У вас проблема в основном цикле:
// подключаемся к wi-fi
if (WiFi.status() != WL_CONNECTED) {
if (!connectWifi()) return;
}
Означает, что датчик перестанет функционировать при отключении питания роутера и потери wi-fi.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Радиореле 220В
Радиореле 220В
Паяльник с регулировкой температуры Модуль радиореле на 4 канала
вверх