Защита от протечки

Smirniy

✩✩✩✩✩✩✩
14 Май 2023
6
0
Здравствуйте. После того как посреди ночи у меня разорвало магистральный фильтр и затопило всю квартиру, а заодно и пару квартир соседей живущих ниже, я озадачился вопросом собрать защиту от протечек воды.
Для реализации этого были приобретены плата Arduino UNO, драйвер двигателей L298N, несколько датчиков дождя и пара электрических приводов крана, которые и будут установлены на шаровые краны стояков горячей и холодной воды, и в случае протечки будут перекрывать воду.
Поскольку программист из меня никакой, то после обзора и анализа нескольких десятков самых разных схем и проектов, моя конструкция пришла к следующему виду.

Датчик дождя подключен к аналоговому входу А0.
При обнаружении протечки моргает красный светодиод (пин 8) и зуммер (пин 6) прерывисто пищит.
Зелёный светодиод дежурного режима при этом гаснет. Горит он только когда "сухо".
Приводы кранов (моторы) при этом закрываются. На закрытие уходит где-то 7 секунд, после чего в приводе срабатывают встроенные концевые выключатели и мотор останавливается. После закрытия крана светодиод и зуммер продолжают прерывисто моргать/пищать (только если на датчике будет вода – если нет, то не будут).
После того как кран закрылся и датчик дождя высох, кран сам по себе не откроется. Чтобы открыть кран, нужно кратковременно нажать на кнопку «Открыто».
Примечание:
Если, вдруг, во время срабатывании тревоги, нажать кнопку открытия крана, то загорится соответствующий светодиод и раздастся непрерывный писк (в течении, примерно, 7 сек) после чего сигнал сигнализации продолжит свою работу, поскольку протечка не устранена. Кран при этом не откроется.

Кроме автоматического режима ведено ручное управление – при нажатии кнопки (пин 5) мотор запускается и горит красный светодиод «Закрыто». Закрытие происходит примерно за 7 сек.
По нажатию второй кнопки (пин 4) мотор запускается в другую сторону и горит соответствующий светодиод «Открыто».
Светодиод дежурного режима при ручном управлении не гаснет.

Скетч устройства: 7-07_store

Что не решено:

В настоящий момент не решил как подключить остальные датчики протечки, всего их у меня плпнируется 6 штук.
Пробовал их подключать как в скетче 7-08_store (тут я подключил только 3 датчика), но это приводит к тому, что если какие-то прописанные в скетче датчики отключить, то сразу же срабатывает тревога с закрытием кранов, включением сирены и морганием светодиода.
Если кто-то знает, как это сделать правильно, подскажите пожалуйста.
.
 

Вложения

Bruzzer

★★★✩✩✩✩
23 Май 2020
645
191
Если кто-то знает, как это сделать правильно
Как все сделать правильно не скажу, не делал, но в инете наверно есть проекты с описанием и обсуждением, т.к. часто бывают не очевидные особенности.
Чтобы отключенные датчики не приводили к срабатыванию, в вашем случае возможно будет достаточно включить подтяжку на пинах для датчиков
pinMode(Rain_sensor, INPUT_PULLUP);
 
  • Лойс +1
Реакции: Smirniy

Smirniy

✩✩✩✩✩✩✩
14 Май 2023
6
0
Да, хотел спросить, платы компараторов должны размещаться вместе с датчиками или их можно установить отдельно, например в корпусе устройства? Сами датчики, при этом будут соединяться с ними при помощи разъёмов.
Так, кстати, физическое отключение прописанных в скетче датчиков срабатывания тревоги не вызывает, даже можно не прописывать pinMode(Rain_sensor, INPUT_PULLUP);

Ещё один вопрос по коду: как сделать, чтобы в автоматическом режиме мотор работал также по 7 секунд, как в ручном.
Пробовал туда вставлять комбинацию:

digitalWrite (IN1, HIGH); // включить мотор
delay(7000); // 7 секунд
digitalWrite(IN1, LOW); // выключить мотор

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

Для наглядности нарисовал схему устройства.
 

Вложения

Bruzzer

★★★✩✩✩✩
23 Май 2020
645
191
но вот сигнализация при этом работает неправильно
Решение зависит от интересов спрашивающего. Если есть желание изучать ардуино дальше, то наверно правильнее будет почитать уроки, как предложено в предыдущем посте. (Или найти другие, понятные уроки).
Но на данном этапе, возможны "не правильные", но возможно более понятные начинающему варианты.
  • можно просто поменять понятие "правильно". Пусть правильно будет так как работает сейчас. Пока мотор работает, звук и свет постоянный. В этом даже можно найти свои плюсы.
  • можно разбить dealy(7000); на серию более мелких задержек, и переключать свет и звук между ними.
 

7Up

✩✩✩✩✩✩✩
3 Июн 2021
142
8
Для таких штук ещё неплохо вводить watchdog таймер на перезагрузку. А то вдруг ардуина зависнет и не будет реагировать
 

Smirniy

✩✩✩✩✩✩✩
14 Май 2023
6
0
Повторю свой вопрос: платы компараторов должны размещаться вместе с датчиками или их можно установить отдельно, например в корпусе устройства?