如何利用树莓派zero实现AirPlay扬声器的设计

描述

这款 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 加密狗为流媒体提供无线网络连接。

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

AirPlay

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

软件

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

首先从 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 扬声器包装成漂亮的东西了,为它制作一个漂亮的外壳。

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

AirPlay

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

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

AirPlay

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分