上篇文章我们介绍了基于DHT11的温湿度测量以及如果使用有源蜂鸣器,并且实现了超过温湿度阈值时蜂鸣器报警等功能。这节我们来用树莓派4B+普通的有线音箱来实现一个基于AirPlay的无线音箱。
最近一些年以来,新出品的音箱都带无线功能,可以在手机上通过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,详情可以参考:
我看了一下安装的版本:
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 手机,打开酷我音乐等音乐客户端,播放一曲《伤心太平洋》,哎,我有多么伤心啊。
注意到右上那个小四方下边带个正三角的图标没有:
点击上图中的那个图标,就会出现“隔空播放”选项,默认是使用本机设备(iPhone):
选择Raspberrypi,美妙的音乐令人伤感的音乐就从音箱里出来啦。
展望
至此,我们【树莓派真好玩】系列文章要告一段落啦,其实树莓派远比我们介绍的要好玩要强大数百倍,除了当作普通Linux电脑使用,还可以做很多好玩的事情。
比如说我们可以用树莓派+动态DNS在家搭建一个个人博客网站,这样就可以省一大笔租用虚拟主机或者VPS等开销了。
或者用树莓派DIY一个NAS,把自己常用的照片、软件、文件都放在上边,便于统一管理和访问,不用去买数千上万的专业NAS设备了。
当然了,我们还可以用树莓派去DIY一个3D打印机、四轴飞行器、功能强大又好玩的机器人等等......
总之,只要你想象力够丰富,动手能力又强,又善于利用网络查找资源&寻求帮助,树莓派会带给你无线可能。奈何本人精力和水平都有限,不能面面俱到地介绍了。