Совсем недавно я уже писал про доработку домофона протоколом MQTT. В комментариях Владимир instalator написал:
Схема явно не продумана. Нет необходимости вообще вмешиваться в схему трубки, достаточно подключить устройство в разрыв линии и эмулировать трубку подбросом нужных сопротивлений.Я почему-то упустил из виду возможность имитации трубки домофона, ведь такой подход действительно не потребует вмешиваться в схему самой трубки, можно будет перехватывать управление на подходе к ней. Более того, такой подход, при необходимости, позволяет вообще не использовать домофонную трубку. Повесили устройство и открываем дверь с телефона. При желании можно и вовсе развить идею до батарейного питания.
Кстати говоря, в предыдущей схеме была ошибка (статью я уже поправил), на которую никто не обратил внимание, и которая приводила к нестабильной работе домофона. Иногда он отказывался открывать дверь, а я не мог понять причину. Я подключил светодиод между + и - линии, в то время как родной светодиод при поднятии трубки отрывался от земли. Таким образом, в моем варианте в момент открытия двери сопротивление в линии было недостаточно высоким (по крайней мере я так думаю) из-за присутствия светодиода и панель домофона не понимала сигнал открытия. Понял я это только когда начал рисовать новую схему с “подбросом нужных сопротивлений”.
Принцип работы трубки известен, я описывал его в предыдущей статье. Единственное, что я возможно упустил из виду: панель дает вызов одному абоненту в один конкретный момент времени и ждет от него принятия решения. Просто так, без факта входящего звонка, взять и подать сигнал на открытие двери подъезда бесполезно. Это важно, но не все, кажется, знают об этом, так как были несколько комм��нтариев по этому поводу.
Итак, начнем. Подъездная панель различает сигналы по уровню сопротивления в линии, для имитации работы необходимо лишь подбрасывать ей нужные номиналы. Я попробовал нарисовать схему на том, что у меня уже было в моем модуле: два электромеханических реле и две оптопары, одна из которых развернута на прием сигнала.
Реализация выглядит так:

Прошу меня извинить за такое простое изображение схемы, это чтобы объяснять было легче:
- Реле1 нужно для перехвата управления: если мы хотим вмешаться в работу домофона, то реле перекидываем, в противном случае трубка остается подключенной и работает штатно (это же касается случая, когда на нашем устройстве нет питания, реле замкнуто на трубку).
- Реле2 в нормальном состоянии обеспечивает землю для светодиода и держит в линии сопротивление 51 Ом для имитации сопротивления лежащей трубки (если конечно Реле1 перекинуто).
- Когда идет вызов, на микроконтроллер через оптопару Звонок поступает сигнал, и принимается решение. В случае открытия, перекидываем Реле1 и Реле2 в противоположные состояния.
- Сначала вызывная панель ждет снятия трубки с базы: тут дело за транзистором и оптопарой Открыть. По-умолчанию транзистор притянут к питанию — открыт, и в линии имитация снятой трубки ~400 Ом. Когда на оптопару Открыть подается сигнал, транзистор притягивается к земле и разрывает цепь, что равносильно сигналу на открытие.
Чисто на оптопаре у меня, почему-то, сделать не получилось: панель домофона постоянно выдавала ошибку Lin1, что означало обрыв в линии: либо тока не хватало, либо скорости открытия.
Довешивал транзистор и резисторы навесным монтажом:

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

Или что-то подобное, зависит от вашей фантазии. Только надо внимательно подбирать твердотельные реле, т.к они имеют ненулевое сопротивление канала и могут оказать существенное влияние в то время, когда в линии должно быть 50 Ом. У канала твердотельного реле обычно сопротивление от 5 до 25 Ом, что на фоне необходимых 50 Ом скажется существенно.
Программа претерпела совсем небольшие изменения в части устранения недочетов и добавления режима Открыть беззвучно. На практике чаще всего я пользовался комбинацией Выключить звук и Открыть разово, решил объединить две настройки в одну: звонок перехватывается в беззвучном режиме, открывает дверь и переходит обратно в режим со звуком.

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

Но теперь это не обязательно, можно вешать устройство в разрыв линии.
Желающие могут попробовать (может я и сам попробую чуть позже) переделать устройство на батарейное питание. Для этого придется немного изменить схему и логику работы: звонок в домофон будет пробуждать микроконтроллер, он в свою очередь подключаться к wi-fi и проверять, есть ли для него команды на открытие. Если нет, то выставлять статус звонка и ждать принятия решения, после чего снова уходить в сон. Затраты энергии не должны быть большими, домофон звонит не так часто, главное правильно сделать схему питания. В случае батарейного питания не понадобится гальваническая развязка, всю логику можно будет сделать на обычных транзисторах. Идея мне кажетс�� интересной, т.к не у всех есть возможность подвести питание к домофону. Может есть желающие помочь с корпусом и мобильным приложением? Можно попробовать запилить в серию.
Вообще я весьма доволен получившейся поделкой, еще и прошивается по воздуху — одно удовольствие. Приглашаю к обсуждению.
