树莓派 airplay shairport-sync 改造书架音箱 无线 实现自动通断电

2019-02-27 13:32:13 12点赞 46收藏 10评论


前言

之前看了品胜airplay的文章以后萌生了改老的漫步者音箱为无线的想法。35块钱入手,测试了一下,有下面几个痛点:

  1. 无线桥接状态下只能把手机连到品胜wifi下才能airplay,有一定几率会失败。

  2. 有线连接到局域网之后,手机能找到airplay,但是没有办法投放。

  3. 改造成无线以后还得手动控制音箱电源,有点麻烦。

于是想到了自己还有一个跑着hass的树莓派,正好接在书架上。

很容易就找到了教程,安装好之后感觉音质也还过得去。但是还有一个问题,还是得手动给音箱通断电。

需要安装教程的直接到最后。

开始折腾

看了以下安装的插件shairport-sync,c语言写的。树莓派可以通过wiringPi控制gpio pin的高低电平。理论上只要在shairport-sync代码里面找到airplay连接和断开的地方,插入调用wiringPi的代码就可以实现airplay连接输出高电平,airplay断开输出低电平。手头上刚好有个继电器,开搞。

虽然大学时候c语言拿的满分,但是写了那么多年java几乎不记得c了。最简单的办法就是看日志,airplay连接断开肯定有日志:

cd /usr/local/bin/

./shairport-sync start -vv

开启日志输出,发现连上以后总有这一句:

New RTSP connection from [xxxx:f772:904:0:e516:9d46:c35:f78f]:56734 to self at [xxxx:f772:904:0:64f3:36a7:4d32:c28f]:5000 on conversation thread 1.

断开的时候的日志:

Connection 1: RTSP thread terminated.

研究了一下rtsp.c首先写一个初始化wiringPi的方法,在shairplay服务启动的时候初始化:

初始化wiringPi初始化wiringPi

接下来就很简单了,通过日志关键字找到airplay连接时候代码的位置:

在后面加上gpio输出高电平的代码在后面加上gpio输出高电平的代码

找到airplay断开连接的日志:

在后面加上gpio输出低电平的代码在后面加上gpio输出低电平的代码

gpio readall 查看gpio端口,可以看到gpio pin1 对应物理端口12,顺便可以看到物理端口1是acc 14是gnd,后面接继电器会用到:

树莓派 airplay shairport-sync 改造书架音箱 无线 实现自动通断电

连接继电器,树莓派1,12,14连继电器vcc,in,gnd:

连接继电器连接继电器

220v电路,自制插座,火线接继电器:

树莓派 airplay shairport-sync 改造书架音箱 无线 实现自动通断电

丑了点丑了点

总结

几行代码折腾了俩晚上,shairport-sync已经fork,commit了继电器相关代码,有兴趣的可以在这里安装,教程写的很详细。

展开 收起
10评论

  • 精彩
  • 最新
  • 说句实话,如果追求性价比,树莓派真的不是好选择,坑,不如买成品,不过如果为了学习,或者是折腾,那就另算了,能学到不少知识,虽然没啥用(IT行业真是知识更新很快的行业)

    校验提示文案

    提交
    好,好在开源,坏也坏在开源。IT行业知识更新是很快,可是更新的不是语言,而是框架和库,思想是想通的。

    校验提示文案

    提交
    收起所有回复
  • 佩服!买了一套传感器后,没进一步折腾……

    校验提示文案

    提交
    折腾是一种乐趣

    校验提示文案

    提交
    收起所有回复
  • pi的供电怎么解决?

    校验提示文案

    提交
    5v2a的电源啊,还能咋地

    校验提示文案

    提交
    充电宝带的动

    校验提示文案

    提交
    收起所有回复
  • arduino是不是成本更低些

    校验提示文案

    提交
  • 想实现多个房间的音箱同步,不知道除了树莓派以外还有什么更好的解决方案吗?

    校验提示文案

    提交
  • 用很早买的插有线双耳耳机的蓝牙改成蓝牙音箱 音箱就是普通电脑2in1 也不知道多少年了 音箱在哪都不知道和

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
相关好价
最新文章 热门文章
46
扫一下,分享更方便,购买更轻松