树莓派音频
概述
树莓派音频板可为您现有的高保真音响或基于树莓派的设备和项目带来高品质音频。我们提供四种不同的顶部硬件连接 (HAT) 选项,适合任何使用 40 引脚 GPIO 接头的树莓派。
每块电路板都有特定的用途和功能。我们的 DAC PRO、DAC+ 和 DigiAMP+ 板可提供最高音频质量的回放,最高支持全高清音频(192kHz);而 Codec Zero 板最高支持高清音频(96kHz),并内置麦克风,是小型项目的理想选择。
功能概览
| 线路输出 | 平衡输出 | 立体声扬声器 | 单声道扬声 器 | 耳机 | 辅助输入 | 辅助输出 | 外置麦克风 | 内置麦克风 | |
|---|---|---|---|---|---|---|---|---|---|
| DAC Pro | ✓ | ✓ | ✓ | ||||||
| DAC+ | ✓ | ✓ | |||||||
| DigiAMP+ | ✓ | ||||||||
| Zero编解码器 | ✓ | ✓ | ✓ | ✓ | ✓ |
线路输出
双声道/RCA 连接器,通常为红色和白色。该输出为可变模拟信号(0-2V RMS),可连接到现有的高保真音响(前置放大器或功放),也可用于驱动内置功放的有源音箱。
平衡输出
XLR 连接器,通常为三针公连接器。在录音室和某些高端高保真系统中使用。也可用于驱动有源监听扬声器,如俱乐部或舞台上面向 DJ 或表演者的有源监听扬声器。
立体声扬声器
两组螺丝端子,用于 2×25W 扬声器。这些用于没有内置放大器的传统高保真扬声器。这些扬声器被称为无源扬声器。
单声道扬声器
一个螺丝端子,用于单个 1.2 瓦扬声器,如晶体管收音机或类似设备。
耳机
为耳机提供立体声音频的 3.5 毫米插孔。树莓派DAC 板上的耳机放大器可驱动阻抗高达 80/90Ω 的耳机。
辅助输入
双 Phono/RCA 连接器或 3.5 毫米插座。可接收高达 1V RMS 的模拟音频。可用于录制来自可变模拟源(如手机、MP3 播放器或类似设备)的音频。
辅助输出
双 Phono/RCA 连接器或 3.5 毫米插座。可输出高达 1V RMS 的模拟音频。与线路输出相比,它可以用较小的音量将音频输入放大器。
扩展麦克风
用于外接驻极体麦克风的 3.5 毫米插座。使用外部麦克风输入接口时,Codec Zero 的内置 MEMS 麦克风会自动禁用。
树莓派DAC Pro
树莓派DAC Pro HAT 是我们保真度最高的数模转换器 (DAC)。
DAC Pro 采用德州仪器 PCM5242,具有出色的信噪比(SNR),支持平衡/差分输出与唱机/RCA 线路电平输出并行。它还包括一个专用耳机放大器。DAC Pro 由树莓派通过 GPIO 接口供电。
作为 DAC Pro 的一部分,树莓派的 USB 和以太网端口上方有两个三针针座(P7/P9),供可选配的 XLR 板使用,允许差分/平衡输出。
引脚说明
| PIN | 说明 |
|---|---|
| P1 | 模拟输出(0-2V RMS),携带 GPIO27、MUTE 信号(耳机检测)、左右音频和左右接地。 |
| P6 | 耳机插座信号(1:左,2:接地,3:右,4:接地,5:检测)。 |
| P7/9 | 差分(0-4V RMS)输出(P7:左,P9:右)。 |
| P10 | 备用 5V 输入,并联为树莓派供电。 |
可选XLR板
Pi-DAC PRO 上有一个 6 针 接头,可用于选配 XLR 板,通过 Pi USB/以太网端口上方的 XLR 插座提供差分/平衡输出。
XLR 连接器用于工作室和某些高端高保真系统。它还可用于驱动迪斯科舞厅或舞台上使用的有源 "监听" 扬声器。
树莓派DAC+
树莓派DAC+ 是一款高分辨率音频输出 HAT,可提供 24 位 192kHz 数字音频输出。
DAC+ 中使用了德州仪器公司的 PCM5122,可将模拟音频传输到设备的唱头连接器。它还支持专用耳机放大器,并通过 GPIO 针座由树莓派供电。
引脚说明
| PIN | 说明 |
|---|---|
| P1 | 模拟输出(0-2V RMS)、GPIO27、MUTE 信号(耳机检测)、左右音频和左右接地。 |
| P6 | 耳机插座信号(引脚 1:左、2:接地、3:右、4:接地、5:检测)。 |
树莓派DigiAMP+
通过树莓派DigiAMP+,您可以连接 2 个输出功率高达 35W 的无源立体声扬声器,使其成为基于树莓派的高保真音响系统的理想之选。
DigiAMP+ 使用德州仪器公司的 TAS5756M PowerDAC。
必须由 外部电源供电。它需要 12-24V 直流电源(推荐使用 XP Power VEC65US19 电源)。
DigiAMP+ 专为 Raspberry Pi 3 及更早型号的设备设计。若将其与 Raspberry Pi 4 或更新型号的设备配合使用,请使用外接电源供电的 USB 集线器,以防止 USB 端口给设备增加额外负载。若未采取此措施,可能会导致出现低电量警告。
DigiAMP+ 的电源桶形连接器为 5.5 毫米 x 2.5 毫米。
开机时,放大器默认为静音(静音 LED 亮起)。软件负责静音状态和 LED 控制(树莓派GPIO22)。
DigiAMP+ 可并联为树莓派和 DigiAMP+ 供电,通过 GPIO 接口为树莓派提供 2.5 安培的 5.1V 电压。
使用 DigiAMP+ 时,请勿向树莓派自身的电源输入供电。
引脚说明
| PIN | 说明 |
|---|---|
| P5 | 用于硬接线安装的备用电源输入(必须注意极性) |
| P8 | TAS5756m 内部 GPIO1/2/3 |
扬声器端子极性
极性信息印在扬声器端子上方的丝印标记上。
从电路板顶部向下看,且电源连接器位于左侧时,两个端子的极性相同:左侧为"−",右侧为"+"。
树莓派编解码器Zero
树莓派Codec Zero 是一个树莓派Zero 大小的音频 HAT。它在树莓派和 Codec Zero 的板载 Dialog Semiconductor DA7212 编解码器之间传输双向数字音频信号(I2S)。Codec Zero 支持一系列输入和输出设备。
- 高性能 24 位音频编解码器
- 支持 8-96kHz 之间的常用音频采样率
- 内置微型机电麦克风 (Mic2)
- 单声道驻极体麦克风(麦克风 2 左侧)
- 麦克风 2 插入检测时自 动禁用 MEMS
- 支持额外的(不适合)单声道驻极体麦克风(右 Mic1)
- 立体声辅助输入通道(AUX IN)- PHONO/RCA 连接器
- 立体声辅助输出通道(耳机/AUX OUT)
- 灵活的模拟和数字混音路径
- 用于自动电平控制(ALC)的数字信号处理器(DSP)
- 五段均衡器
- 单声道线路输出/微型扬声器驱动器:1.2W/5V,THD<10%,R=8Ω
Codec Zero 包括一个 EEPROM,必要时可用于自动配置 Linux 环境。它集成了 MEMS 麦克风,可通过 3.5 毫米插座和单声道扬声器(1.2W/8Ω)使用立体声麦克风输入。
除了绿色(GPIO23)和红色(GPIO24)LED 灯外,还提供了一个可编程触感按钮(GPIO27)。
引脚说明
| PIN | 说明 |
|---|---|
| P1/2 | 必要时支持外部 PHONO/RCA 插口。P1:辅助输入,P2:辅助输出。 |
| P1 | 针脚 1 为方形。 |
Codec Zero 是对讲机、智能门铃、古董收音机或智能扬声器等小型项目的理想设计起点。
配置
所有树莓派音频板都包含一个预编程 EEPROM。树莓派音频板设计为即插即用;树莓派OS 能够自动检测和配置。在树莓派OS中,右键单 击屏幕右上角的音频设置,可以在板载音频设置和 HAT 音频设置之间进行切换:
有许多适用于树莓派的第三方音频软件应用程序支持我们音频板的即插即用功能。这些软件通常是无显示器使用。它们可以通过 PC 或 Mac 应用程序进行控制,也可以通过安装在树莓派上的网络服务器进行控制,并通过网页进行交互。
如果您需要自己配置树莓派操作系统,也许您正在运行自己的无显示器系统,而且没有通过图形用户界面进行控制的选项,那么您需要将树莓派音频板作为树莓派操作系统中的主音频设备,禁用树莓派的板载音频设备。这可以通过编辑 /boot/firmware/config.txt 文件来实现。使用通过 SSH 连接到树莓派的终端会话,运行以下命令编辑文件:
sudo nano /boot/firmware/config.txt
找到文件中的 dtparam=audio=on 行,在该行开头加上 # 号,将其注释掉。程序将忽略在 # 符号之后写入的任何内容。现在,你的 /boot/firmware/config.txt 文件应该包含以下条目:
#dtparam=audio=on
先按 CTRL+X、再按 Y,然后 Enter 保存,最后重启设备使设置生效。
sudo reboot
或者,也可以直接在插入电脑的树莓派microSD 卡上编辑 /boot/firmware/config.txt 文件。使用默认的文件管理器,打开卡上的 /boot/firmware/ 卷,使用适当的文本编辑器编辑 config.txt 文件,然后保存文件,弹出 microSD 卡并重新插入树莓派。
连接HAT
树莓派音频板可连接到树莓派的 40 针接头。它们设计为使用随附的电路板支座和螺钉支撑在树莓派上。树莓派音频板无需焊接即可正常工作,除非您使用硬接线连接特定连接器,如 DAC Pro 上的 XLR(外部线路回传)连接。
我们提供了所有必要的安装硬件,包括垫片、螺钉和连接器。在添加音频板之前,应将 PCB 垫片拧紧到树莓派上。然后将剩余的螺丝从上方拧入垫片。
硬件版本
音频卡有多个版本。具体版本决定了配置所需的操作。较旧的 IQaudIO 品牌板的 PCB 板为黑色。较新的树莓派品牌板采用绿色印刷电路板。这些电路板的电气性能相当,但 EEPROM 内容不同。
连接 HAT 并接通电源后,检查音频卡上的电源 LED 是否亮起(如果有的话)。例如,Codec Zero 有一个标有 "PWR"的 LED。
确定音频卡有电后,使用以下命令检查电路板的版本:
grep -a . /proc/device-tree/hat/*
如果供应商字符串显示 "Raspberry Pi Ltd.",则无需采取进一步行动(但请参阅下文了解额外的 Codec Zero 配置)。如果显示 "IQaudIO Limited www.iqaudio.com",则需要进行下文概述的额外 config.txt 设置。如果显示 "No such file or directory (无此类文件或目录)",则表示 HAT 未被检测到,但这些 config.txt 设置仍可使其正常工作。
# 一些防止加载正常 HAT 覆盖层的神奇设置
dtoverlay=
# 然后根据机型选择以下设置之一:
dtoverlay=rpi-codeczero
dtoverlay=rpi-dacplus
dtoverlay=rpi-dacpro
dtoverlay=rpi-digiampplus
额外的Codec Zero配置
树莓派Codec Zero 板使用 Dialog Semiconductor DA7212 编解码器。它可以通过内置 MEMS 麦克风、立体声唱机插座(AUX IN)或两个单声道外置驻极体麦克风录制音频。播放则通过立体声唱机插座(AUX OUT)或单声道扬声器连接器进行。
每个输入和输出设备都有自己的混音器,可以独立调节音频电平和音量。编解码器本身还有其他混音器和开关,可将输出混合为单声道,用于单扬声器输出。信号还可以反转;有一个五段均衡器可以调整某些频段。这些设置可以使用 AlsaMixer 进行交互式控制,也可以通过编程进行控制。
AUX IN 和 AUX OUT 均为 1V RMS。可能需要调整 AUX IN 的混频器,以确保输入信号不会使 ADC 饱和。同样,也可以调整输出混频器,以获得最佳输出。
GitHub 上提供预配置脚本(可加载 ALSA 设置),包括
- 单声道 MEMS 麦克风录音、单声道扬声器回放
- 单声道 MEMS 麦克风录音、单声道 AUX 输出回放
- 立体声 AUX IN 录音、立体声 AUX OUT 回放
- 立体声 MIC1/MIC2 录音,立体声 AUX 输出回放
每次树莓派开机时,Codec Zero 都需要知道正在使用这些输入和输出设置中的哪一个。使用树莓派上的终端会话,运行以下命令下载脚本:
git clone https://github.com/raspberrypi/Pi-Codec.git
如果未安装 git,运行以下命令进行安装:
sudo apt install git
以下命令将设置设备使用板载 MEMS 麦克风和扬声器播放输出:
sudo alsactl restore -f /home/<username>/Pi-Codec/Codec_Zero_OnboardMIC_record_and_SPK_playback.state
该命令可能会导致错误信息,包括以下内容:
- 导入 hw 失败
- 卡没有状态
在大多数情况下,这些警告是无害的,可以放心地忽略它们。
不过,以下警告可能表示硬件故障:
- 远程 I/O 错误
在 Linux 中,以下警告表示内核无法与 I2C 设备通信:
- 远程 I/O 错误 (
REMOTEIO)
为了使项目在开机时以所需设置运行,请编辑 /etc/rc.local 文件。该文件的内容在每次启动过程结束时运行,因此非常适合用于此目的。编辑文件
sudo nano /etc/rc.local
在 exit 0 行上方添加选定的脚本命令,然后按 Ctrl X、Y 和 Enter 保存。根据你选择的设置,文件现在应该类似于下面的样子:
#!/bin/sh
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sudo alsactl restore -f /home/<username>/PiCodec/Codec_Zero_OnboardMIC_record_and_SPK_playback.state
exit 0
先按 Ctrl X、再按 Y,然后 Enter 保存,最后重启 设备使设置生效:
sudo reboot
如果您在无显示器环境中使用树莓派和 Codec Zero,还需要最后一步才能将 Codec Zero 设置为默认音频设备,而无需访问桌面上的图形用户界面音频设置。我们需要在主文件夹中创建一个小文件:
sudo nano .asoundrc
在文件中添加以下内容:
pcm.!default {
type hw
card Zero
}
按住 Ctrl X、Y 和 Enter 保存,然后再次重启以完成配置:
Raspberry Pi OS 等现代 Linux 发行版通常使用 PulseAudio 或 PipeWire 进行音频控制。这些框架能够混合和切换多个音源的音频。它们为音频应用程序提供了高级 API。许多音频应用程序默认使用这些框架。
只有在音频应用程序需要时才创建 ~/.asoundrc :
- 直接与 ALSA 通信
- 在没有 PulseAudio 或 PipeWire 的环境中运行
该文件会干扰用户界面对底层音频资源的查看。因此,我们不建议在运行 Raspberry Pi OS 桌面时创建 ~/.asoundrc。
如果该文件存在,用户界面可能会自动清理并删除。
sudo reboot
使DigiAMP+静音和解除静音
DigiAMP+ 的静音状态由树莓派上的 GPIO22 切换。最新的音频设备树通过附加参数支持取消 DigiAMP+ 静音。
首先是内 核模块加载时的 "一次性" 静音。
对于树莓派板
dtoverlay=rpi-digiampplus,unmute_amp
对于 IQaudIO 板
dtoverlay=iqaudio-digiampplus,unmute_amp
当客户端打开 ALSA 设备时,解除放大器静音。当 ALSA 设备关闭时,静音并延迟 5 秒。(在五秒关闭窗口内重新打开设备将取消静音)。
适用于树莓派板:
dtoverlay=rpi-digiampplus,auto_mute_amp
对于 IQaudIO 板
dtoverlay=iqaudio-digiampplus,auto_mute_amp
如果不想通过设备树控制静音状态,也可以编写自己的解决方案。
音箱启动时会静音。要解除音箱静音
sudo sh -c "echo 22 > /sys/class/gpio/export"
sudo sh -c "echo out >/sys/class/gpio/gpio22/direction"
sudo sh -c "echo 1 >/sys/class/gpio/gpio22/value"
再次将放大器静音:
sudo sh -c "echo 0 >/sys/class/gpio/gpio22/value"