Конечно, работу ClusterM с его автоответчиком никому не переплюнуть, но такой функционал я считаю излишним. Мне, с рождением дочки, лишь понадобилось бесшумно открывать домофон гостям, чтобы не стоять у трубки и не ждать входящего звонка, который наверняка разбудит малую. Да и себе иногда легче открыть дверь с телефона, нежели лезть за ключами и прикладывать таблетку туда-сюда, чтобы она сработала (у меня очень сильно тупит панель в подъезде). Проект получился небольшой, так что в статье тоже не так много букв, зато есть фотографии.
Железо
В наличии у меня было несколько модулей NodeMCU, так что, прикинув его к трубке домофона, решил, что влезет он туда без проблем, надо лишь сделать плату расширения. Развожу я всегда в EagleCad, платы заказываю либо у китайцев, либо в американском OSH Park. На OSH Park выходит дешевле, если площадь платы маленькая, но вы получаете только 3 платы вместо 10 китайских, но для штучного проекта это не важно. На плату отлично встали релюшки PE014005, прям аккурат между выводов NodeMCU.
Не самый дешевый вариант, но у меня они были в наличии. А так можно поставить самые дешевые китайские, HUI KE например (это не ругательство, это фирма такая — у них есть серия релюшек HK4100F). Еще использовал две оптопары 4N35S, одну на вход — отлавливать входящий звонок, вторую на замыкание кнопки открытия домофона.
Получившиеся схема и топология платы вот (всё есть в репозитории, ссылка в конце статьи):
Платы с производства.
Несколько фотографий
Описание работы трубки
Сначала немного по принципу работы самой трубки — у меня Цифрал КЛ-2. Вот схема с официального сайта.
На схеме: 1,2 — контакты подключения линии домофона (имеет полярность, если кто не знал); SW2 — переключатель звука трубки (внизу — звук выключен, вверху — звук включен); SW1 — рычаг разговорной трубки (внизу — трубка висит, вверху — трубку сняли для разговора); SB1 — кнопка открытия двери; BA1 — динамик трубки; BM1 — микрофон трубки, HL1 — светодиод.
Когда подъездная панель дает вызов, в линию поступает меандр амплитудой 12В. Сопротивление в линии должно быть 50 Ом, в любом другом случае на панели высветится ошибка. Если переключатель SW2 находится в нижнем положении (звук на трубке выключен), то в линию подключен резистор 50 Ом — светодиод поморгает, но звука мы не услышим. Если переключатель SW2 в верхнем положении (звук включен), а переключатель SW1 в нижнем (трубка висит), то в линии будет сопротивление динамика BA1 всё те же 50 Ом, как раз на него попадает меандр и мы слышим звук. После снятия трубки, SW1 переходит в верхнее положение и один вывод динамика отрывается от земли, теперь там будет аналоговый сигнал разговора и приемлемая для уха громкость, а не звонок на сотню децибел. Если вы решаете открыть гостю дверь, то нажимаете на кнопку SB1, которая запирает транзистор и сопротивление в линии резко возрастает — так панель понимает, что надо открывать дверь.
Теперь о доработках
Relay1 — берем управление звуком на себя (считаем, что родной переключатель трубки SW2 в верхнем положении, иначе будет каша); Input — оптопара, дергается во время звонка (подключена перед Relay1, чтобы видеть звонок в бесшумном режиме); Relay2 — имитирует снятие трубки; Open — замыкает кнопку открытия двери. Обращаю ваше внимание на то, что релюшки подпаяны нормально замкнутыми контактами в разрыв. Это означает, что в любой момент можно отключить домофон от сети (а вдруг свет вырубился или интернет пропал) и он сохранит свою работоспособность, это важно.
Прошивка
Прошивку писал в PlatformIO (плагин для редактора Atom) на ардуиновских библиотеках. Ссылка на репозиторий в конце статьи. Эта, с вашего позволения, IDE будет поудобнее родной ардуиновской — кто не пробовал, обязательно попробуйте. В качестве MQTT клиента на телефон использовал IoTmanager (далее — просто клиент). По программе много рассказывать не буду (желающие посмотрят код), лишь опишу, что она умеет:
- подключаться к MQTT брокеру
- публиковать топики с настройками для клиента
- подписываться на топики для реакциина переключения в клиенте
- отправлять push уведомление на телефон при входящем звонке
- публиковать измененные настройки при звонке (чтобы видеть статус в клиенте)
- отключать звук на домофоне по команде клиента
- открывать дверь разово,
- открывать бесконечное число раз
- просто сбрасывать трубку
Экранные формы приложения (кликабельно)
Фишка программы IoTmanager в том, что все настройки хранятся в топиках, а она лишь отображает то, что опубликовано. Немного теряется смысл легковесного протокола MQTT, но мне такая реализация нравится. При желании можно переделать под другой MQTT клиент.
Конечно всё это (да еще с двумя электромеханическими реле) требует внешнего питания и я бы задумался над целесообразностью поделки, если бы мне понадобилось заводить питание 5В от розетки… Но у меня счетчик находится внутри квартиры, а домофон висит совсем рядом. Я просто заказал на Ali модуль 220AC/5VDC на din-рейку и запитал домофон от него. На фото он перевернут для удобства внутреннего монтажа.
Всем спасибо за внимание. Приглашаю в комментарии.
Полезные ссылки:
1. Репозиторий этого проекта на GitHub — там есть схема, разводка, исходный код.
2. Создание умного домофона с автоответчиком и Интернет-соединением — статья товарища ClusterM, упомянутая в начале.
3. Как я домофон Vizit к mqtt подключал — домофон с Arduino и Ethernet shield.
4. Esp8266 управление через интернет по протоколу MQTT — статья про MQTT и ESP8266.
5. Дистанционное управление домофоном — еще одна статья по теме.
Комментарии (73)
mitgard
11.09.2017 11:28+1А почему бы не использовать твердотельные реле вместо электромеханических?
oWart Автор
11.09.2017 11:51БольшУю роль сыграло то, что я выбирал из того, что было в наличии. Для выключения звука, например, требовалось перекидное реле, а среди твердотельных я таких не встречал. Может кто знает такие, буду рад, если покажите.
Выбор нормальнозамкнутых твердотельных (для поднятия трубки) тоже весьма ограничен и, повторюсь, у меня не было их в наличии.mitgard
11.09.2017 12:54+1Я в принципе так и предполагал, что выбор был из того, что уже не надо покупать.
rustavelli
11.09.2017 11:30-3А можно было бы просто узнать код от домофона и всем пользоваться им. Панель домофона в подъезде поменяли за 1 день, когда я узнал правильный email, куда пожаловаться. До этого год страдал с западающими кнопками на панели.
rustavelli
11.09.2017 11:35Если уж сделали MQTT, у правление надо было заводить на сервер умного дома. Чтобы при вашем приближении к подъезду дверь сама открывалась.
alexws54tk
11.09.2017 11:42+3… Чтобы при вашем приближении к подъезду дверь сама открывалась.
А если мне в данный момент времени, находясь у подъезда, не надо заходить во внутрь?
rustavelli
11.09.2017 11:54+1Да пофиг, пусть будет открытый всё это время. Лет 20 назад никто про эти домофоны и не думал.
Но вообще у подъезда только на лавках сидят, бухают. Обычно там никто не задерживается.oWart Автор
11.09.2017 12:59+2А как Вы собираетесь открывать дверь без факта входящего звонка? Панель же среагирует на сигнал открытия только после вызова в конкретную квартиру…
rustavelli
11.09.2017 13:02+1не знал об этом. У меня код, поэтому и трубку домофона в квартире ставить не нужно было.
oWart Автор
11.09.2017 13:04+2Да, такая особенность. Панель дает вызов одному абоненту в один конкретный момент времени и ждет от него принятия решения. Просто так взять и подать сигнал в линию бесполезно.
oWart Автор
11.09.2017 13:14Небольшое отступление от темы, для общего развития читающих.
В качестве альтернативы люди делают «заглушки», которые открывают дверь сразу после входящего звонка. Все построено на аналоговой электронике, устройство вешается вместо трубки и не требует внешнего питания. Единственный минус — дверь открывается любому позвонившему.rustavelli
11.09.2017 13:16-1кстати, а по такому же принципу нельзя сделать открытие по коду? Чтобы трубка в квартире понимала, какие кнопки на домофоне нажимаются после звонка. И тогда можно будет задавать свой код, после которого будет открываться дверь.
oWart Автор
11.09.2017 13:21+1Вопрос интересный. Возможно тут прокатил бы вариант с тональным набором, как на телефонах, но я не помню, чтобы клавиши на панели различались по тональности… А следовательно отследить на трубке в квартире, какая клавиша была нажата, не представляется возможным.
Легче уж тогда сделать простенькое распознавание голоса и кодовое слово «сиськи» для входа в подъезд.Mogwaika
11.09.2017 17:31Ну например унарный код из пик-пик-пик-пик-пик можно реализовать?
oWart Автор
11.09.2017 18:34Думаю вполне возможно
Shrizt
13.09.2017 14:00Распознование голоса прикольнее. В принципе через ESP можно пихать это все на гугл, там распозновать речь и делать что хочешь :)
А по простому — можно просто прикинутся трубкой другой (несуществующей) квартиры и при ее вызове сразу открывать дверь… Для безопасности — номер можно менять и присылать на телефон push-ем %)oWart Автор
13.09.2017 18:07В координатном домофоне панель выбором провода определяет кому идет сигнал — для звонка в несуществующую квартиру придется подрубиться к панели на свободные адреса.
В цифровом там на трубке выбирается адрес. Вот тут наверное можно несуществующей притвориться. Правда возможно там в панели как-то настраивается реальный диапазон квартир, чтоб сразу давать отбой на набор несуществующей.
CheeseMaster
11.09.2017 15:57+2Единственный минус — дверь открывается любому позвонившему.
Тумблер поставить можно, жду гостей — включил «заглушку», пришли — выключил (всё равно же к дверям подходить).
Alfacom
12.09.2017 11:27+1У меня в этом режиме домофон работал пару недель без всяких устройств. Всего-то надо было неаккуратно вписаться в домофонную трубку в квартире(она висит почти на углу)…
oWart Автор
11.09.2017 11:45+3А если нету никакого умного дома? Делал конкретно под себя. Есть телефон и надо бесшумно открывать, т.к может спать маленький ребенок.
rustavelli
11.09.2017 12:09-3Поставить Home assistant, если дома есть какой-н сервер — дело на один час.
AB_AG
11.09.2017 11:41+2Как найти штуку, от которой вы всё запитали?
alexws54tk
11.09.2017 11:48+1Например в поиске на Али набрать «5vdc din rail», и выбирать на свой вкус.
UksusoFF
11.09.2017 21:01+1Что-то дорого :( С учетом того что большинства наверняка валяются лишние зарядки от телефонов в количестве больше одной штуки.
vvzvlad
12.09.2017 02:13Во-первых, он будет висеть у вас на проводках. Во-вторых, сдохнет с большей вероятностью гораздо раньше. В-третьих, экономить на БП, который постоянно включен — ну, так себе идея.
UksusoFF
12.09.2017 07:18Не обязательно же висеть на проводах и почему сразу экономить?
vvzvlad
12.09.2017 19:10Так в щитке нет розетки, а у блоков питания для телефонов нет даже просто дырки для крепления, не говоря уж о креплении на дин. Как ему еще висеть?
А экономить — это жалеть 500 рублей на нормальный блок питания, покупая что-то дешевое для зарядки.
Efog
11.09.2017 12:56+1Никто, случайно, не в курсе, можно ли открыть дверь без факта звонка на домофон? Хотелось бы сделать возможность открытия двери при приближении к ней.
oWart Автор
11.09.2017 12:57Нет, нельзя. Панель дает вызов одному абоненту в один конкретный момент времени и ждет от него принятия решения. Просто так взять и подать сигнал в линию бесполезно.
AllexIn
11.09.2017 14:07+1Глупый вопрос немного в стороне, но все же по теме…
Есть ли возможность двухпроводную вызывную панель подключить к трубке в количестве двух штук? В интернете пробовал гуглить, но на свою трубку(DP-201R) не смог даже схему найти… И лишь упоминания какого-то устройства, которое нужно использовать чтобы подключить две вызывных панели…oWart Автор
11.09.2017 14:13+1Затрудняюсь ответить. Будет зависеть от панели, каким образом она вызывает абонента. Еще раз повторюсь, что в обычных координатных домофонах сопротивление в линии должно быть 50 Ом (именно такое имеет трубка), и тут будет важно какое сопротивление внесет в линию вторая панель, подключенная параллельно. Тут и проблемы с разным питанием могут быть.
vvzvlad
11.09.2017 15:25+1Но зачем надо было делать плату с панелькой под NodeMCU, если можно было разместить стаб, несколько резисторов и ESP на той же плате?
aol-nnov
11.09.2017 16:05+1… а реле подвесить на соплях рядышком? :)
oWart, нет планов впилить голосовой тракт? :) видал mp3-плеер на есп — то есть, проц тянет норм. осталось приколхозить ацп, я так понимаю? или даже встроенный зазюзать…vvzvlad
11.09.2017 16:09На той же плате, что и реле. Кстати, если взять какой-нибудь PRAC30S, то размер платы сократится серьезно.
aol-nnov
11.09.2017 16:10+1я так понимаю, реле и nodemcu были уже у автора в наличии. и чтобы всё собрать на одной, надо было еще от старой отпаять. но зачем? :)
vvzvlad
12.09.2017 02:11-3А если бы была малина и три промышленных контактора, сделал бы на них? Зачем запихивать отладочную платку в готовое устройство?
aol-nnov
12.09.2017 08:36+2ёмаё, vvzvlad, этж для себя и «фо фан» в свободное время! сделал, работает, рад.
к чему эти занудства?vvzvlad
12.09.2017 19:13Эээ… Странная у вас логика. Если фофан, то сойдет что угодно и любой говнокод? Я увидел способ оптимизировать, я его сказал. Если взять ESP12E, то не надо будет тратить платку nodemcu, которая в общем-то, отладочная, и оставлять ее в устройстве, ну… во-первых, жалко, во-вторых, смахивает на подход «запихнет туда ардуину».
oWart Автор
11.09.2017 16:18Да была такая идея, даже трансформаторов для развязки прикупил, но ограничился вот этим. Появились другие дела.
oWart Автор
11.09.2017 16:16Проект был сделан что называется между делом: с минимальными затратами и на том, что есть. На NodeMCU уже есть USB-UART правильно разведенный для прошивки и стаб на 3V3. Я лишь развел релюшки и сделал бутерброд, благо место внутри трубки позволяет. Считаю нецелесообразным делать все на одной плате самому, поделка же разовая.
instalator
11.09.2017 18:01+1Схема явно не продумана.
Нет необходимости вообще вмешиваться в схему трубки, достаточно подключить устройство в разрыв линии и эмулировать трубку подбросом нужных сопротивлений.oWart Автор
11.09.2017 18:32Хм… а в этом есть смысл, спасибо. В таком направлении правда не подумал. Попробую на досуге прикинуть схему.
Artemiy117
11.09.2017 19:58Поясните плиз, а что значит «открывать бесконечное число раз»?
oWart Автор
11.09.2017 21:25По скриншотам посмотрите, там есть переключатель «Открывать всем». Когда он включен, дверь будет открываться на любой звонок
Mishootk
12.09.2017 09:26+1Мелкая идея для доработки ПО: все режимы сделать управляемыми с таймером действия. Например юзкейс для «открыть разово в течение 10 минут» — на автобусе подъезжаю к дому, активировал, захожу свободно. Если по дороге задержался (в магазин забежал), само сбросилось. Для «открыть всем в течение 5 минут» — иду толпой домой (гости, допустим), активирую, все с интервалом 1-2 минуты заходят не дожидаясь хозяина и режим сам сбрасывается.
Более умное устройство уже требует иного железа, с пробросом голоса по сети (gsm не нужен — wifi), это не в данную разработку.a_tarsov
12.09.2017 21:48У меня вопрос, а для чего устанавливают домофон в подъезде?
Вот 10 мин. дверь открыта и что? Входи любой, потому, что один товарищ пожелал бросить открытой дверь, пока он идет от автобуса. А в это время, например, бомжи вошли и устроили пожар. Это конечно не панацея, но минимально от пьяного, плохо воспитанного человека, пожелавшего сходить по-маленькому в подъезде защищает.
Почему вы об этом забываете? А если можете сделать лучше, чем домофон, почему не делаете?
Да, дистанционное открытие, это хорошо. Но лучше было бы перевести всё это безобразие в приложение и управлять с мобилки. Как входящим вызовом, так и открытием. В результате, даже не присутствуя дома можно было бы и открывать, и отвечать. Вот это было бы вообще замечательно.
Но автор, в свою очередь, молодец! Он решил СВОЮ задачу. И с нами поделился. Спасибо ему.oWart Автор
12.09.2017 21:56+1Я как раз и реализовал управление с мобилки, можно открыть дверь на звонок и не обязательно для этого присутствовать дома. Единственное что — отвечать голосом нельзя.
А по поводу идеи открытия на 10 минут от Mishootk, так идея имеет право на жизнь. Вы, a_tarsov, кажется не понимаете принцип работы домофона. Я его где-то тут описывал, немного повторюсь. Дверь откроется только в том случае, если поступит входящий звонок в вашу квартиру. Невозможно открыть дверь подъезда без входящего звонка от панели. Думаете бомж будет знать тот момент времени, когда вы вышли с автобуса и направляетесь домой, чтоб позвонить конкретно в вашу квартиру? Я так не думаю. Такое устройство нисколько не снижает пропускной контроль в подъезд. Можно позвонить в любую квартиру и прикинуться почтальоном/скорой/милицией.a_tarsov
13.09.2017 07:13+1Это я на «парах». Как раз вчера, еле выгнал такого товарища за дверь. Провонял весь подъезд.
А момент обязательного вызова, я действительно пропустил. Спасибо, что поправили.grumbler66rus
13.09.2017 22:34+1Такие «товарищи» заходят без звонка — физически нормально развитый человек вполне в состоянии рывком открыть магнитный замок, а человек с «фомкой» и без рывка.
Mishootk
13.09.2017 09:31+1В приложении уже есть режим «открыть однократно» и «открывать всегда». Я предложил добавить временное ограничение, что наоборот повысит защиту от несанкционированного проникновения из за человеческого фактора (забыл снять режим).
yusman
12.09.2017 17:43+1Классная статья.
Еще можно по сигналу GPS определять что подходишь к дому и активировать режим «открывать всем».
Mishootk
13.09.2017 09:39+1Кстати, можно поставить «свой секретный код». На случай когда забыл ключ от домофона, сел телефон, дома никого (искуственно, согласен, но похожие ситуации возникают).
Алгоритм такой: вызов себе в квартиру, отмена вызова на определенном гудке (трели). Через определенное количество секунд повторный вызов опять с отменой на нужном гудке. Кодом открытия служит определенная последовательность длительностей вызовов и пауз между вызовами.sergey876
15.09.2017 13:54Алгоритм такой: вызов себе в квартиру, отмена вызова на определенном гудке (трели). Через определенное количество секунд повторный вызов опять с отменой на нужном гудке...
Вот, так же хотелось бы себе сделать. Достаточно думаю 3 гудка, пауза 5-10 сек и при следующем звонке на 3 гудок «автооткрытие». Кто подскажет простую схемку без микропроцессоров? :-)
ulole
15.09.2017 13:54Отличное решение. Хотел как-то собрать на работе что-то похожее, чтобы не вскакивать постоянно с рабочего места ради нажатия кнопки открытия двери на домофоне. Домофон простой, без вызывной панели, просто кнопка, динамик, микрофон и «таблеткоприемник». Решил проблему просто — взял старую автосигналку и реле центрального замка подсоединил параллельно кнопке открытия двери. Теперь открываю дверь не вставая с места — брелком. С улицы, конечно, радиосигнал с брелка не достает, но если поднести его близко к «таблеткоприемнику» — сигнал проходит. Видимо радиосигнал идет по кабелю. Питается сигналка от резервного источника питания на 12 вольт.
AxianLTD
Хорошая автоматика, правильная. Питание бы как-нибудь инжектить еще в тот же провод, два провода малость лишнего. Или поставить аккумулятор с подзарядкой от линии домофона. Может вообще в виде внешнего блока?
И такой же с GSM :-) И можно продавать.
oWart Автор
Получить что-то внятное по питанию с линии домофона в моем понимании невозможно.
В линии должно быть 50 Ом. Шаг вправо, шаг влево — расстрел.
mozg1986
Да и трубка подключается к цепям домофона только во время звонка и разговора (через транзисторы коммутируются и "+" и "-" трубки).
MnogoBukv
А сопротивление проводов? Типа, первый этаж и 17-й?
oWart Автор
Я думаю в панели учтена эта погрешность