快捷导航
 
树莓派 airplay shairport-sync 改造书架音箱 无线 实现自动通断电
VIEW CONTENTS

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

2019-4-9 00:00| 发布者: 智能硬件专家| 查看: 299| 评论: 0|原作者: 智能硬件专家|来自: 网络

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

小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外100金币奖励。详细活动规则,请猛戳此链接!


前言

之前看了品胜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了继电器相关代码,有兴趣的可以在这里安装,教程写的很详细。




Tab标签:

鲜花

握手

雷人

路过

鸡蛋

最新评论

推荐快讯更多

乐居居-让生活更智能!

  • 反馈建议:153890879@qq.com
  • 客服电话:
  • 工作时间:周一到周五

云服务支持

精彩文章,快速检索

关注我们

Copyright乐居居  Powered by©  备案号:湘ICP备15009499号-1