Доработка домофона протоколом MQTT для управления с телефона (версия 2.0)
В комментариях Владимир instalator написал:
Схема явно не продумана. Нет необходимости вообще вмешиваться в схему трубки, достаточно подключить устройство в разрыв линии и эмулировать трубку подбросом нужных сопротивлений.Я почему-то упустил из виду возможность имитации трубки домофона, ведь такой подход действительно не потребует вмешиваться в схему самой трубки, можно будет перехватывать управление на подходе к ней. Более того, такой подход, при необходимости, позволяет вообще не использовать домофонную трубку. Повесили устройство и открываем дверь с телефона. При желании можно и вовсе развить идею до батарейного питания.
Кстати говоря, в предыдущей схеме была ошибка (статью я уже поправил), на которую никто не обратил внимание, и которая приводила к нестабильной работе домофона. Иногда он отказывался открывать дверь, а я не мог понять причину. Я подключил светодиод между + и - линии, в то время как родной светодиод при поднятии трубки отрывался от земли. Таким образом, в моем варианте в момент открытия двери сопротивление в линии было недостаточно высоким (по крайней мере я так думаю) из-за присутствия светодиода и панель домофона не понимала сигнал открытия. Понял я это только когда начал рисовать новую схему с “подбросом нужных сопротивлений”.
Принцип работы трубки известен, я описывал его в предыдущей статье. Единственное, что я возможно упустил из виду: панель дает вызов одному абоненту в один конкретный момент времени и ждет от него принятия решения. Просто так, без факта входящего звонка, взять и подать сигнал на открытие двери подъезда бесполезно. Это важно, но не все, кажется, знают об этом, так как были несколько комментариев по этому поводу.
Итак, начнем. Подъездная панель различает сигналы по уровню сопротивления в линии, для имитации работы необходимо лишь подбрасывать ей нужные номиналы. Я попробовал нарисовать схему на том, что у меня уже было в моем модуле: два электромеханических реле и две оптопары, одна из которых развернута на прием сигнала.
Реализация выглядит так:
Прошу меня извинить за такое простое изображение схемы, это чтобы объяснять было легче:
- Реле1 нужно для перехвата управления: если мы хотим вмешаться в работу домофона, то реле перекидываем, в противном случае трубка остается подключенной и работает штатно (это же касается случая, когда на нашем устройстве нет питания, реле замкнуто на трубку).
- Реле2 в нормальном состоянии обеспечивает землю для светодиода и держит в линии сопротивление 51 Ом для имитации сопротивления лежащей трубки (если конечно Реле1 перекинуто).
- Когда идет вызов, на микроконтроллер через оптопару Звонок поступает сигнал, и принимается решение. В случае открытия, перекидываем Реле1 и Реле2 в противоположные состояния.
- Сначала вызывная панель ждет снятия трубки с базы: тут дело за транзистором и оптопарой Открыть. По-умолчанию транзистор притянут к питанию — открыт, и в линии имитация снятой трубки ~400 Ом. Когда на оптопару Открыть подается сигнал, транзистор притягивается к земле и разрывает цепь, что равносильно сигналу на открытие.
Чисто на оптопаре у меня, почему-то, сделать не получилось: панель домофона постоянно выдавала ошибку Lin1, что означало обрыв в линии: либо тока не хватало, либо скорости открытия.
Довешивал транзистор и резисторы навесным монтажом:
Повторюсь, я делал на релейном модуле, который у меня уже был после первой версии, с определенным набором реле. Наверняка схему можно оптимизировать, например на твердотельных реле:
Или что-то подобное, зависит от вашей фантазии. Только надо внимательно подбирать твердотельные реле, т.к они имеют ненулевое сопротивление канала и могут оказать существенное влияние в то время, когда в линии должно быть 50 Ом. У канала твердотельного реле обычно сопротивление от 5 до 25 Ом, что на фоне необходимых 50 Ом скажется существенно.
Программа претерпела совсем небольшие изменения в части устранения недочетов и добавления режима Открыть беззвучно. На практике чаще всего я пользовался комбинацией Выключить звук и Открыть разово, решил объединить две настройки в одну: звонок перехватывается в беззвучном режиме, открывает дверь и переходит обратно в режим со звуком.
Плату я разместил все так же внутри трубки домофона, подпаявшись к основной плате, благо теперь это всего лишь три провода. Я сделал этот для того, чтобы спрятать устройство внутри и использовать стандартные зажимы линии.
Но теперь это не обязательно, можно вешать устройство в разрыв линии.
Желающие могут попробовать (может я и сам попробую чуть позже) переделать устройство на батарейное питание. Для этого придется немного изменить схему и логику работы: звонок в домофон будет пробуждать микроконтроллер, он в свою очередь подключаться к wi-fi и проверять, есть ли для него команды на открытие. Если нет, то выставлять статус звонка и ждать принятия решения, после чего снова уходить в сон. Затраты энергии не должны быть большими, домофон звонит не так часто, главное правильно сделать схему питания. В случае батарейного питания не понадобится гальваническая развязка, всю логику можно будет сделать на обычных транзисторах. Идея мне кажется интересной, т.к не у всех есть возможность подвести питание к домофону. Может есть желающие помочь с корпусом и мобильным приложением? Можно попробовать запилить в серию.
Вообще я весьма доволен получившейся поделкой, еще и прошивается по воздуху — одно удовольствие. Приглашаю к обсуждению.