【树莓派真好玩】十:实战操作 (基于AirPlay的无线音箱)& 展望

上篇文章我们介绍了基于DHT11的温湿度测量以及如果使用有源蜂鸣器,并且实现了超过温湿度阈值时蜂鸣器报警等功能。这节我们来用树莓派4B+普通的有线音箱来实现一个基于AirPlay的无线音箱。

WeChat Image_20211120121108.jpg

最近一些年以来,新出品的音箱都带无线功能,可以在手机上通过WIFI或者蓝牙连接音箱播放音乐,不用插音频线,相当省事了。

可是对于一些老音箱而言就很尬尴了,尤其是一些当初价格很昂贵、音质非常棒的音箱,丢掉有些可惜,留着吧还没人家无线音箱的先进功能。不过现在不要怕了,我来手把手教你用树莓派将老旧音箱改造成支持AirPlay的无线音箱。

要实现这个目的有很多种方案,经过我的测试,最稳妥的方案还是当属使用shairport-sync

连接

连接没啥说的啦,就是用音频线将有源音箱连接到树莓派的耳机孔。然后打开音箱电源,将音量调整到适中就可以啦。

APT安装版

首先我测试的是使用apt直接安装软件包:

sudo apt install shairport-sync

安装完成后,使用如下指令启动服务:

sudo service shairport-sync start

然后在苹果设备(IPhone, IPad mini)上使用酷我音乐播放歌曲,会发现个选择音箱的选项,点击后会发现除了设备本身外,多了一个音箱,我们选择多出来的音箱,声音就从我们的音箱里而不是设备本身传出来啦。

不过测试几次后,发现 shairport-sync服务没法重新启动了:

service shairport-sync restart
Job for shairport-sync.service failed because a fatal signal was delivered to the control process. See "systemctl status shairport-sync.service" and "journalctl -xe" for details.

原本以为是我操作问题,结果去 shairport-sync的github上一看,原来是对应版本的软件存在BUG,详情可以参考:

Can not start shairport-sync as service #922

我看了一下安装的版本:

shairport-sync -V

返回如下信息:

3.2.2-OpenSSL-Avahi-ALSA-pa-dummy-stdout-pipe-soxr-convolution-metadata-sysconfdir:/etc

和github对应issue种,提到的版本一样,作者建议从源码自己编译安装最新版本:

The most satisfactory way to deal with the problem, IMHO, is to build and install the latest release from source, using this guide.

好吧,看来是没法偷懒了。

从源码编辑

从源码编译可以看官方github提供的教程:Simple Installation Instructions

编译前准备

首先更新一下系统:

sudo apt update
sudo apt upgrade

如果使用的是WIFI,那么WIFI的电源管理影响软件的使用(低耗电模式可能会不影响 AirPlay请求等)

sudo iwconfig wlan0 power off

重启树莓派:

sudo reboot

清理旧版本

删除之前的安装的shairport-sync,使用如下指令查找:

which shairport-sync

删除之:

sudo rm -rf /usr/bin/shairport-sync

删除以下文件(如有):

sudo rm /etc/systemd/system/shairport-sync.service
sudo rm /lib/systemd/system/shairport-sync.service
sudo rm /etc/init.d/shairport-sync
sudo rm /etc/dbus-1/system.d/shairport-sync-dbus.conf
sudo rm /etc/dbus-1/system.d/shairport-sync-mpris.conf

重启:

sudo reboot

编译安装

安装编译时的依赖库和工具

sudo apt install --no-install-recommends build-essential git xmltoman autoconf automake libtool libpopt-dev libconfig-dev libasound2-dev avahi-daemon libavahi-client-dev libssl-dev libsoxr-dev

clone软件源码并编译安装:

git clone https://github.com/mikebrady/shairport-sync.git
cd shairport-sync
autoreconf -fi
./configure --sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl --with-systemd
make

相应的--with-*可以参考这里

将编译好的程序安装到系统中:

sudo make install

一些设置

当测试一切正常后,我们可以使用如下指令让shairport-sync随系统一起启动:

sudo systemctl enable shairport-sync

我们还可以编辑/etc/shairport-sync.conf来进行一些更加细节的设置,比如说设置一个更加友好的名字,设置密码等等。大家可以使用如下指令来查看具体内容:

man shairport-sync

(/etc/shairport-sync.conf文件中已经带了很完备的注释,大家也可以直接参考文件注释)。

测试

使用IPhone 手机,打开酷我音乐等音乐客户端,播放一曲《伤心太平洋》,哎,我有多么伤心啊。

注意到右上那个小四方下边带个正三角的图标没有:
WeChat Image_20211120121214.png

点击上图中的那个图标,就会出现“隔空播放”选项,默认是使用本机设备(iPhone):
WeChat Image_202111201212143.png

选择Raspberrypi,美妙的音乐令人伤感的音乐就从音箱里出来啦。
WeChat Image_202111201212142.png

展望

至此,我们【树莓派真好玩】系列文章要告一段落啦,其实树莓派远比我们介绍的要好玩要强大数百倍,除了当作普通Linux电脑使用,还可以做很多好玩的事情。

比如说我们可以用树莓派+动态DNS在家搭建一个个人博客网站,这样就可以省一大笔租用虚拟主机或者VPS等开销了。

或者用树莓派DIY一个NAS,把自己常用的照片、软件、文件都放在上边,便于统一管理和访问,不用去买数千上万的专业NAS设备了。

当然了,我们还可以用树莓派去DIY一个3D打印机、四轴飞行器、功能强大又好玩的机器人等等......

总之,只要你想象力够丰富,动手能力又强,又善于利用网络查找资源&寻求帮助,树莓派会带给你无线可能。奈何本人精力和水平都有限,不能面面俱到地介绍了。

相关链接

Sort:  

这个系列正式完结啦
也松了一口气,实在是弄得太累了

其实如果仅仅是玩起来还是很容易的,毕竟各种各样的PI接触了无数年
但是要玩明白还要写出来,真的是很难很累
让我想起一句话:学,然后知;教,然后知困。

或许大概还是自己水平不到位,“教”起来就比较“困”啦😭