如何利用树莓派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 加密狗为流媒体提供无线网络连接。
我决定制作一个单声道扬声器以保持整个项目的体积不会太大,使用立体声支持制作这个项目意味着拥有第二个扬声器并用立体声扬声器替换单声道放大器。
我知道这不是将立体声转换为单声道的最佳方式,但它确实有效。我试图从软件的角度通过将立体声下混为单声道来解决这个问题,但没有完全成功。如果有人对如何以简单的方式实现这一点有提示,请随时在评论中留下!
软件
在软件方面,跟硬件也是差不多难度。
首先从 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 打印部件涂成不同的颜色以获得镀铬或黄铜外观,但最终还是将这些部件保持原样。总的来说,它给构建带来了一些时髦的一面,不是吗?
这就是这个项目最终的样子:

Linner聆耳NC25主动降噪体验 到底好不好用
华为折叠屏将采用京东方供应的OLED屏幕
SUSE已经完成与投资公司EQT之间的交易,成为业界最大的独立开源公司
2020年11月我国HEV乘用车销量合计约为4.4万辆,同比增长54%
关于芯片量产工程师需要掌握的知识概览
如何利用树莓派zero实现AirPlay扬声器的设计
曝E3 2020已决定取消 或采取线上直播形式
AT32讲堂046 | 雅特力AT32 MCU USB设备库的架构和使用方法
在视频应用的新领域,CPU和FPGA或将胜过GPU
业内首个小程序AR导航上线
京东无人机运营调度中心已建设完成
LTM8028负载调节性能的分析
基于StratixⅡEP2S30484C5芯片的乘除法和开方运算算法的实现
iPhone8全新设计,售价达6900元
智能制造发展过程中仍需破除的一系列难题
浅析DCDC电路设计技巧和调制方式
模式识别技术有哪些_模式识别技术的应用
pcb中的泪滴指的是什么 pcb泪滴怎么设计出来的
华为是5G电信设备领域的领导者美国限制华为只会伤害美国的利益
升级ios10.3正式版后出现商店乱码怎么办?苹果神速放出ios10.3.3测试版,值得更新吗?