Плата Raspberry Pi Zero W, также как и другие платы семейства Raspberry Pi, испытывает недостаток разъёма аудио, поэтому для добавления ей функционала аудио может быть использована USB звуковая карта и микрофон. Как известно, плата Raspberry Pi Zero W не имеет аппаратного обеспечения для работы с аудио сигналами, поэтому целесообразно использовать USB звуковую карту (или ее аналог) вместе с аналого-цифровым-преобразователем (АЦП) для придания ей этого функционала.
В данной статье мы рассмотрим подключение к плате Raspberry Pi Zero W USB звуковой карты и микрофона и будем использовать программные средства ALSA для тестирования работы аудио устройств, подключенных к плате.
Необходимые компоненты
- Плата Raspberry Pi Zero W (купить на AliExpress).
- USB звуковая карта (купить на AliExpress).
- Монитор.
- USB хаб.
- OTG кабель.
- Micro HDMI кабель.
- Micro SD карта.
- Громкоговоритель (Speaker).
- Микрофон.
Прежде чем приступать к реализации данного проекта, убедитесь в том, что на плату Raspberry Pi Zero W установлена операционная система и у вас есть возможность удаленного управления платой по протоколу SSH – для работы с данным протоколом мы будем использовать приложение MobXterm, однако вы можете использовать для этой цели любую другую аналогичную программу (например, putty).
USB звуковая карта
USB звуковая карта (USB Sound Card, также известна как USB-аудиоадаптер) осуществляет конвертацию интерфейса USB в разъем 3.5 мм для микрофона и в разъем для подключения наушников (громкоговорителя). Ее внешний вид показан на следующем рисунке.
Мы будем использовать USB звуковую карту (USB-аудиоадаптер) для подключения к плате Raspberry Pi Zero W микрофона и громкоговорителя. Адаптер головных телефонов (Earphone Splitter Adapter) 3.5mm будет преобразовывать один USB разъем в 2 разъема типа female jacks (мама), и, таким образом, давая возможность использовать USB для добавления входа моно микрофона и стерео выхода на компьютер.
Особенности USB звуковой карты:
- один USB разъем типа "папа";
- два разъема 3.5mm (на 3 позиции) типа Female Jacks (1 – для микрофона, 1 – для головных телефонов);
- подходит для головных телефонов с микрофоном;
- устраняет ограничение некоторых портативных USB портов, превращая USB порт в 2 раздельных аудио разъема 3.5mm, что позволяет подключать одновременно и микрофон, и внешние громкоговорители;
- позволяет использовать старые аудио устройства совместно с современными компьютерами;
- может использоваться с любыми устройствами, которые поддерживают работу с USB разъемами.
Подключение USB звуковой карты к плате Raspberry Pi Zero W
Подключите монитор к вашей плате Pi Zero W, используя кабель micro-HDMI, и подключите к плате OTG кабель. После этого подключите к плате Raspberry Pi Zero W USB звуковую карту с помощью USB хаба. Подключите к USB звуковой карте громкоговоритель и микрофон используя разъемы 3.5 mm. На следующем рисунке показана полная схема соединений нашего проекта.
После этого подайте питание на плату Raspberry Pi Zero W с помощью кабеля micro-USB.
Теперь вам нужно сконфигурировать чипсет (chipset) вашего устройства. Доступно 4 возможных типа данного чипсета (ваше устройство должно поддерживать один из них):
1 - CM108 Type
2 - CM-Headphone Type
3 - CM109 Type
4 - GeneralPlus
Подключите USB звуковую карту к вашей плате Raspberry Pi Zero W с помощью USB кабеля и OTG кабеля. После этого произведите загрузку операционной системы платы обычным способом. Затем измените настройки аудио с разъема 3.5 mm jack на USB в настройках платы.
Далее напечатайте в командной строке команду dmesg | grep cm109 и если у вас чипсет CM109, то вы увидите ряд строк, извещающих об этом. Если это не сработало, то попробуйте команду dmesg | grep Headphone. Если после этого появится драйвер "The C-Media USB Headphone Set", то у вас чипсет CM-headphone. Если и в этот раз ничего не появилось, то попробуйте команду dmesg | grep C-Media. Появится несколько строк в терминале о C-Media, но среди них не будет упоминания о драйвере cm109 – это будет указывать на то, что у вас чипсет CM108. Если снова ничего не появилось, то напишите в окне терминала команду dmesg | grep General и вы увидите несколько строк с упоминанием в них "GeneralPlus" – это будет указывать на то, что у вас чипсет GeneralPlus. На представленном ниже рисунке можно увидеть, что у автора данного проекта заработала только одна команда из перечисленных, а остальные не заработали. Таким образом он определил что у него чипсет C-Media (C-108). Поэтому далее он делал настройки для этого чипсета.
Введите в окне терминала команду lsusb. После этого на экране вы должны увидеть следующую картину:
После этого введите в окне терминала команду aplay –l, в результате ее выполнения вы должны увидеть список устройств, способных воспроизводить звук.
Установка программного обеспечения ALSA на Raspberry Pi Zero W
ALSA (advanced linux sound architecture) – это продвинутая архитектура управления звуком на основе linux. Мы будем устанавливать драйвер ALSA на нашу плату Raspberry Pi Zero W. При помощи изменения системного файла “alsa.conf” звуковое устройство USB может быть установлено как звуковое устройство по умолчанию. Введите в окне терминала команду sudo nano /usr/share/alsa/alsa.conf, после ее исполнения вы должны увидеть на экране следующие две строки:
1 2 |
defaults.ctl.card 0 defaults.pcm.card 0 |
Измените звуковую карту (audio card) 0 на звуковую карту 1, поскольку карта 0 используется для аудио по умолчанию, а карта 1 используется для встроенного аудио.
1 2 |
defaults.ctl.card 1 defaults.pcm.card 1 |
После этого введите в окне терминала команду sudo nano /etc/asound.conf, в созданный этой командой файл скопируйте следующие ниже приведенные строки кода и затем сохраните этот файл. После этого ваше PCM аудио устройство и карта 1 (card 1) станут аудио устройствами по умолчанию.
1 2 3 4 5 6 7 8 |
pcm.!default { type hw card 1 } ctl.!default { type hw card 1 } |
Таким образом мы сконфигурировали ALSA для нашей операционной системы. Теперь нам нужно перегрузить плату с помощью команды sudo reboot и снова залогиниться в ней. Попробуем сначала протестировать подключенный к плате громкоговоритель (колонку), для этого введите команду:
1 |
speaker-test -c2 |
В результате выполнения данной команды звуковая карта должна проиграть звук белого шума (white noise) через правую и левую колонки.
Теперь попробуем проиграть с помощью команды speaker-test звуковой файл. Обратите внимание на то, что звуковой файл обязательно должен быть типа WAV, не MP3. Введите следующую команду для тестирования фронтального и центрального аудио устройства:
1 |
speaker-test -c2 --test=wav -w /usr/share/sounds/alsa/Front_Center.wav |
После этого попробуем записать звук с помощью адаптера типа CM-headphone. Мы можем записать звук с помощью следующей команды:
1 |
arecord --device=hw:1,0 --format S16_LE --rate 44100 -c1 sample.wav |
В результате этой команды в файл home.wav будет записан 16-битный (S16_LE) звук с битрейтом 44100 Hz (--rate 44100) в формате моно (-c1). Записанный звук воспроизведется в виде эха в громкоговорителе. Если вы добавите в записанную команду параметр -V mono, то в результате ее выполнения на экране появится маленький измеритель уровня (VU metre).
Воспроизвести записанный аудио файл можно с помощью следующей команды:
1 |
aplay --device=plughw:1,0 test.wav |