树莓派:通过红外控制蓝牙音乐播放

【参考资料】
树莓派学习笔记——UART使用
linux下串口调试(只用shell)

本文的目的是在上一篇文章(树莓派红外遥控测试)的基础上,用红外控制树莓派,向蓝牙模块发送串口指令,进而控制蓝牙模块的音乐播放。

【准备材料】

  1. 树莓派一个
  2. 红外接收器(本文用的是VS1838B)
  3. 红外遥控器
  4. 蓝牙模块(BK8000L)
  5. 杜邦线若干条

【详细步骤】
1.将所有配件连接起来
这是上次用到的遥控器和红外接收器(VS1838B):
红外遥控器
红外接收器VS1838B
还有本次用到的蓝牙模块(BK8000L):
蓝牙模块
树莓派引脚编号参考:
树莓派引脚参考图
将蓝牙模块的串口接到树莓派的串口上面,TX接RX,RX接TX,VCC接3.3V,GND接GND,所有配件连接起来后:
配件连接图
2.修改树莓派系统文件
因为树莓派的串口默认用来远程登录用,所有先修改系统文件,将其功能恢复。
【1】修改 /boot/cmdline.txt
执行

1
sudo leafpad /boot/cmdline.txt

删除加粗部分:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
最终变为:

1
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

网上还说要修改 /etc/inittab,不过在我的系统里面没有这个文件,不知道为什么。
网上说要注释掉最后一行内容:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

最后重启树莓派。

2.测试蓝牙模块串口通信
根据模块资料:

1
2
3
4
5
6
7
8
控制指令格式:AT+<CMD>[<param>]\r\n
数据反馈格式:<IND>[<param>]\r\n
说明:控制指令是控制主机给蓝牙的控制命令,以“AT+”开始后面紧跟<CMD>控制
指令,如果该指令带参数,则紧跟指令后继续传输<param>参数,最后以”\r\n”结束。
数据反馈是蓝牙把各种状态和数据信息反馈给主机,<IND>是反馈指令,如果需要带参
数,则紧跟<IND>之后继续传输<param>参数。
注意:
\r\n:字符型为 换行,十六进制为 0x0D ,0x0A。

BK8000L串口控制指令
BK8000L串口查询/反馈指令
树莓派上串口通信可以用Python的serial模块,这里只做测试用,为了方便就用shell直接发送命令了。
树莓派中打开终端,输入:

1
2
3
# echo -e 可以发送回车等特殊字符
echo -e "AT+MN\r" >/dev/ttyAMA0
cat /dev/ttyAMA0

第一条指令为向蓝牙模块发送串口指令“AT+MN\r”,即请求蓝牙模块的名称。“ttyAMA0”为树莓派的串口设备名字
第二条指令为接收来自串口设备“ttyAMA0”的数据,例如上述命令执行完毕后,如果顺利的话,终端会返回蓝牙模块的名字:

1
NA: BK8000L

表示串口通信没有问题。

3.实现红外控制蓝牙模块
要想实现对应功能,只需要通过树莓派向蓝牙模块发送串口指令即可,如要向实现播放/暂停功能,需要通过串口想蓝牙模块发送:

1
2
AT+MA\r    
#\r为换行符

在上篇文章(树莓派红外遥控测试)中已经实现了红外控制树莓派执行相应的命令,其中按键与对应命令的配置文件存储在 /home/pi/.lircrc 文件中。所以这次打开这个文件并编辑

1
sudo leafpad /home/pi/.lircrc

添加如下代码并保存:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
begin
prog = irexec
button = KEY_PLAY
config = sudo echo -e "AT+MA\r" > /dev/ttyAMA0; cat /dev/ttyAMA0
end
begin
prog = irexec
button = KEY_NEXT
config = sudo echo -e "AT+MD\r" > /dev/ttyAMA0; cat /dev/ttyAMA0
end
begin
prog = irexec
button = KEY_PREVIOUS
config = sudo echo -e "AT+ME\r" > /dev/ttyAMA0; cat /dev/ttyAMA0
end
begin
prog = irexec
button = KEY_VOLUMEUP
config = sudo echo -e "AT+CK\r" > /dev/ttyAMA0; cat /dev/ttyAMA0
end
begin
prog = irexec
button = KEY_VOLUMEDOWN
config = sudo echo -e "AT+CL\r" > /dev/ttyAMA0; cat /dev/ttyAMA0
end

编辑完毕后保存退出,重启红外控制服务,然后执行 irexec

1
2
sudo /etc/init.d/lirc restart
irexec

最后手机连接蓝牙模块(BK8000L)并播放音乐,用遥控器的按键进行测试。
以上代码只写了五个键(上一曲、下一曲、播放/暂停、增加音量、降低音量),更多功能以后再继续添加。

本文标题:树莓派:通过红外控制蓝牙音乐播放

文章作者:Fy.L

发布时间:2016年11月19日 - 13:11

最后更新:2018年05月11日 - 18:05

原始链接:http://www.lifayu.com/2016/11/19/Raspberry-IR-COntrol-BluetoothMusic/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

如果觉着我的文章不错,打赏我一包辣条吧 O(∩_∩)O
-------------本文结束 感谢您的阅读-------------