本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于树莓派zero的AirPlay 扬声器

发布时间:2022-05-25
分享到:

基于树莓派zero的AirPlay 扬声器

发布时间:2022-05-25
分享到:

这款 Pi Zero AirPlay 扬声器融合了现代和经典风格。

背景

在寻找围绕 Raspberry Pi Zero 构建的新项目时,我发现了 Pimoroni 的 pHAT DAC。这个小插件板为 Pi Zero 添加了音频播放功能。因为 pHAT 使用 GPIO 引脚,所以 USB OTG 端口仍可用于 wifi 加密狗。非常适合小型无线扬声器项目,从而诞生出了制作这个项目的想法!

硬件

该项目相当简单,需要以下组件:

  • 树莓派零
  • pHAT DAC
  • 单声道 2.5W D 类放大器
  • WiPi 无线加密狗
  • 两个 100 欧姆电阻
  • 扬声器(4-8 欧姆)

Raspberry Pi Zero 显然是该项目的大脑,它将运行 Shairport 软件以无线传输音乐。pHAT DAC 是一个简洁的小插件板,可为 Raspberry Pi 添加音频。它有一个插孔输出,并且可以向其添加 RCA 连接器。RCA 连接器没有预焊的事实是一个好处,因为它暴露了音频线。然后,Adafruit 的小型单声道放大器从 pHAT 获取音频并放大,从扬声器播放音频。通过 USB OTG 端口连接的 wifi 加密狗为流媒体提供无线网络连接。

我决定制作一个单声道扬声器以保持整个项目的体积不会太大,使用立体声支持制作这个项目意味着拥有第二个扬声器并用立体声扬声器替换单声道放大器。

我知道这不是将立体声转换为单声道的最佳方式,但它确实有效。我试图从软件的角度通过将立体声下混为单声道来解决这个问题,但没有完全成功。如果有人对如何以简单的方式实现这一点有提示,请随时在评论中留下!

软件

在软件方面,跟硬件也是差不多难度。

首先从 Raspberry Pi 官方网站下载的最新 Raspbian Jessie 图像开始。

使用“dd”,我将下载的图像放在 8Gb microSD 卡上,然后用它来启动 Pi Zero。

sudo diskutil list
sudo diskutil unmountDisk /dev/disk3
sudo dd if=Downloads/2015-11-21-raspbian-jessie.img of=/dev/disk3 bs=1m
sudo diskutil unmountDisk /dev/disk3 

启动后,通过选择正确的 SSID 并输入 wifi 密码在图形桌面环境中设置 wifi。将 Pi Zero 连接到网络后,可以更新软件。

sudo apt-get update
sudo apt-get upgrade 

然后是安装项目特定软件的时候了:支持 pHAT DAC 和 AirPlay 软件。

pHAT DAC
Pimoroni 网站上提供了有关如何安装和使用 pHAT DAC的教程。不过,我的做法略有不同,因为我没有禁用默认声音驱动程序。

设备树覆盖用于描述硬件。由于 pHAT DAC 使用与 HiFi Berry 相同的硬件,因此可以通过将以下行附加到配置文件来使用相同的覆盖:

pi@raspberrypi:~ $ sudo nano /boot/config.txt

# pHAT DAC
dtoverlay=hifiberry-dac 

重新启动后,我使用“aplay”应用程序列出了音频设备,它是:卡 1 - HiFi Berry 。

pi@raspberrypi:~ $ aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0 

为了使其成为音频播放的默认设置,我更新了 asound.conf 文件并将对“card 0”的所有引用替换为“card 1”。

pi@raspberrypi:~ $ sudo nano /etc/asound.conf

pcm.!default {
  type hw
  card 1
}

ctl.!default {
  type hw
  card 1

最后重新启动确保所有内容都已应用。

Shairport
Shairport 是一个 Airtunes 模拟器,允许兼容的 iOS 设备或 iTunes 将音频流式传输到运行它的设备。

在安装和运行 Shairport 之前,需要满足一些依赖项。

pi@raspberrypi:~ $ sudo apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils libmodule-build-perl 
pi@raspberrypi:~ $ git clone https://github.com/njh/perl-net-sdp.git perl-net-sdp
pi@raspberrypi:~ $ cd perl-net-sdp/
pi@raspberrypi:~/perl-net-sdp $ perl Build.PL
pi@raspberrypi:~/perl-net-sdp $ sudo ./Build
pi@raspberrypi:~/perl-net-sdp $ sudo ./Build test
pi@raspberrypi:~/perl-net-sdp $ sudo ./Build install 

处理好依赖关系后,可以安装实际的 Shairport 软件。

pi@raspberrypi:~ $ git clone https://github.com/hendrikw82/shairport.git
pi@raspberrypi:~ $ cd shairport/
pi@raspberrypi:~/shairport $ make 

在这个阶段,可以通过手动运行 shairport.pl 脚本来测试是否一切都安装正确。

pi@raspberrypi:~/shairport $ ./shairport.pl -a AirPi 

在确认一切都按预期工作后,可以对 shairport 应用程序进行守护,以使其在启动时自动启动。

pi@raspberrypi:~/shairport $ sudo make install
pi@raspberrypi:~/shairport $ sudo cp shairport.init.sample /etc/init.d/shairport
pi@raspberrypi:~/shairport $ sudo chmod +x /etc/init.d/shairport
pi@raspberrypi:~/shairport $ sudo update-rc.d shairport defaults

最后,需要修改 shairport 文件以指定 AirPlay 设备的名称。这可以是你想要的任何东西。就我而言,我选择了一些通用的东西,比如“AirPi”。

pi@raspberrypi:~/shairport $ sudo nano /etc/init.d/shairport

#DAEMON_ARGS="-w $PIDFILE"
DAEMON_ARGS="-w $PIDFILE -a AirPi" 

重新启动 Pi。Hairport 应该会自动运行。

外壳

是时候将工作中的 AirPlay 扬声器包装成漂亮的东西了,为它制作一个漂亮的外壳。

这实际上是该项目中最困难的部分。主要是因为我想用木头制作它,并且形状有点复杂。这意味着在使用斜切锯切割正确长度的零件之前做一些数学运算,然后确保切割正确的角度以便正确连接零件。由于我不是木工,而且我可以使用的工具也不是最合适的,因此结果并不总是像您期望的那样准确。

通过添加 3D 打印部件为构建赋予了一些重点:侧面板和扬声器格栅。其中一个侧面板没有粘在适当的位置,如果需要,可以将其移除,以便访问电子设备。我犹豫是否将 3D 打印部件涂成不同的颜色以获得镀铬或黄铜外观,但最终还是将这些部件保持原样。总的来说,它给构建带来了一些时髦的一面,不是吗?

这就是这个项目最终的样子:

如果您对此项目有任何想法、意见或问题,请在下方留言。

以上内容翻译自网络,原作者:Frederick Vandenbosch,如涉及侵权,可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论