Прокачиваем домофон протоколом MQTT для управления с телефона

4daa192c94284fc7b405761187ed7caa.JPG Всем привет. Расскажу немного про свою последнюю междуделку — доработку домофона WiFi-модулем NodeMCU. Заранее прошу прощения за выбор модуля — всех уже, наверное, достала эта ESP«шка…

Конечно, работу ClusterM с его автоответчиком никому не переплюнуть, но такой функционал я считаю излишним. Мне, с рождением дочки, лишь понадобилось бесшумно открывать домофон гостям, чтобы не стоять у трубки и не ждать входящего звонка, который наверняка разбудит малую. Да и себе иногда легче открыть дверь с телефона, нежели лезть за ключами и прикладывать таблетку туда-сюда, чтобы она сработала (у меня очень сильно тупит панель в подъезде). Проект получился небольшой, так что в статье тоже не так много букв, зато есть фотографии.
Железо
В наличии у меня было несколько модулей NodeMCU, так что, прикинув его к трубке домофона, решил, что влезет он туда без проблем, надо лишь сделать плату расширения. Развожу я всегда в EagleCad, платы заказываю либо у китайцев, либо в американском OSH Park. На OSH Park выходит дешевле, если площадь платы маленькая, но вы получаете только 3 платы вместо 10 китайских, но для штучного проекта это не важно. На плату отлично встали релюшки PE014005, прям аккурат между выводов NodeMCU.

1bc7791cd723414f9c3251651962d14a.JPG

Не самый дешевый вариант, но у меня они были в наличии. А так можно поставить самые дешевые китайские, HUI KE например (это не ругательство, это фирма такая — у них есть серия релюшек HK4100F). Еще использовал две оптопары 4N35S, одну на вход — отлавливать входящий звонок, вторую на замыкание кнопки открытия домофона.

Получившиеся схема и топология платы вот (всё есть в репозитории, ссылка в конце статьи):

0c07e7b711094570b5538256cda4ba58.jpg

e2913c3442c8411c89839bab96cb0112.jpg

Платы с производства.
3e2b2d370eac485182a3188201729774.JPG

Несколько фотографий
47966cb8d69a4c7eb06314555cb4c60e.jpg

32ed3fb9947d479f8365dc963aacab27.JPG

3565695f54a54098993294df1df5ffc9.JPG

Описание работы трубки
Сначала немного по принципу работы самой трубки — у меня Цифрал КЛ-2. Вот схема с официального сайта.

7b1fdd96c1394734b67b6e4df3b5ffc8.jpg

На схеме: 1,2 — контакты подключения линии домофона (имеет полярность, если кто не знал); SW2 — переключатель звука трубки (внизу — звук выключен, вверху — звук включен); SW1 — рычаг разговорной трубки (внизу — трубка висит, вверху — трубку сняли для разговора); SB1 — кнопка открытия двери; BA1 — динамик трубки; BM1 — микрофон трубки, HL1 — светодиод.
Когда подъездная панель дает вызов, в линию поступает меандр амплитудой 12В. Сопротивление в линии должно быть 50 Ом, в любом другом случае на панели высветится ошибка. Если переключатель SW2 находится в нижнем положении (звук на трубке выключен), то в линию подключен резистор 50 Ом — светодиод поморгает, но звука мы не услышим. Если переключатель SW2 в верхнем положении (звук включен), а переключатель SW1 в нижнем (трубка висит), то в линии будет сопротивление динамика BA1 всё те же 50 Ом, как раз на него попадает меандр и мы слышим звук. После снятия трубки, SW1 переходит в верхнее положение и один вывод динамика отрывается от земли, теперь там будет аналоговый сигнал разговора и приемлемая для уха громкость, а не звонок на сотню децибел. Если вы решаете открыть гостю дверь, то нажимаете на кнопку SB1, которая запирает транзистор и сопротивление в линии резко возрастает — так панель понимает, что надо открывать дверь.

Теперь о доработках

c562d7ee8ba7435ea7932cdb5ad6ae92.jpg

Relay1 — берем управление звуком на себя (считаем, что родной переключатель трубки SW2 в верхнем положении, иначе будет каша); Input — оптопара, дергается во время звонка (подключена перед Relay1, чтобы видеть звонок в бесшумном режиме); Relay2 — имитирует снятие трубки; Open — замыкает кнопку открытия двери. Обращаю ваше внимание на то, что релюшки подпаяны нормально замкнутыми контактами в разрыв. Это означает, что в любой момент можно отключить домофон от сети (а вдруг свет вырубился или интернет пропал) и он сохранит свою работоспособность, это важно.

Прошивка
Прошивку писал в PlatformIO (плагин для редактора Atom) на ардуиновских библиотеках. Ссылка на репозиторий в конце статьи. Эта, с вашего позволения, IDE будет поудобнее родной ардуиновской — кто не пробовал, обязательно попробуйте. В качестве MQTT клиента на телефон использовал IoTmanager (далее — просто клиент). По программе много рассказывать не буду (желающие посмотрят код), лишь опишу, что она умеет:

  • подключаться к MQTT брокеру
  • публиковать топики с настройками для клиента
  • подписываться на топики для реакциина переключения в клиенте
  • отправлять push уведомление на телефон при входящем звонке
  • публиковать измененные настройки при звонке (чтобы видеть статус в клиенте)
  • отключать звук на домофоне по команде клиента
  • открывать дверь разово,
  • открывать бесконечное число раз
  • просто сбрасывать трубку


Экранные формы приложения (кликабельно)

d4fbe695884946f79b763df887f443fe.jpg

Фишка программы IoTmanager в том, что все настройки хранятся в топиках, а она лишь отображает то, что опубликовано. Немного теряется смысл легковесного протокола MQTT, но мне такая реализация нравится. При желании можно переделать под другой MQTT клиент.

Конечно всё это (да еще с двумя электромеханическими реле) требует внешнего питания и я бы задумался над целесообразностью поделки, если бы мне понадобилось заводить питание 5В от розетки… Но у меня счетчик находится внутри квартиры, а домофон висит совсем рядом. Я просто заказал на Ali модуль 220AC/5VDC на din-рейку и запитал домофон от него. На фото он перевернут для удобства внутреннего монтажа.

ffc9ca5d711048b7a0d27d6e9fa5c173.JPG

Всем спасибо за внимание. Приглашаю в комментарии.

Полезные ссылки:

1. Репозиторий этого проекта на GitHub — там есть схема, разводка, исходный код.
2. Создание умного домофона с автоответчиком и Интернет-соединением — статья товарища ClusterM, упомянутая в начале.
3. Как я домофон Vizit к mqtt подключал — домофон с Arduino и Ethernet shield.
4. Esp8266 управление через интернет по протоколу MQTT — статья про MQTT и ESP8266.
5. Дистанционное управление домофоном — еще одна статья по теме.

© Geektimes