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

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

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

【准备材料】

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

【详细步骤】
1.将所有配件连接起来
这是上次用到的遥控器和红外接收器(VS1838B):

树莓派:通过红外控制蓝牙音乐播放_第1张图片
红外遥控器

树莓派:通过红外控制蓝牙音乐播放_第2张图片
红外接收器VS1838B

还有本次用到的蓝牙模块(BK8000L):
树莓派:通过红外控制蓝牙音乐播放_第3张图片
蓝牙模块

树莓派引脚编号参考:
树莓派:通过红外控制蓝牙音乐播放_第4张图片
树莓派引脚参考图

将蓝牙模块的串口接到树莓派的串口上面,TX接RX,RX接TX,VCC接3.3V,GND接GND,所有配件连接起来后:
配件连接图

2.修改树莓派系统文件
因为树莓派的串口默认用来远程登录用,所有先修改系统文件,将其功能恢复。
【1】修改 /boot/cmdline.txt
执行

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
最终变为:

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.测试蓝牙模块串口通信
根据模块资料:

控制指令格式:AT+[]\r\n
数据反馈格式:[]\r\n
说明:控制指令是控制主机给蓝牙的控制命令,以“AT+”开始后面紧跟控制
指令,如果该指令带参数,则紧跟指令后继续传输参数,最后以”\r\n”结束。
数据反馈是蓝牙把各种状态和数据信息反馈给主机,是反馈指令,如果需要带参
数,则紧跟之后继续传输参数。
注意:
  \r\n:字符型为 换行,十六进制为 0x0D ,0x0A。
树莓派:通过红外控制蓝牙音乐播放_第5张图片
BK8000L串口控制指令

树莓派:通过红外控制蓝牙音乐播放_第6张图片
BK8000L串口查询/反馈指令

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

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

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

NA: BK8000L

表示串口通信没有问题。

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

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

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

sudo leafpad /home/pi/.lircrc

添加如下代码并保存:

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

sudo /etc/init.d/lirc restart
irexec

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

你可能感兴趣的:(树莓派:通过红外控制蓝牙音乐播放)