Каталог
|
Музыкальный медиа центр на базе Raspberry Pi Zero W и Pimoroni Pirate Audio2020-12-24 Все статьи →В данной статье, мы опишем процесс создания музыкального медиа центра, c возможностью удаленного управления на базе мини-компьютера Raspberry Pi Zero W (Изображение - №1), звуковой платы расширения Pimoroni Pirate Audio Headphone Amp 24bit/192KHz (Изображение - №2) и расширяемого музыкального сервера Mopidy.
Изображение - №1
Изображение - №2 В качестве мини-компьютера можно использовать любую модель Raspberry Pi имеющую на борту контактную площадку - 40pin GPIO, но самая подходящая с точки зрения размера и аппаратного функционала, это Raspberry Pi Zero W. Кратко пробежимся по аппаратным характеристикам звуковой платы расширения Pirate Audio, от Pimoroni (производство United Kingdom). Данная плата позволяет превратить Raspberry Pi в музыкальный медиа центр с поддержкой удаленного управления и воспроизведением музыки с локальных или сетевых хранилищ и музыкальных сервисов, таких как: Spotify, AppleMusic, SoundCloud и не только. Сердцем платы, является чип PCM5100A от Texas Instruments воспроизводящий звук в 24bit/192KHz и работающий на шине I2S. На лицевой панели располагается 1.3” IPS LCD монитор с разрешением 240х240px, подключенный к шине SPI и работающий на драйвере ST7789. Монитор отображает обложку исполняемого альбома, значки кнопок и их значения, активные полосы регулировки звука и воспроизводимого трека. С левой стороны от монитора расположены кнопки: верхняя А - [пауза] / [воспроизведение] / [безопасное выключение системы] и нижняя B - [регулировка звука] в сторону уменьшения, а с правой стороны верхняя X - [cледующий трек] / [перезагрузка системы] и нижняя Y - [регулировка громкости] в сторону увеличения. Все четыре кнопки могут быть перепрограммированы под любые задачи пользователя. С тыльной стороны платы (Изображение - №3), расположились все компоненты, включая центральную микросхему, физический переключатель High/Low, 3.5мм джек для подключения платы к внешним источникам воспроизведения звука, контактная площадка 40pin GPIO и разъем подключения дисплея. Удаленное управление осуществляется с помощью WEB клиента, который может быть запущен например на телефоне. Физическое исполнение платы (качество компонентов, пайка и т.д.) качественное и каких либо нареканий не вызывает, как и ее работоспособность. Для такого класса устройства, звук довольно таки чистый и приятный, что не может не радовать.
Изображение - №3 Стоит сказать пару слов и о музыкальном сервере Mopidy. Как указанно на официальном сайте, Mopidy - это расширяемый музыкальный сервер, написанный на Python. Он может воспроизводить музыку с локального или сетевого диска и облачных сервисов: Spotify, AppleMusic, SoundCloud, TuneIn и других. Вы можете управлять вашей музыкой с любого телефона, планшета или компьютера, используя различные MPD и WEB клиенты, благо коих существует большое множество, на любой вкус и цвет. Он запускается в терминале или в фоновом режиме на компьютерах с операционной системой Linux или Mac, которые имеют сетевое подключение и аудиовыход. По умолчанию это HTTP сервер, но если установить расширение Mopidy-MPD, он станет сервером MPD. Многие дополнительные интерфейсы для управления, доступны в виде расширений. После установки и настройки, пользователю нужно будет только подключиться по средствам MPD или WEB клиента к серверу Mopidy и наслаждаться своей любимой музыкой. Не маловажным фактором является и тот факт, что Mopidy поддерживает множество расширений и API интерфейсы Python, JSON-RPC и JavaScript. Это делает его идеальной базой для разнообразных DIY проектов. В данном проекте от Matt Brailsford, Raspberry Pi был встроен в старый кассетный проигрыватель. Кнопки и регулятор громкости подключены к GPIO на Raspberry Pi и используются для управления воспроизведением через собственное расширение Mopidy. Кассеты имеют метки NFC, используемые для выбора плейлистов из Spotify.
Официальный сайт Mopidy: https://mopidy.com/ Для проекта нам понадобится:
С технической стороной разобрались, теперь приступим к реализации самого проекта. Для начала, запишем операционную систему на карту памяти. В качестве ОС мы используем последний образ Raspbian OC. * * * Примечание: На момент написания статьи, релиз Raspbian OC - от 12.02.2020. В случае ошибки записи или не корректной записи ОС, следует полностью очистить карту памяти (Operating System > CHOOSE OS > Erase) и произвести запись повторно! * * * Для этого нам понадобится программа для записи образов ОС Raspberry Pi Imager, которую можно скачать с официального сайта raspberrypi.org перейдя по ссылке: https://www.raspberrypi.org/software/ После загрузки и установки данной утилиты, откройте ее и выберете один из трех вариантов установки Raspbian OC:
Оптимальный вариант, это стандартная установка, ее мы и выберем. 1. Установка ОС - Raspbian OC. Выбираем ОС: Operating System > CHOOSE OS > Raspberry Pi OS (32-bit) (Изображение - №4).
Изображение - №4 Далее, выбираем карту памяти: SD Card > CHOOSE SD CARD > ваша карта памяти (Изображение - №5)
Изображение - №5 * * * Примечание: Скорей всего у вас будет отличаться название и буквы дисков, но если к компьютеру подключен один кардридер с одной картой памяти, то выбор очевиден :) * * * После выбора карты памяти, нажимаем кнопку WRITE (Изображение - №6). Программа отобразит сообщение, что все данные находящиеся на карте памяти будут уничтожены. Поскольку мы используем новую карту, то смело нажимаем YES (Изображение - №7), после чего начнется полностью автоматическая установка ОС.
Изображение - №6
Изображение - №7 В первую очередь будет произведена запись ОС на карту памяти, а затем верификация данных на ошибки и финальное сообщение об успешном окончании всего процесса (Изображение - №8, Изображение - №9, Изображение - №10).
Изображение - №8
Изображение - №9
Изображение - №10 2. Первоначальное конфигурирование файла config.txt После установки, закройте Raspberry Pi Imager и извлеките карту памяти из кардридера (Безопасное извлечение устройств и дисков). Далее верните карту в кардридер. Вы увидите, что в системе появились два подключенных дика. Поскольку мы использовали основную ОС Windows 10, в нашем случае это:
Абсолютно не важно, какие у вас будут буквы или разделы дисков (зависит от используемой ОС), нас интересует диск на который была произведена инсталляция Raspbian OC. У нас, это диск boot (F:). Открываем его и находим файл config.txt. Поскольку у мини-компьютеров отсутствует физическая микросхема BIOS, ее роль исполняет конфигурационный файл. Как вы уже наверное догадались на системах Raspberry Pi, это config.txt. В нем прописываются все основные настройки использующиеся при старте системы. Откройте его в любом текстовом редакторе, например Блокнот. Перед вами появятся дефолтные значения, смело можете их все удалить и прописать ниже приведенные. Единственное, что вам нужно будет изменить, так это два параметра: hdmi_group и hdmi_mode. Второй параметр отвечает за разрешение экрана, а первый за группу к которому оно относится. Все значения данных параметров, вы можете найти перейдя по ссылке: https://elinux.org/RPiconfig#Video # For more options and information see # http://rpf.io/configtxt # Some settings may impact device functionality. See link above for details # =_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_= : Temperature Control temp_soft_limit=70 temp_limit=85 # =_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_= : Automatic Frequency Control force_turbo=1 initial_turbo=0 # =_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_= : Frequency Values # =_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_= : Maximum Values arm_freq=1000 core_freq=400 sdram_freq=450 #gpu_freq=250 h264_freq=250 v3d_freq=250 isp_freq=250 # =_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_= : RAM - GPU / ARM total_mem=512 gpu_mem=64 disable_l2cache=0 # =_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_= : HDMI Mode hdmi_group=2 // группа hdmi_mode=85 // разрешение экрана # =_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_= : Hardware Interfaces #dtparam=i2c_arm=on #dtparam=i2s=on #dtparam=spi=on # =_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_=_= : Enable Audio - Loads snd_bcm2835 dtparam=audio=on [pi4] dtoverlay=vc4-fkms-v3d max_framebuffers=2 [all] * * * Примечание: Если вам интересно разобраться, что из себя представляет файл config.txt, какие параметры в нем могут быть прописаны и т.д. У нас есть постоянно обновляющаяся рубрика кратких руководств по нему. На данный момент существуют две части, с которыми мы рекомендуем ознакомиться:
* * * После того, как вы внесете все изменения в файл, сохраните его и извлеките карту памяти из крдридера, тем же образом что и раньше. 3. Установка контактной площадки - 40pin GPIO и сборка Теперь мы перейдем к небольшой доработке самой Raspberry Pi Zero W. Поскольку у нас она шла с не распаянной контактной гребенкой (Изображение - №1), то нам нужно ее припаять к плате. После монтажа контактной площадки, между мини-компьютером и звуковой платой, установим пластиковые стойки длинной 10мм М3 (мама-мама), затем соединим получившуюся конструкцию пластиковыми стойками 6мм М3 (мама-папа) снизу и пластиковыми винтами М3 сверху (предварительно укороченными до длинны 5мм). После проделанных манипуляций общий вид конструкции примет вид, как на изображении №11.
Изображение - №11 4. Первый запуск и базовая настройка ОС Подключите блок питания к мини-компьютеру и всю сопутствующую периферию (клавиатуру, мышку и монитор), затем установите карту памяти с записанной ОС, после чего подключите БП в розетку. Изначально система произведет тестовый запуск и автоматически перезагрузится. После повторной загрузки, на экране монитора появится окно приветствия и предложение о настройке некоторых базовых параметров. Нажав NEXT вы перейдете к следующему окну, где сможете выбрать страну, язык системы и часовой пояс. Сделайте свой выбор и переходите к следующему шагу. * * * Примечание: Галочка напротив Use English language устанавливает основной язык системы английский, игнорируя предыдущую настройку (поле: Language). Галочка напротив Use US keyboard устанавливает основной язык клавиатуры английский. * * * Следующим шагом, будет установка пароля пользователя pi, тут можно ввести или комбинацию цифр от единицы до девяти или оставить поля пустыми. Пароли пользователей pi и root мы изменим позже. На вкладке Set Up Screen ничего не отмечаем и переходим к следующему шагу. Теперь в появившемся списке найдите свою WiFi сеть и подключитесь к ней введя пароль. После подключения к беспроводной сети, вам предложат обновить списки репозиториев и саму систему. Соглашаемся и ждем завершения обновления. После окончания, перезагрузите систему. * * *
Примечание: Полное обновление ОС может занять какое то время, обязательно дождитесь завершения его!
Конечно вы можете и не обновлять ОС в данный момент, но мы настоятельно рекомендуем это сделать. Если по какой то причине, вы этого не сделали, то открыв окно терминала, введите команду:
pi@raspberrypi:~ $ sudo apt update
А затем:
pi@raspberrypi:~ $ sudo apt upgrade
* * * После перезагрузки, убедимся, что ваша WiFi сеть настроена корректно и работает. Для этого, нужно проверить корректность внесенных вами данных для беспроводной сети, которые находятся в файле wpa_supplicant.conf в /etc/wpa_supplicant. 1. pi@raspberrypi:~ $ cat /etc/wpa_supplicant/wpa_supplicant.conf На экране отобразится содержимое файла wpa_supplicant.conf, в самом конце которого находятся настройки вашей сети, проверьте их. network={ ssid=”название вашей сети” psk=”пароль вашей сети” } Далее проверяем работоспособность сети: 2. pi@raspberrypi:~ $ ping -c 15 google.com Если данные корректны и ping идет без обрывов, то ваша сеть настроена и работает корректно. Теперь изменим имя хоста вашей системы с дефолтного raspberrypi, например на RPiW-MUSIC. Для этого, нужно отредактировать файлы hosts и hostname в директории /etc. * * * Примечание: После каждого окончания внесения изменений в каком либо файле, нажмите сочетание клавиш ctr+o для его сохранения, а затем ctr+x для выхода из файла обратно в командную строку. * * * Открываем файл hosts: 3. pi@raspberrypi:~ $ sudo nano /etc/hosts Вносим изменения в последнюю строку.
127.0.1.1 raspberrypi // в данной строке нужно изменить имя raspberrypi, в нашем случае на RPiW-MUSIC
После сохранения изменений, вернитесь в консоль и откройте файл hostname:
4. pi@raspberrypi:~ $ sudo nano /etc/hostname
Внесите изменения в него.
raspberrypi // измените имя raspberrypi на тоже имя, что вы указали в файле hosts, в нашем случае на RPiW-MUSIC
Сохраните файл и для вступления изменений в силу, перезагрузите систему. 5. pi@raspberrypi:~ $ reboot После перезагрузки системы, открыв консоль вы увидите, что приветствие с pi@raspberrypi:~ $ изменилось на pi@RPiW-MUSIC:~ $ Осталось только сменить пароли пользователей и приступить непосредственно к конфигурации звуковой платы. * * * Примечание: Дефолтный пароль для пользователя pi: raspberry * * * Первым изменим пароль пользователя pi. 6. pi@RPiW-MUSIC:~ $ passwd Вводим текущий пароль, а затем новый. Changing password for pi. Current password: текущий пароль New password: новый пароль Retype new password: повторный ввод нового пароля passwd: password updated successfully После подтверждения успешного изменения пароля, изменим и пароль пользователя root: 7. pi@RPiW-MUSIC:~ $ sudo passwd root Действия аналогичны с предыдущими. New password: новый пароль Retype new password: повторный ввод нового пароля passwd: password updated successfully Для вступления изменений в силу, перезагрузите систему: 8. pi@RPiW-MUSIC:~ $ reboot 5. Настройка звуковой платы расширения Pimoroni Pirate Audio Headphone Amp В качестве ПО, мы будем использовать альтернативное от G-a-v-r-o-c-h-e. Ссылка на него: https://github.com/G-a-v-r-o-c-h-e/PIpod-Nano Перейдя по ссылке, вы найдете все нужные файлы и описания двух вариантов установки, автоматической и ручной. Мы приведем пример автоматической установки. Для начала, клонируем нужные нам данные с GitHub. 1. pi@RPiW-MUSIC:~ $ git clone https://github.com/G-a-v-r-o-c-h-e/PIpod-Nano Клонированные файлы, располагаются в дирректории /home/pi/Pipod-Nano. * * *
Примечание: Файлы дирректории Pipod-Nano:
* * * После клонирования, создадим резервную копию Pipod-Nano в /home/pi/Backup_Pipod-Nano. Для этого создаем папку Backup_Pipod-Nano и производим копирование: 2. pi@RPiW-MUSIC:~ $ mkdir Backup_Pipod-Nano 3. pi@RPiW-MUSIC:~ $ cp -r ~/home/pi/Pipod-Nano ~/home/pi/Backup_Pipod-Nano Затем переходим в дирректорию Pipod-Nano, где изменяем права доступа файла install.sh, и запускаем его с указанием локальной дирректории в которой будут хранится пользовательские аудио файлы: * * * Примечание: Дефолтная директория расположения локальных аудио файлов: /home/pi/Music Вы можете изменить ее на любую другую, по вашему усмотрению. Обратите внимание, что окончание пути ни в коем случае не должно заканчиваться на / !!! * * *
4. pi@RPiW-MUSIC:~ $ cd Pipod-Nano 5. pi@RPiW-MUSIC:~ $ sudo chmod +x install.sh 6. pi@RPiW-MUSIC:~ $ sudo ./install.sh /home/pi/Music
После завершения установки, перезагружаем систему:
7. pi@RPiW-MUSIC:~ $ reboot
Когда система перезагрузится, дисплей звуковой платы активируется и выведет сообщение с адресом для подключения к WEB клиенту. Теперь займемся непосредственно конфигурационными файлами. Основная директория файлов конфигурации кнопок, располагается в /usr/local/lib/python3.7/dist-packages/mopidy_raspberry_gpio. Где ext.conf - это инициализация GPIO button pins, а frontend.py, __init__.py, pinconfig.py - это файлы логики, инициализации и конфигурации. Переходим в данную дирректорию и открываем файл frontend.py:
8. pi@RPiW-MUSIC:~ $ cd /usr/local/lib/python3.7/dist-packages/mopidy_raspberry_gpio 9. pi@RPiW-MUSIC:~ $ sudo nano frontend.py
В нем находим приведенные ниже строки и вносим свои значения, после чего сохраняем их. def handle_volume_up(self): volume = self.core.mixer.get_volume().get() volume += 5 // шаг увеличения громкости в % volume = min(volume, 100) // значение максимальной громкости в % self.core.mixer.set_volume(volume) def handle_volume_down(self): volume = self.core.mixer.get_volume().get() volume -= 5 // шаг уменьшения громкости в % volume = max(volume, 0 // значение минимальной громкости в % self.core.mixer.set_volume(volume) Далее переходим в дирректорию с пользовательскими файлами настройки /usr/share/PipodScripts и открываем файл buttons.py: 10. pi@RPiW-MUSIC:~ $ cd /usr/share/PipodScripts 11. pi@RPiW-MUSIC:~ $ sudo nano buttons.py Ниже приведено содержимое файла buttons.py. Вносим в него изменения, после чего сохраняем их.
#!/usr/bin/env python from gpiozero import Button import time import os
stopButton = Button(5) // кнопка отвечающая за команду shutdown -h now / пауза rebootButton = Button(16) // кнопка отвечающая за команду reboot / следующий трек #volumeUp = Button(20) // кнопка увеличения громкости звукаь #volumeDown = Button(6) // кнопка уменьшения громкости звука
while True: if stopButton.is_pressed: tmp, duration = time.time(), 0 while stopButton.is_pressed: duration = time.time() - tmp if duration > 3: os.system("shutdown now -h") if rebootButton.is_pressed: tmp, duration = time.time(), 0 while rebootButton.is_pressed: duration = time.time() - tmp if duration > 3: os.system("reboot") # if volumeUp.is_pressed: # time.sleep(.25) # while volumeUp.is_pressed: # os.system("mpc volume +5") // шаг увеличения громкости в % # time.sleep(.01)
# if volumeDown.is_pressed: # time.sleep(.25) # while volumeDown.is_pressed: # os.system("mpc volume -5") // шаг уменьшения громкости в % # time.sleep(.01)
time.sleep(1)
Теперь следует проверить наличие одной строки в файле rc.local в /etc/rc.local. 12. pi@RPiW-MUSIC:~ $ cat /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %sn" "$_IP" fi sudo python /usr/share/PIpodScripts/buttons.py & // обязательное наличие данной строки !!! exit 0 Также следует проверить наличие следующих строк в config.txt, располагающийся в /boot/config.txt. 13. pi@RPiW-MUSIC:~ $ cat /boot/config.txt dtparam=spi=on gpio=25=op,dh dtoverlay=hifiberry-dac После всего проделанного, осталось внести изменения в файл mopidy.conf в /etc/mopidy/mopidy.conf. Для этого следует внести нужные данные в него, после чего сохранить их и перезагрузить систему. * * * Примечание: client_id и client_secret вы можете получить по ссылке: https://mopidy.com/ext/spotify/ * * * 14. pi@RPiW-MUSIC:~ $ sudo nano /etc/mopidy/mopidy.conf # For information about configuration values that can be set in this file see: # # https://docs.mopidy.com/en/latest/config/ # # Run `sudo mopidyctl config` to see the current effective config, based on # both defaults and this configuration file. [raspberry-gpio] enabled = true bcm5 = play_pause,active_low,250 bcm6 = volume_down,active_low,250 bcm16 = next,active_low,250 bcm20 = volume_up,active_low,250 bcm24 = volume_up,active_low,250 [file] enabled = true media_dirs = /home/pi/Music show_dotfiles = false excluded_file_extensions = .directory .html .jpeg .jpg .log .nfo .png .txt .zip follow_symlinks = false metadata_timeout = 5000 [pidi] enabled = true display = st7789 rotation = 90 [mpd] hostname = 0.0.0.0 [http] hostname = 0.0.0.0 [audio] mixer_volume = 30 output = alsasink device=hw:sndrpihifiberry [spotify] enabled = true username = // почта на которую зарегистрирован Spotify password = // пароль от аккаунта client_id = // клиент ID client_secret = // секретный ключ bitrate = 320 // битрейт 15. pi@RPiW-MUSIC:~ $ reboot На этом базовая конфигурация звуковой платы расширения окончена. Введите в браузере вашего PC, планшета или телефона адрес указанный на дисплее, выберете нужный вам WEB клиент (по умолчанию, это Iris) и наслаждайтесь любимой музыкой. :) Отметим, тот факт, что Iris не единственный WEB клиент (все расширения Mopidy вы можете найти перейдя по ссылке: https://mopidy.com/ext/). Например если вы хотите установить Mopidy-MusicBox-Webclient, введите в консоле: pi@RPiW-MUSIC:~ $ sudo python3 -m pip install Mopidy-MusicBox-Webclient В заключении хотелось бы отметить, что данную звуковую плату стоит рассматривать не только, как конечный продукт, а скорее, как платформу для реализации разнообразных творческих проектов. Ведь она обладает отличными характеристиками и легко может быть кастомизирована с прогрмной стороны под различные потребности пользователя. P.S. Если вы планируете использовать данную звуковую плату, как основную, а не в автономном режиме. Внесите ниже приведенные изменения в файл asound.conf расположенный в etc/asound.conf:
pcm.!default{ type hw card 1 device 0 }
Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Пока нет отзывов на эту статью.
|