蓝牙模块的功能其实就是将单片机的串口无线化,我们将单片机的RX、TX分别与蓝牙模块TX、RX连接后,蓝牙模块与其他设备通过蓝牙协议连接后,我们其实可以忽视蓝牙模块本身,就把模块当作一个无线的串口,我们怎样使用串口就怎样使用蓝牙就好了。
目前我用过两种型号的蓝牙模块,分别是HC-05主从一体模块、JDY-09从机模块,这两个模块从AT指令到基本属性都大不相同,所以我们一定要分辨清楚,方便我们根据需求选购正确型号的蓝牙模块与正确使用蓝牙模块(比如不要把JDY模块当主机去使用)。
它只能作为一个被动连接的从机,对这句话要记住。什么叫被动连接呢?在我们给这个模块设置好名字、密码、波特率之后,我们可以通过手机的蓝牙助手扫描到这个模块(主机模块可是不能被手机蓝牙扫描到),通过密码与这个模块连接。它不能去主动连接别的模块。所以对于一个JDY-09蓝牙模块,我们要知道它的名字、密码、波特率、地址这四个信息。
HC-05主从一体蓝牙模块,可以作为一个主机去连接其他从机,也可以作为一个被动连接的从机。我们可以通过设置通过AT指令对HC-xx模块进行模式设置,设置它的名字、密码、波特率、主/从模式、绑定地址这五个属性。
HC-05主从一体蓝牙模块,可以作为一个主机去连接其他从机,也可以作为一个被动连接的从机。我们可以通过设置通过AT指令对HC-xx模块进行模式设置,设置它的名字、密码、波特率、主/从模式、绑定地址这五个属性。
首先要先用CH340与蓝牙模块连接起来,我们要通过串口工具来对蓝牙模块进行设置。每个模块都有它对应的一个串口调试工具能够一键发送命令什么的,当然用通用的一些串口工具例如XCOM也可以,只不过要手敲指令。
这里的波特率是要和单片机串口的波特率相同才能进行通讯哦。
(1)我们使用串口调试助手,对于JDY模块进行AT命令调试,不用按键什么的,只要在蓝牙未连接时就可以。首先要设置各项参数,①选中蓝牙模块连接的串口②设置波特率③勾选发送回车。
(2)下面是发送命令的步骤①点击打开串口②点击你想要发送的命令对应的TX,它将会发送一次AT命令③在命令框内输入自己的命令或内容④点击发送
(3)JDY模块串口指令集
下面是我从数据手册上摘抄下来的。大家可以参考官方数据手册,来查询指令该如何去写。
序号 | 指令 | 功能 | 默认 | 响应 | 参数 |
---|---|---|---|---|---|
1 | AT+VERSION | 查询版本号 | JDY-31-V1.2 | 无 | |
2 | AT+RESET | 软复位 | +OK | ||
3 | AT+DISC | 断开连接 | +OK | ||
4 | AT+LADDR | 查询模块的MAC地址 | +LADDR= | 不可更改 | |
5 | AT+PIN AT+PIN |
密码查询 密码设置 |
1234 | +PIN= +OK |
Param:4位密码 默认PIN:1234 |
6 | AT+BAND AT+BAUD |
波特率查询 波特率设置 |
9600 | +BAUD= +OK |
Param:(4到9) 4:9600 5:19200 6:38400 7:57600 8:115200 9:128000 |
7 | AT+NAME AT+NAME | 名称查询 名称设置 |
JDY-31-SPP | +NAME= OK |
Param:BLE广播名 最长:18字节 |
8 | AT+DEFAULT | 恢复出厂设置 | OK | ||
9 | AT+ENLOG | 串口状态输出使能 | +ENLOG= |
我写几个例子:
①查询广播名:AT+NAME 返回(默认):JDY-31-SPP
(1)我们使用串口调试助手,对于HC-05模块进行AT命令调试,在上电之前,要先按住蓝牙模块上的按钮,然后上电,此时灯是慢闪,进入AT命令模式,默认波特率是38400(不会被设置所影响),此模式叫原始模式。原始模式下一直处于AT命令模式状态这是我最常用的方法;第二种方法是:HC-05上电开机,红灯快闪,按住按键或EN拉高,HC-05进入AT命令模式,默认波特率是9600;此模式我们叫正常模式。正常模式下只有按住按键或拉高EN才处于AT命令模式状态。
串口调试助手的波特率一定要与蓝牙模块的波特率对上,否则AT命令执行无效。
还首先要设置各项参数,①选中蓝牙模块连接的串口②设置波特率③查看端口是否已经打开④获取模块信息,这个软件会将信息输入对应的格子。
(2)HC-05的设置与JDY-09有一点点不同,不同在模块角色、连接模式、绑定地址。模块角色和连接模式是一样的,选择主从角色,当模块位主角色时,绑定地址为你想要连接模块(从角色)的MAC地址;当模块为从角色时,绑定地址为你想要连接模块(主角色)的MAC地址;对于JDY模块为从角色时,它就不需要绑定主角色的MAC地址,而主角色模块需要绑定JDY模块的MAC地址。
我是参考这篇博客的逻辑,我也打算从连接对象的不同来写
(1)模块角色与连接模式设置为从角色,密码设置为四位数自己喜欢就好。
(2)手机用蓝牙调试助手与模块连接,输入密码配对成功后可进行通讯。
(3)HC-05从快闪到慢闪即代表连接成功。
(1)设置号密码就好。
(2)手机用蓝牙调试助手与模块连接,输入密码配对成功后可进行通讯。
(3) JDY-09从快闪到慢闪即代表连接成功
(1)应用AT指令 AT+LADDR 查询JDY-09蓝牙模块的MAC地址,记录下来并按照XXXX:XX:XXXXXX的格式改写好。
(2)设置JDY-09蓝牙模块的密码要与主角色密码一样。
(3)设置HC-05蓝牙模块的模块角色与连接模式为主角色,密码与从角色相同,绑定地址为第(1)步记录并改写好的XXXX:XX:XXXXXXJDY-09蓝牙模块的MAC地址。
最后两个模块重新上电等待HC-05从快闪到慢闪即代表连接成功。
(1)应用AT指令 查询两块HC-05蓝牙模块的MAC地址,记录下来,并将一个角色与连接模式设置为主角色、另一个设置为从角色,保持密码相同。
(2)将从角色的绑定地址设置为主角色的MAC地址,将主角色的绑定地址设置为从角色的MAC地址。
最后两个模块重新上电等待HC-05从快闪到慢闪即代表连接成功。
蓝牙模块用久了,就容易坏掉,我用了一天的时间去调试了很多很多蓝牙模块,我就发现有些模块对它进行AT指令调试,根本没反应,我就怀疑它是坏掉了。还有的一些损坏的模块,它会丢失自己的密码,也就没法用。对蓝牙模块的供电要好要稳定,否则不稳定的供电会导致蓝牙模块被初始化,如果在比赛中出现这种情况,这将是灾难。