Плеер «RuneAudio» на базе микрокомпьютера Raspberry Pi 3 для ЦАП с интерфейсом USB

Плеер обеспечивает высококачественное воспроизведение цифровых аудиозаписей в форматах PCM (файлы FLAC, MP3, WAVE, AAC, ALAC) и DSD (файлы DSF), хранящихся на USB носителях — флэшках и внешних жёстких дисках (HDD) с файловыми системами FAT32, NTFS, или находящихся на сетевых накопителях (NAS) и в «расшаренных» папках, доступных по локальной сети через проводное соединение LAN (предпочтительнее) или через беспроводное соединение Wi-Fi. Имеется также возможность прослушивания потокового веб-радио через Интернет.

Основу описываемого плеера составляет микрокомпьютер Raspberry Pi 3 Model B, работающий под управлением специализированного программного обеспечения (ПО) «RuneAudio». Устройство работает в составе проводной или беспроводной домашней локальной сети и полноценно может управляться только через неё со смартфона (или с обычного компьютера), подключённого к той же сети по Wi-Fi (или по кабелю, если для управления используется компьютер, ноутбук). Ограниченный набор некоторых функций управления доступен также через кнопки на передней панели и дистанционно с помощью ИК пульта. Кроме того, что плеер обеспечивает превосходное звучание, он оказался очень удобным в эксплуатации – прослушивать музыку можно сидя на диване, «листая» экран смартфона и «на лету» формируя очередь воспроизведения. Для смартфона (по крайней мере, работающего на ОС «Андроид») даже существует специальное приложение «RuneAudio», которое само найдёт плеер в локальной сети. Можно управлять плеером и через веб-интерфейс по IP-адресу. Я именно так и делаю, так как если таких плееров несколько (а у меня их три в разных модификациях), то между ними можно легко переключаться (нужно лишь ещё переключить селектор входов на усилителе), в отличие от указанного приложения, которое запоминает плеер, и сменить его можно, предварительно очистив данные (кэш) приложения. С этим плеером я уже и забыл, когда включал для прослушивания музыки обычный компьютер.

Сразу необходимо оговориться, что можно собрать подобное устройство на другой аппаратной платформе, под управлением другого ПО, например, Volumio или Moode  – но в своё время эти два проекта мне не понравились, ни по интерфейсу управления, ни по звучанию, и я остановился на «RuneAudio». Для кого-то может оказаться наоборот, тем более, что сейчас всё так быстро меняется.

Здесь же рассматривается конкретная законченная конструкция, работающая уже в течение 2-х лет, к которой удалось «прикрутить» ЖКИ, кнопки и ИК приёмник. В её работе могут иногда проявиться некоторые незначительные баги, обусловленные особенностями используемой версии «RuneAudio», но не думаю, что они реально мешают. Так, например, при воспроизведении первого файла DSD после PCM приходится останавливать воспроизведение, и запускать его повторно, чтобы появился звук; дальше воспроизведение DSD идёт нормально.

Поэтому, при повторении конструкции рекомендую сначала «поиграться» с разными вариантами ПО и определить, какой из них придётся больше «по душе», отказавшись, возможно, от использования ЖКИ, кнопок и ИК-приёмника – без них будет проще собрать устройство в корпусе, и оно не будет привязано к конкретному образу ПО. Правда, если захочется подключить ЖКИ, кнопки и ИК управление, решение этой задачи придётся искать самостоятельно.

Для того, чтобы плеер мог работать по Wi-Fi, я  поместил его в готовый пластмассовый корпус G758V, хотя при желании можно использовать подходящий металлический, но в этом случае для использования возможностей Wi-Fi придётся добавить выносную антенну с соответствующей доработкой платы микрокомпьютера. Кроме того, для обработки передней и задней панелей в металлическом корпусе может потребоваться специальное оборудование.

Описание аналогичного устройства для ЦАП ES9023 с шиной I2S я уже публиковал: Бюджетный Hi-End плеер ES9023 + Raspberry Pi 3 (с небольшим обсуждением). По указанной ссылке можно найти подробную информацию по дополнительной настройке ПО, в том числе под конкретный ИК-пульт, а также другие полезные сведения – описанный там образ ПО «RuneAudio» был в своё время трансформирован из образа системы, который рассматривается здесь сейчас. К этой ссылке я ещё буду возвращаться.

Работа рассматриваемого в данной статье плеера проверена с цифро-аналоговым преобразователем (ЦАП) AH-D6 (AH-D5), хотя он может функционировать и с другим, подключаемым по интерфейсу USB. Необходимо лишь в настройках музыкального проигрывателя (MPD) плеера выбрать соответствующее устройство из списка обнаруженных. При использовании транспорта «Amanero» таким устройством будет «Combo384 Amanero». Здесь также сразу надо отметить, что особенностью описываемой версии образа «RuneAudio» является необходимость перезагрузки устройства (через веб-интерфейс) после любых изменений конфигурации плеера, в противном случае ЖКИ, кнопки и ИК приёмник функционировать перестанут до перезагрузки.

В предлагаемом образе системы программную регулировку громкости я отключил (как видно на скриншоте выше), так как эта функция несколько снижает качество воспроизведения, и регулировку громкости я выполняю с помощью отдельного устройства с моторизованным переменным резистором. Но программную регулировку громкости легко включить, изменив соответствующую настройку  плеера с его последующей перезагрузкой, и тогда громкость можно будет регулировать пальцем прямо на экране смартфона.

Рассмотрим, что нужно для того, чтобы собрать и запустить плеер (пока без ЖКИ, кнопок и ИК-приёмника). Кроме ЦАПа с интерфейсом USB нам потребуется:

  • Плата микрокомпьютера Raspberry Pi 3 Model B (можно купить, например, на алиэкспресс, сразу предусмотрев комплект из 3-х радиаторов, SD-карту и импульсный блок питания 5V 3A, а может ещё и небольшой пластиковый корпус на время экспериментов) с блоком питания;
  • Карта Micro SD 10 класса объёмом не менее 8 Гб для записи на неё образа ПО;
  • Готовый образ «RuneAudio»;
  • Локальная сеть с роутером и Wi-Fi;
  • Провод LAN (RJ45) для подключения микрокомпьютера к локальной сети для первоначальной настройки Wi-Fi;
  • Смартфон (или компьютер) для управления плеером в процессе воспроизведения, имеющий доступ к локальной сети;
  • Отдельный компьютер с ОС Windows и устройством для записи данных на Micro SD-карту, а также с программами SDFormatterWin32DiskImager (для форматирования и записи на SD-карту образа системы), Putty (она не требует установки), WinSCP (для корректировки и переноса файлов конфигурации), программой-архиватором;
  • Флэшка» USB с файлами FLAC для проверки;
  • Необязательно: кабель HDMI и телевизор или монитор с входом HDMI для контроля при первом включении микрокомпьютера.

Для подключения внешнего USB HDD потребуется также отдельное питание для него, так как порты микрокомпьютера такую нагрузку не потянут. Обычно на кабеле внешнего диска HDD для этого предусмотрен отдельный разъём USB «папа». Блок питания плеера в этом случае нужно дооборудовать ещё одним разъёмом USB «мама».

После записи на карту Micro SD с помощью программы Win32DiskImager скачанного ранее образа системы нужно вставить её в соответствующий разъём на плате микрокомпьютера, подключить микрокомпьютер к проводной локальной сети через порт LAN и подать питание. Теперь можно будет войти в веб-интерфейс плеера, набрав в адресной строке браузера его IP-адрес, который был назначен сервером DHCP домашнего роутера (его можно узнать, зайдя на веб-страницу конфигурации роутера).

Для  воспроизведения музыкальные файлы добавляются из вкладки Library (Библиотека – файлы, хранящиеся на USB или NAS накопителях, или список радиостанций, содержащий их потоки) на вкладку Queue (очередь), а выбранный файл воспроизводится уже из вкладки Queue. На самом деле веб-интерфейс RuneAudio интуитивно понятен и быстро осваивается.

Теперь рассмотрим особенности конструкции плеера.

Схема подключения ЖКИ, кнопок и ИК приёмника приведена ниже:

Для выбора размера экрана ЖКИ 1602 или 2004 (в образе сохранены значения для индикатора 2004) потребуется корректировка файла конфигурации /root/controls/start.py в части установки значений параметров LCD_COLUMNS и LCD_ROWS (это можно сделать с помощью программ Putty или WinSCP, удалённо подключившись к плееру по его IP-адресу). Для этих вариантов в файле образа имеются уже готовые файлы конфигурации, которые нужно просто переименовать. Также имеются варианты для индикаторов с русским языком и без (с отображением русских названий английскими буквами транслитом) — здесь замене подлежит файл /root/controls/display.py.

На первых порах для выполнения приведённых на схеме соединений можно использовать макетную плату Arduino. Я использовал отдельную плату, разводка которой приведена во вложении (она также использовалась мной для подключения к микрокомпьютеру ЦАП ES9023 по шине I2S, но эти соединения можно просто игнорировать). Рисунки дорожек соединительной платы и платы кнопок, включая их формат Gerber, приведены во вложении.

Оказалось, что на качество воспроизведения оказывает влияние блок питания микрокомпьютера — необходимо использовать линейный стабилизатор, один из проверенных вариантов схемы которого приведён ниже:

Так как применена микросхема Low Drop стабилизатора LT1083CP и диоды Шоттки 10SQ045 в выпрямителе, оказалось возможным использовать силовой трансформатор ТТП-30 с 6-вольтовой обмоткой, снизив нагрев элементов. Стабилизатор монтируется на плате из одностороннего стеклотекстолита толщиной 2 мм, изготовленной методом ЛУТ (рисунок печатной платы приведён во вложении). На плате предусмотрено подключение проводов от разъёма USB «мама», размещаемого на задней панели, для дополнительного питания внешнего HDD.

Элементы плеера я разместил в корпусе следующим образом:

 

 

 

На передней панели устройства расположен жидкокристаллический индикатор (ЖКИ), круглое окошко для приёма данных от ИК-пульта, 8 кнопок управления, индикатор включения и выключатель питания.

Кнопки управления выполняют следующие функции:

  • PLAY (зелёная) – воспроизведение / пауза;
  • STOP (красная) – стоп;
  • NEXT, PREV (жёлтые) – следующая и предыдущая аудиозапись;
  • VOL+, VOL- (серые) – управление громкостью (действуют, если в настройках MPD плеера разрешена программная «Software» регулировка громкости);
  • MODE (синяя) – смена режима отображения на ЖКИ;
  • BL (белая) – включение / выключение подсветки ЖКИ.

При нажатии кнопки «MODE» на индикаторе последовательно отображается следующая информация:

  • название исполнителя и текущей композиции;
  • битрейт, продолжительность и текущая длительность воспроизведения файла, состояние его воспроизведения / пауза / стоп;
  • IP-адреса устройства в проводной и беспроводной локальной сети;
  • общее время воспроизведения и продолжительность включённого состояния устройства;
  • текущее время и дата;
  • температура процессора, объём занятой памяти.

При использовании ЖКИ 2004 вся информация помещается на трёх последовательно сменяемых экранах, для ЖКИ 1602 количество таких экранов больше.

На задней панели плеера размещены:

  • разъём питания для подключения к сети переменного тока 220В (и дополнительный скрытый выключатель питания при необходимости);
  • сдвоенный (можно и одинарный) разъём USB для подачи «усиленного» питания +5V на внешний жёсткий диск (HDD), для чего должен использоваться специальный шнур HDD с дополнительным разъёмом USB;
  • три разъёма USB для подключения дисков с аудио файлами (флэш и/или HDD накопители);
  • разъём USB для подключения внешнего ЦАП (DAC);
  • разъём USB для подключения внешнего компьютера (PC);
  • порт локальной сети LAN (имеется также встроенный сетевой адаптер Wi-Fi, который может быть настроен после подключения устройства к сети кабелем LAN).

Так как я решил предусмотреть у плеера отдельный разъём для подключения обычного компьютера «PC», чтобы он соединялся с ЦАП автоматически при обесточивании плеера, то для линейки всех выходных разъёмов плеера была сделана отдельная печатная плата (её рисунок приведён во вложении), на которую внутри плеера заводятся соответствующие порты микрокомпьютера. Можно значительно упростить конструкцию, отказавшись от описанной идеи приоритетного переключения портов USB, и развернув плату микрокомпьютера так, чтобы все его порты (LAN и USB) находились на задней стенке плеера (так мной и было сделано с ЦАП ES9023 – можно найти на фото в уже упоминавшейся статье).

Также на приведённой фотографии можно увидеть разъём «Remote ON» и отдельный блочок дистанционного включения плеера – это тема для отдельного разговора, и на них можно не обращать внимания (кстати, эту ранее предусмотренную возможность я в настоящее время не использую).

Внутри плеера всё смонтировано на основании из оргстекла толщиной 6 мм:

Плеер настроен на работу от ИК-пульта типа FZ0721, работающего по протоколу NEC:

Клавиши пульта дублируются соответствующими кнопками на передней панели:

  • чёрный символ треугольника — воспроизведение | пауза;
  • клавиша C — остановка воспроизведения;
  • две чёрные клавиши со стрелками по горизонтали — предыдущая и следующая композиция;
  • две чёрные клавиши + и — по вертикали — регулировка громкости;
  • клавиша с чёрной стрелкой изображения выхода — режим отображения на экране «Mode»;
  • клавиша TEST — включение / выключение подсветки ЖКИ «BackLight».

С помощью программы Putty или WinSCP можно назначить другие клавиши этого пульта, изменив настройки в файле конфигурации /etc/lirc/lircd.conf.d/FZ0721.lircd.conf . В этом файле приведено соответствие кодов всех клавиш указанного пульта их названиям (предопределённым в системе «RuneAudio»):

  • KEY_POWER — красная клавиша питания,
  • KEY_MODE — клавиша с красной надписью «MENU»,
  • KEY_T — клавиша «TEST»,
  • KEY_BACK — клавиша со стрелкой выхода,
  • KEY_VOLUMEUP — клавиша увеличения громкости «+»,
  • KEY_VOLUMEDOWN — клавиша уменьшения громкости «– »,
  • KEY_PREVIOUS — клавиша перехода к предыдущей аудиозаписи,
  • KEY_NEXT — клавиша перехода к следующей аудиозаписи,
  • KEY_PLAY — клавиша воспроизведения (и паузы),
  • KEY_CANCEL — клавиша «C»,
  • KEY_0 — клавиша «0»,
  • KEY_1 — клавиша «1»,
  • KEY_2 — клавиша «2»,
  • KEY_3 — клавиша «3»,
  • KEY_4 — клавиша «4»,
  • KEY_5 — клавиша «5»,
  • KEY_6 — клавиша «6»,
  • KEY_7 — клавиша «7»,
  • KEY_8 — клавиша «8»,
  • KEY_9 — клавиша «9»,

В описываемом плеере используются только 8 из них, и их названия должны быть следующими:

  • KEY_PLAY — воспроизведение / пауза,
  • KEY_STOP — остановка воспроизведения,
  • KEY_NEXT — следующая композиция,
  • KEY_PREVIOUS — предыдущая композиция,
  • KEY_VOLUMEUP — увеличение громкости,
  • KEY_VOLUMEDOWN — уменьшение громкости,
  • KEY_ENTER — смена режима отображения «Mode»,
  • KEY_MUTE — включение / выключение подсветки ЖКИ «BackLight».

В имеющемся файле конфигурации пульта названия «недостающих» клавиш добавлены, а лишних – закомментированы значком #. Так, в качестве KEY_STOP использована клавиша KEY_CANCEL, в качестве KEY_ENTER – клавиша  KEY_BACK (а можно было бы использовать клавишу с надписью «MENU», имеющую внутреннее название KEY_MODE),  в качестве KEY_MUTE – клавиша «TEST» (её внутреннее название KEY_T). Названия клавиш KEY_PLAY, KEY_NEXT, KEY_PREVIOUS, KEY_VOLUMEUP, KEY_VOLUMEDOWN менять не пришлось, а оставшиеся просто не используются.

Существует возможность программной перестройки системы RuneAudio на другие пульты (в том числе, работающие по другим протоколам) средствами встроенной системы Linux (программа irrecord). Инструкция по настройке ИК пульта приведена в конце ранее упомянутой статьи.

В образе RuneAudio, ссылка на который была приведена выше, я оставил несколько понравившихся мне радиостанций, чтобы можно было проверить работу радио сразу, что называется, «из коробки». Список этих радиостанций (названия и адреса потоков) приведён ниже:

Chroma Classic Jazz    (http://chromaradio.com:8028)

Chroma Ballads           (http://chromaradio.com:8006)

Chroma Smooth Jazz   (http://chromaradio.com:8036)

Chroma Classical        (http://148.251.184.14:8008)

Chroma Radio — Nature Sounds  (http://chromaradio.com:8024)

Radio Jazz                  (http://nashe1.hostingradio.ru/jazz-256)

Radio 7                      (http://radio7server.streamr.ru:8040/radio7256.mp3)

Можно, конечно же, создать свой список станций. Удалять радиостанции из списка рекомендую с конца, так как в программе имеется баг – удалённая станция может снова появиться в списке после перезагрузки.

На плеере я слушаю в основном файлы типа .flac, но .mp3 тоже годятся. Для правильного отображения на русском языке свойств (тэгов) файла в формате .mp3, их нужно предварительно сконвертировать в кодировку UTF-8 в системе MS Windows, используя программу MP3Tag:

  • Скачать и установить программу MP3Tag;
  • Открыть список MP3-файлов через меню Файл -> Сменить Папку/Добавить Папку;
  • Войти в меню настроек: Сервис -> Настройки -> Тэги -> Mpeg — сделать выбор напротив «UTF8»;
  • Выделить все файлы (можно через Ctrl + A);
  • Сохранить (можно через Сtrl + S);
Памятка по работе с плеером

  • после включения плеера экран ЖКИ подсвечивается примерно через минуту (до этого не рекомендуется пытаться управлять плеером с помощью кнопок или от ИК-пульта);
  • перед отключением плеера от сети выключателем рекомендуется сначала выключить его программно через Menu| Turn Off | Power Down  (программное выключение не обесточивает плеер);
  • рекомендуется включать плеер последним — после включения ЦАП (или одновременно с ЦАП), а выключать первым (или одновременно с ЦАП), чтобы не «слетала» настройка MPD с выбранным устройством воспроизведения;
  • перед отсоединением USB-накопителей их сначала необходимо безопасно «размонтировать» программно, выбрав соответствующий накопитель в меню Sources, и назначив ему режим  Unmount;
  • для внешнего жёсткого диска USB обязательно нужно использовать кабель с дополнительным разъёмом питания, который подключается к специальному отдельному USB-порту плеера, предназначенному именно для этой цели;
  • для программной регулировки громкости через Web-интерфейс, кнопками на передней панели или с помощью ИК-пульта она должна быть разрешена в меню настроек MPD (Volume control – enabled), при этом качество звучания может незначительно снизиться;
  • в случае изменения любых настроек MPD рекомендуется сделать перезапуск проигрывателя через Menu | Turn Off | Reboot  для корректного отображения информации на ЖКИ;
  • в Google Play Market для «Андроид» имеется специальное приложение «RuneAudio».

 

 



Вложение: Печатные платы.zip 195,16 KB (Скачиваний: 38)

Вложение: Блок питания.lay6 58,89 KB (Скачиваний: 18)

0 комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.