Здрасьте-здрасьте! Хочу поделиться своим первым, что называется, «опен сёрс», проектом подобного рода, который растянулся на несколько месяцев. По сути - это небольшая модификации рэки(так, кстати, до сих пор и не понял почему она так называется) с начинкой от Apart и историей как все было - куда ж без пустословия =) От момента завершения проекта до написания поста прошло почти пол года, ну так получилось – лень она такая, отрефакторить код удалось только в прошлом месяце, а залили в плеймаркет и вовсе позавчера.
Тем кто меня не знал или забыл, напомню – помимо ремонта электроники и оптики в своей мастерской, а теперь еще и электротраспорта, я занимаю еще и должность инженера-техника в одном ресторане Петербурга, где делаю разные разности, связанные с обеспечением исправного функционирования всего заведения, а иногда удается выкроить пару часов в неделю на какую то инициативную деятельность. Для ЛЛ – это не сложный материал, но в кратком содержании возможно напишу не понятно, поэтому для всех будет много текста. Но всегда можно тупо слить с гитхаба исходники и краткую TXT, в которой все сухо и поэтапно. В самом конце будут все необходимые ссылки.
И так, с чего же все начиналось. Когда наш ресторан еще запускался, подрядчиком была организована аудио система для трансляции в фоне. Устроившись в рестик, я обратил внимание на эту железяку. Но так как ранее я не имел опыта общения с аудиоаппаратурой такого уровня, доскональное ее изучение я отложил. Ее предназначение было понятно, но не очень удобно в использовании.
Поначалу мне приходилось всегда самому включать звук и настраивать уровни, т.к. никто из местных не понимал какую кнопку нажать в какое время. Я поставил для себя галочку - добраться как-нибудь до системы и облагородить, а заодно изучить ее и научить коллег(это я делал параллельно). Забегая вперед, к моменту готовности, уже весь старший персонал знал и понимал что делать и как пользоваться моей «поделкой».
Представляла из себя система(фото ниже) набор из трёх усилков разной канальности и мощности, и предусилителя(самая верхняя планка с дисплеями), он же селектор.
Так это выглядело до
Вот селектор на оф.сайте, там по селектору вся документация и необходимые файлы для загрузки, которые использованы в данной статье
Что же может это барахло? Основной сетап нашей стойки :
* 4 выходных стереоканала с возможностью регулировки на каждом уровня громкости, верхних/нижних частот, громкость микрофона(у нас не используется), выбор источника
* 4 входных(источники звука) стереоканала (a,b,c,d) – первый у нас плеер для фоновой музыки, остальные протяжки до XLR розеток из трех залов(банкетный,основной,вип). Тут стоит заметить, что сделано это было разумно – на больших мероприятиях если диджей играет, скажем в Вип зале, то его же сеты можно запустить и в трансляцию на весь ресторан, не нарушая общую картину вечера. Большую часть времени(в обычные дни) музыка просто играла с плеера.
Шли дни, недели, месяцы с момента запуска ресторана… Вот как то подходит ко мне арт-директор и говорит:
- Неудобно регулировать громкость в дальнем зале – не слышно ситуации при изменении уровня.
Ну оно и понятно – ресторан имеет площадь почти 500кв.м.
- Я где-то слышал, что можно сделать регулировку зон при помощи доп. пульта, – говорит он мне.
На что я по своему обычаю сказал, что я подумаю.
Значит пришло время, «план вытесняет героин…» © (не все поймут) пора приступать к изучению.
Раньше, что бы внести корректировки в звучание – идешь в гримёрку и крутишь уровень, идешь слушаешь как получилось и еще раз крутишь при необходимости. Иногда при этом участвовали два человека, разговаривая по телефону – один крутит, второй в нужном зале слушает и дает рекомендации.
Что ж, знакомимся и гуглим.
Вид сзади нашей Рэки
На селекторе сзади была найдена надпись(в красном овале на фото) :”remote wall-panels” и 4 мамы 8P8C, соответствующие каждой зоне. Зеленый овал – последовательный порт, ковыряние с которым я оставил на десерт.
Изучение оф.сайта и мануалов с него же подтвердили мои предположения – каждой зоне своя панель управления и, разумеется, она проводная. Выглядит как обычный эзернет, но не стоит спешить его заводить в локальную сеть, в мануале это так же сказано. Хотя изначально я хотел провести эксперимент, но решил подстраховаться и изучить документацию. Не зря.
Помимо протяжки нескольких сотен метров витухи по залам, предстоит еще где то раздобыть сами панели. Благо интернет пока не запретили – нашлись они быстро, но стоимость, мягко говоря, совсем дикая, как и стоимость основного железа. Вот один из представителей в России
Я смотрел цены того что у нас установлено и сравнивал с аналогами – не в восторге оказался от увиденного, особенно после того как пообщался с оргами и технарями светового и звукового оборудования, которые заезжают к нам на мероприятия. Многие говорят про этот бренд неоднозначно. Ну, да не о том статья.
4 панели + витуха и расходники(50к+/-), да и время на прокладку и монтаж… Разумеется мне ни кто не одобрил такое решение, поэтому все забили болт и стали жить как раньше. Но во мне теплилась надежда, да и нагрузить себя какой-нибудь ерундой я люблю, будто дел других нет. За невозможностью заниматься постоянно одним и тем же, ввиду основных обязанностей, я смотрел на задачу в ключе: долго, но под себя.
Пытался искать аналоги таких панелей в китае… от других брендов… схематику этой панели для возможного колхоза из говна и палок. Увы, ни чего не подворачивалось. Спустя какое-то время моих периодических поисков я почти опустил руки. Но вот на подготовке к одному из мероприятий, я в очередной раз заметил, как звукачи отстраивают уровни с планшета. Я по обычаю подхожу и пускаю слюни, как это круто всё – 21 век во всей его красе. И тут меня осенило, а что если и мне сделать нечто подобное. Я порасспрашивал звукачей(они же мне в очередной раз посоветовали Behringer) об их железе и как это все работает – мне это не совсем подходило, у них все игрушки уже по дефолту интегрированы в селектор и софт от производителя, и точка доступа там же, и дешевле… всё из коробки, что называется, и за разумные деньги.
Я пошел снова на сайт «апарта» в поисках каких-нибудь подсказок. Были найдены другие версии селекторов, к ним отдельные блоки управления, к блокам отдельно модули беспроводной передачи, к которым можно подключить уже беспроводные панели управления… Короче снова конструктор за кучу бабла, да и не применимо к нашей системе. Однако, там блок управления подключается по RS232. У меня на селекторе он тоже есть – картинка начала прорисовываться, пдф’ку для этого порта к моему селектору я тоже видел. В ней нашлись команды управления – это первый шаг в нужном направлении.
Первым делом я надыбал переходник USB-RS232. Тут и старенький свой ноут я взбодрил на днях, и сразу притащил его на работу для тестов. Первые опыты я ставил через «пати». Но в комплекте к переходнику был и родной софт для отладки, но это уже не так важно.
Наконец-то я узрел воочию то, что и представлял себе. Энтузиазм возвращался. На отправленную команду с терминала, селектор реагировал и присылал ответ, так же при изменении значений на селекторе, в терминал прилетал код. Меня раздирало от удовольствия – то, что нам рассказывали в универе на «сетях» и других «железных» предметах я не очень понимал, пока не допёр до этого экспериментальным путём спустя почти десяток лет. Еще раз убедился, что теория без практики – бесполезна обычно.
Наигравшись с консолью, я потихоньку охладил свой пыл – это хороший результат, но надо двигаться дальше. Управляющим устройством я видел гаджет на андроиде. На пути встала делима с пересылом кодов из последовательного порта в смартфон посредством «ви-фи» и обратно. Заставь дурака молиться… И я достал коробку с ардуино – были небольшие эксперименты в универские годы, да и после я периодически возвращался к контролеру от скуки. Начал накидывать на макетке какие то схемы, гуглить, общаться с коллегами по ремеслу, вдруг у кого какие идеи… И одна идея поступила от моего давнего знакомого, который ремонтирует ноуты.
Я ее оставил на запасной вариант, но как оказалось, мученья с ардуино были и правда мучениями(да простят меня ардуинщики во главе с Саней Гайвером), и я быстро перешел к запасному варианту. Как сказал Артём : «берешь старый ви-фи роутер с ттл на борту, прошиваешь на Open-WRT и в путь».
Звучало логично, я начал изучать эту тему – купил на авито роутер за 300р, скачал прошивку, распаял на плате переходник с ttl, зашил прошивку и…в череде ковыряний что-то изменил, да так, что больше не смог получить доступ к роутеру…. Занавес!
Было жалко потраченного времени, но останавливаться было рано, ну или уже поздно… Вспомнились старые попытки с моим университетским другом построения системы умного дома и в целом сегмент «интернет вещей». Ляяяяяя, да это ж кладезь для экспериментов… И я перешел на другой этап – подбор готового железа. Я прикинул, что должны быть по-любому готовые конвертеры rs-232 tcp. Я был прав, 15 минут в гугле и найдена «балалайка» USR-TCP232-302
Не реклама, но это то, на чем я построил
Ссылку оставлять на нее не буду, что б не сочли за рекламу, кому надо – найдёт где купить, дядюшка Ляо возит всякое.
Вооружившись переходником rs-232 – usb, я погонял немного конвертер софтом, который идет с ним комплекте. Поизучал мануалы и настройки, и пошел в магазин за двумя папами разъема DE-9, т.к. и «балалайка» и селектор имеют мамы на борту. Спаять, так называемый null-modem кабель не составило труда(пояснять не буду – по первому же запросу в гугле все будет понятно). У меня получилась замкнутая цепь
Потом конвертер USR был подрублен одним концом к селектору, вторым в локальную сеть.
Прилепил на хомут-пломбу, оставшийся валяться какое-то время назад - тут же располагается электрощит, который подрядчик услужливо опечатал, не убрав за собой запасные пломбы.
На наклейке у меня уже записаны мои данные для коннекта к конвертеру, которые надо изменить что бы все завелось. Разумеется это сделать надо до подключения к нужному устройству.
Настроек не так и много. Первая на очереди это настройки адресов в локалке(фото ниже), я просто выбрал свободный на данный момент и указал его статичным, а там DHCP маршрутизатора сделает все сам.
Настройка адресов в локалке
Дальше режим работы конвертера и порт
Сервер, т.к. он связующее звено в сети для клиента-смартфона и ком портаЮ параметры берем согласно ПДФ’ки на селектор.
Ну и последнее – доступ к веб интерфейсу конвертера со всеми этими настройками, дабы всякие злые злоумышленники не злоумышленничали свои злые умыслы.
Тут меняем логин и пароль на свои для подключения к вебморде(только к ней, для управляющего устройства посредством команд в сеть эти данные не нужны)
На этом можно перейти было к тестам. К конвертеру с офсайта(да и не только) можно скачать набор софта, как для настройки(аналог веб интрефейсу), так и для тестирования - есть даже мобильная версия на телефон, но она не очень удобная, как по мне, однако, проверить теорию отправки со смарта нужных команд все же позволит(я проверял).
Нужная мне прога на скрине ниже – TCP232-Test называется(она так же есть на оф странице загрузки).
Принцип как у Putty, но слушает она и ком порт и сервер.
Интерфейс программы поделен на две части – левую и правую. Слева подключение через компорт, справа через tcp(в мануалах есть описание). Так же к конвертеру есть USR-VCOM Virtual Serial Software(скринов, увы не нашел) – эта утилита позволяет подключиться непосредственно к ком порту уже смонтированной системы посредством tcp и не только его «слушать» но и отправлять команды в него, так, как я это делал «закольцевав» его на ноуте до подключения к селектору.
Так, запустив виртуальный компорт и «прослушивая» его в левой части программы TCP232-Test, и, настроив как клиента по айпишнику и порту к tcp серверу правую часть, я мог отправлять команды и видеть всё это в реальном времени.
Я отправлял команды серверу, видел их в ком порте, видел изменения на селекторе, который посылал на некоторые команды ответ и наоборот – изменял значения на селекторе и видел как они, проходя ком порт, прилетают на сервер, который их пересылает клиенту. Магия! На этом настройка «железа» была завершена, надо было думать что-то кодировкой команд в привычный для смартфона вид.
Решено было сильно не премудрствовать и просто завести переменные с нужными кодами, что бы они передавались по TCP в конвертер в «аскишном» виде, читай просто набор символов(помним эксперименты, где данные из TCP в RS-232 и обратно транслировались в том же виде). Обратно они так же прилетали набором символов, который воспринимался гаджетом.
Про исходный код приложения писать не буду детально – это направления я сначала сам начал осваивать, но потом было принято решение подключить своего друга, который фрилансит как раз по части приложений для андроида, за месяц с чем то, мы закончили и оттестировали приложение. Во избежании совершения мной неточностей и ошибок при комментировании исходного кода, ввиду моей слабой подкованности в этом вопросе, примем готовое приложение, как... готовое приложение. Для программистов и любознательных на гитхабе все исходники лежат.
К интерфейсу я подошел просто – минимализм и функциональность.
Это наш логотип при запуске приложения
А ниже главный экран. Здесь 4 зоны, соответствующие каждой на селекторе. Название зон можно редактировать при нажатии на карандашик в верхнем правом углу каждой зоны.
Это экран настроек, попасть в который можно нажав на шестеренку вверху справа главного экрана
Если нажать на одну из зон на главном экране, начнется загрузка экрана(два скрина ниже)
Здесь есть возможность:
- Увеличить/уменьшить уровень громкости, видеть текущее его значение
- Включить/выключить звук(функция Mute)
- Выпадающего списка выбрать один из 4 источников, соответствующих селектору, а так же изменить имя этого источника для большей интуитивности интерфейса, нажав на карандашик.
Работает все это по простой логике, которую расписали перед кодингом. При выборе конкретной зоны, создается(открывается) соединение смартфона и сервера посредством локальной сети на конвертере по данным, которые вводили на экране настроек. Если все успешно - во время соединения запоминается индекс конкретной зоны, что бы можно было запросить текущий уровень громкости «аскишным» кодом(с индексом зоны), получить ответ(там тоже присутствует этот индекс для дешифровки) и прописать его в поле уровня громкости(это все происходит в моменте загрузки экрана зоны). Конкретно: при запуске формы отправляется запрос уровня громкости командой "$aR 6", где "$" - спец символ, "а" - индекс зоны, по которой идет запрос, "R" - индекс запроса, " 6"- индекс типа запроса(уровень громкости), именно с пробелом. Таким образом получается, что мы для зоны "а" отправили команду, в которой попросили прислать уровень громкости. Аналогично с источником звука.
После отрисовки всех ответов на форме, ожидается команда от интерфейса и продолжается ожидание ответов, на случай, если после отрисовки в приложении, на самом селекторе кто-то вручную изменил параметры.
Ответ идет на конвертер, им транслируется в локальную сеть с пометкой адресата(нашего телефона). Далее происходит внесение изменения в экран зоны, если это требуется.
Если происходит переименование зон или источников – к селектору не идет ни каких команд от смартфона. Но если нажата кнопка или сделан выбор из выпадающего списка - на сервер(TCP - конвертер же в режиме сервера) отправляется соответствующий «аскишный» код, который соответсвует конкретной зоне и команде для выполнения(как в примере выше - запрос громкости).
В обратку селектор, если изменения были внесены(например изменение уровня громкости) отправляет ответ. Если пакет с кодом потерялся или селектор не смог его расшифровать как подходящий ему, то ответа не будет. Конкретно: на запрос уровня громкости приходит ответ "$aV54", где "$" - спец символ, "а" - зона в которой было произведено изменение, "V" - индекс уровня громкости, "54" - текущее значение, в данном случае уровня громкости. этот код может работать в обе стороны. Если отправить этот же код "$aV54" в селектор, то он изменит текущий уровень на тот который мы указали, в данном случае, новый уровень громкости станет равным 54 попугаям, независимо от того какое значение было до этого. Сначала планировал иметь функцию ручного ввода значения уровня громкости, но потом отказался от этой идеи, т.к. регулировка кнопками "+" и "-" закрывает необходимость ручного ввода, тем более что она неудобна.
ФУХХХХ…. Вроде бы всё описал. Теперь, включив питание систем «Рэки» и плейлист на плеере, любой администратор зала или официант может посредством служебного телефона на андроиде отрегулировать уровень громкости в каждом зале по ситуации. А я или управляющий во время мероприятий можем скомутировать и грамотно поделить трансляцию, если в разных залах проходят разные мероприятия. Например, в основном зале гости кушают в формате ресторана, в вип-зале проходит чей то день рождения, а в «ивенте» зал подготовлен под картинную выставку, и везде играет своя музыка, дополняя архитектурное и декоративное деление залов на зоны еще и звуком.
Спустя немного времени я запросил у управляющего еще чуть-чуть расходных средств и, купив нормальную коммуникационную стойку, универсанализировал её возможностью коммутации входных каналов, собрав промежуточную панель с XLR разъемами. Это сделал для использования звуковых розеток в залах как порталов не только для подключения источника к Рэке, но и соединения двух залов этими порталами, как удлинителями, которые обычно прокладываются по потолочным лоткам или по полу во время мероприятий. Но это уже другая история.
Ниже пара фоток с финальной разводки и укладки кабелей.
Тут вид обновленной Рэки спереди до после всей подрезки и распайки соединительных кабелей, разъемов и всей проводки.
А ниже после, так называемого, "кабельменеджмента"
Думаю, данных фоток и описания будет достаточно для повторения проекта
Теперь по ссылкам:
Сайт Apart'a, где во вкладке "DOWNLOADS" все файлы по нему
Гитхаб с исходниками
Приложение в плеймаркете
Загружено пару дней назад, модерация нынче долгая – поэтому еще нет в доступе. Если кто надумает повторить проект и скачать готовое приложение, а его по-прежнему не будет в плеймаркете – пишите в личку, скину куда-нибудь
Для связи со мной по любым техническим вопросам
Любите то что вы делаете, даже если в глобальном смысле результат не будет заметен.
Всем мир!