Домашний цифровой интерком своими руками

c0f0f4f2988846d9b2527f3ee13dfb89.jpg

Осенью прошлого года моя супруга попросила меня установить домашний интерком с цветовой сигнализацией — увидела в каком-то фильме, где герой использовал подобное устройство для того, чтобы дозваться до дочери-подростка, слушающей музыку в наушниках в своей комнате, в столовую — с той-же, естественно, целью.

Сначала я решил пойти самым простым путем, и приобрел на eBay по выгодной цене, четыре б/у-шных аналоговых интеркома:

b1f77b9da28646e41717e187506aacc8.jpg

К сожалению, оказалось, что они нерабочие: что-то услышать было можно лишь на небольшом открытом расстоянии, с сильным фоновым шумом и помехами, а уж на разных этажах дома вообще не было ничего слышно. Если честно, то я не уверен, в чем действительно обстоит дело, в неисправности устройств, или же в насыщенности дома радиопомехами (у меня работают два Wi-Fi роутера, и еще Wi-Fi репитер). Правда, продавец согласился вернуть деньги, даже не настаивая на возвращении товара назад (видимо, подозревал, что устройства не совсем функциональны). Так я оказался владельцем четырех… ну, не интеркомов, а красивых корпусов в практически новом состоянии ​

Но проблема была все еще не решена. Прежде, чем продолжать эксперименты с новыми интеркомами с Amazon-а и выяснять, насколько сильна радио-интерференция у меня дома, я решил «прогуглить» (также не давала покоя мысль о красивых бесплатных корпусах):, а как DIY-щики решают этот вопрос, и быстро выяснил, что, оказывается, уже давно решают, и весьма неплохо. Для Raspberry Pi существует talkiepi, клиент для системы обмена голосовыми сообщениями Mumble, который с успехом может быть использован в качестве домашнего интеркома! Притом, в силу того, что это чисто цифровая система, использующая протоколы UDP и TCP, никакие (возможные) радио-интерференции и помехи ей не страшны.

Пара Raspberry Pi у меня валялась в «загашнике» (RPi Zero и RPi Zero W), Wi-Fi dongle (для Zero без Wi-Fi) тоже был; потребовалось лишь докупить аудио-контроллеры ReSpeaker (на момент покупки они стоили $10.99; на Ali, думаю, можно найти дешевле). Отличные «фирменные» корпуса у меня были; также я решил использовать динамики из старых интеркомов (хотя ReSpeaker продавался с динамиком) из-за того, что они больше, и, естественно, громче.

Для «светомузыки» я решил использовать светодиодную ленту с индивидуальной адресацией WS2812B (которая тоже имелась в наличии), и отдельную SoC Arduino Nano (потому, что был рабочий код для Arduino, с использованием прекрасной библиотеки FastLED). «Межпроцессорное взаимодействие» было организовано путем чтения DIO порта, код этой простой программки я выложил (может быть, кому-то и пригодится).

Код takiepi я слегка модифицировал (заодно, и язык Go попробовал), добавив триггер DIO порта RPi (для управления лентой через Arduino Nano), но на гитхаб не выкладывал. Если кому-нибудь будет нужно — дайте мне знать (там нужно еще стороннюю библиотеку чуток «подпилить»).

b37c727fc84bfd0b565bfd828ea94f0c.jpg

Сервер Mumble был установлен на моем домашнем сервере (обычный Windows 10 с 24 Gb RAM, на котором запущены разные сервера, нужные для работы (типа MSSQL), TinyOPDS, Torrent клиент, openHAB etc.), но который в основном используется, как универсальный видео-плеер. Порт mumble «наружу» я пробрасывать не стал (несмотря на достаточно профессиональную security в этом пакете), вместо этого, при необходимости, я подключаюсь к своему VPN-у, работающему на роутере (да, забыл упомянуть — для mumble есть куча бесплатных клиентов для Android и iOS, я использую Plumble — это еще одно преимущество моего решения). Каких-то особых инструкций по установке и настройке не требуется; у меня все заработало, как говорится, «искаропки», и работет без единой проблемы. Правда, был небольшой нюанс в настройке работы ReSpeaker с takiepi, но по поиску в закрытых issues вы найдете все ответы на возможные вопросы.
Да, еще хочу добавить: если на одном из интеркомов использовать модель Raspberry Pi помощнее (что-то вроде RPi 3B или RPi 4), то можно поднять mumble сервер и на самой «малинке», обойдясь без выделенного сервера. Ну, или можно использовать любой внешний сервер (есть куча бесплатных), но это как-то не то (как по мне) в плане «секьюрности» для домашнего интеркома.

Интерком в разобранном состоянии: была вырезана часть PCB, чтобы разместить RPi Zero и Wi-Fi dongle. Динамик и светодиод были использованы от оригинального интеркома. Дорожки (от кнопки и LED) были перерезаны, и просто припаяны проводами к разьему RPi.Интерком в разобранном состоянии: была вырезана часть PCB, чтобы разместить RPi Zero и Wi-Fi dongle. Динамик и светодиод были использованы от оригинального интеркома. Дорожки (от кнопки и LED) были перерезаны, и просто припаяны проводами к разьему RPi.0451e16057b6af80d6babbccbe63f501.jpg

Система работает уже почти год, практически без проблем. И жена, и дети с удовольствием ей пользуются (младшей дочери особенно нравится красивая работа светодиодной ленты); я добавил еще один интерком в подвал (там у меня есть «мастерская» для столярки и слесарки). В принципе, при желании, систему можно было-бы развить и добавить «фич», вроде выбора каналов, и регулировки громкости динамика, но реальной нужды в этих «фичах» просто нет, поэтому я остановился на «первой заповеди программиста» — «Работает? Не трогай!» ​

P.S. Один мой приятель заметил, что, вместо того, чтобы «городить DIY огород» и «изобретать велосипед», можно было-бы просто использовать Google Home Mini (благо, на eBay-е их можно купить за копейки). На это я ответил, что пробовали, но не понравилось: помимо проблемы с распознаванием фразы »OK Google, broadcast» разными голосами, сама процедура намного более неудобна (и имеет намного большую задержку), нежели, чем просто нажать кнопку и сказать.

Дата-центр ITSOFT — размещение и аренда серверов и стоек в двух дата-центрах в Москве. За последние годы UPTIME 100%. Размещение GPU-ферм и ASIC-майнеров, аренда GPU-серверов, лицензии связи, SSL-сертификаты, администрирование серверов и поддержка сайтов.

© Habrahabr.ru