HC05蓝牙模块主机与从机进行连接通信
HC-05蓝牙模块简介
HC-05蓝牙模块采用串口通信,是一款基于 Bluetooth Specification V2.0 带 EDR 蓝牙协议的数传模块,最远可以实现10米的通信距离,板载自带LED灯可以较为直观的观察到蓝牙所处的工作状态,模块主要采用串口AT指令的方式进行参数配置与数据通信
相比较于HC-06等从机模块HC-05具有主从一体,可自行配置工作于主机或从机模式下,模块指示灯可指示模块处于AT模式(参数配置)、主机未记录从机地址、主机记录从机地址等多个状态,具体可参照下表
指示灯状态 | 状态 |
---|---|
AT模式 | 慢闪(常亮长灭的闪烁)38400波特率方式 |
主机未记录从机地址 | 快速闪烁 |
主机记录从机地址 | 慢闪(长时间灭然后闪烁一下) |
配对并连接成功 | 指示灯两闪一停 |
使用前连线
HC-05模块接口较为简单,上面已经板载了按键可以直接进入AT模式,在接串口用电脑进行配置通信的时候仅仅只需要供电以及UART四根线接上即可,通信用引脚功能对照下表就行
引脚名称 | 功能 |
---|---|
VCC | 电源正,3.2~6V供电 |
GND | 电源负,地 |
TXD | 数据发送端 |
RXD | 数据接收端 |
模块通信为TTL电平UART协议,要在电脑上面通信的话需要USB-TTL模块进行电平转换(虽然电脑也是串口协议但是使用的USB电平),个人推荐下面这个土豪金小板(一块板子用了三年,供电足,通信兼容也好,美滋滋)
接线在HC-05模块背面有上表对应引脚的丝印,USB-TTL模块也有对应的引脚丝印,具体接线直接对着下表去连接就行,值得一说的是TXD数据发送端和RXD数据接收端需要交叉接线才能一端发送一端接收
HC-05 | USB-TTL |
---|---|
VCC | 5V |
GND | GND |
TXD | RXD |
RXD | TXD |
说明一下,主机与从机配对是需要两个HC-05的,因此也需要两个USB-TTL模块(问一个模块能不能自己和自己配对的也是醉了),两个模块接线都是一样的接,下面进入AT模式对参数进行配置
参数配置
参数配置需要进入AT模式发送指令才会有效,对此手册中也有进行说明
1、模块上电,未配对情况下就是AT 模式,波特率为模块本身的波特率,默认:9600,发送AT 指令时需要置高一 次PIO11。
2、PIO11 置高电平后,再给模块上电,此时模块进入AT 模式,波特率固定为:38400,可以直接发送AT 指令
(注:当用户忘记模块本身波特率时,使用第二种方法固定为38400,平时建议用户使用第一种方法进入AT 模式!)
其中置高电平PIO11是指的将模块上的按键按下去一次,模块已经将这部分做成了按键的形式,我们使用第二种方式去进行配置,在上电前将按键按住不松,然后插电,这个时候会发现模块上的指示灯处于慢闪(常亮长灭的状态),如果没有就是没进入AT模式,这个也是比较好区分的所以采用第二种方式进入AT模式
从机模块配置
指示灯正常闪烁之后我们打开电脑的设备管理器查看端口号,我这里查看识别为COM4,请记住这个端口号,我们会将这个端口的模块设置成从机模式
打开一个串口软件,这里使用XCOM(网上可以随便找,大同小异),有需要手册以及串口软件的可以在下方或者私信邮箱打包好给你发过去,回到串口软件界面
参数配置成如上所示,串口选择COM4(根据上面自己电脑识别的去选择),波特率后面的参数照着上面的选,下面发送新行的位置勾选起来,先发送一个AT观察有没有OK返回,返回OK之后就可以开始配置参数了
下面看到主机与从机配对时从机需要使用的AT指令以及功能,我们将端口4所在的模块设置成从机
AT指令 | 功能 |
---|---|
AT | 测试指令,响应:OK |
AT+ORGL | 恢复默认设置,具体可以配置详情参考手册,响应:OK |
AT+ROLE=0 | 将模块设置成从机模式,响应:OK |
AT+ROLE? | 查询模块当前的模式,这里用来确定前面设置生效了 |
AT+ADDR? | 获取模块蓝牙地址 |
AT+ PSWD=1122 | 设置配对码为1122 |
AT+ PSWD? | 查询模块当前的配对码 |
AT+UART? | 查询当前串口参数 |
以上参数拍好了顺序按照上面的顺序一条一条发送就行,在串口软件界面选择多条发送,将上面的指令按顺序写入编辑框中,可对照下图
点击后面的0,1,2…对应按钮之后会得到类似下面一组的数据返回
OK
OK
OK
+ROLE:0
OK
+ADDR:2021:1:113965
OK
OK
+PSWD:1122
OK
+UART:38400,0,0
OK
返回的 +ROLE:0
参数的 0 代表正确设置为了从机模式
参数 +ADDR:2021:1:113965
后面一串数字 2021:1:113965
为从机模块的地址,不同的模块获取到的数据不一样,这里记住这串数字后面设置主机模块的时候需要用到
参数 +PSWD:1122
的 1122
为设置的配对码,跟着设置成一样的就行,想要修改的话后面设置主机的时候需要一起进行修改
主机模块配置
主机模块我们按照之前的方式一样去连线然后按住按键上电进入AT模式,同样的在设备管理器里面能看到新出现一个设备,记住他的端口号,我这里是COM9
我们这里为了避免和从机模块用的串口搞混用另一个串口软件,打开之后参数配置成和下图一样的38400波特率,勾选发送新行,发送一个AT看有没有返回OK,有OK我们就顺利进入下一步设置
下一步可以参照下表整理的这次连接需要用到的AT指令以及功能简介,更多的指令可以参考HC-05 AT指令集文档,里面还有非常多的指令,本次用不上就不做介绍了
AT指令 | 功能 |
---|---|
AT | 测试指令,响应:OK |
AT+ORGL | 恢复默认设置,具体可以配置详情参考手册,响应:OK |
AT+ROLE=1 | 将模块设置成主机模式,响应:OK |
AT+ROLE? | 查询模块当前的模式,这里用来确定前面设置生效了 |
AT+ PSWD=1122 | 设置配对码为1122 |
AT+ PSWD? | 查询模块当前的配对码 |
AT+CMODE=0 | 设置为指定蓝牙地址连接模式(地址由绑定指令设置) |
AT+BIND=2021,1,113965 | 绑定蓝牙地址设置为:2021,1,113965,以自己的模块为准修改 |
AT+BIND? | 查询绑定蓝牙地址 |
AT+UART? | 查询当前串口参数 |
以上有几条指令不能照抄
指令 AT+ PSWD=1122
后面的参数 1122
一定要和上面设置从机的时候设置成一样的,不一定要是1122但是一定要是一样的
指令 AT+BIND=2021,1,113965
后面的地址是设置的 2021,1,113965
是因为上面从机配置时使用指令 AT+ADDR?
获取的地址为 2021:1:113965
,不同模块获取到的会存在差异,
注意:要将获取到的从机地址中间的冒号
:
用逗号,
代替去发送AT+BIND
设置绑定地址的指令
串口软件配置界面可参照下图按顺序去发送
接收的数据参照如下的格式去做比对,如果返回了其他的异常数据一定要去检查问题在哪里
OK
OK
OK
OK
+ROLE:1
OK
OK
+PSWD:1122
OK
OK
OK
+BIND:2021:1:113965
OK
最后的时候可以发送一条 AT+UART?
指令来查询当前的波特率是多少去设置通信的时候的参数,用过的模块不一定知道波特率多少
重新上电
模块不要按按键直接断电之后重新上电等待一会两个模块的指示灯会从快闪转变成指示灯两闪一停的状态为连上了,我这里两个模块用 AT+UART?
指令查询的波特率都为*38400
* ,重新打开串口助手参数设置为*38400
* (根据自己两次获取的串口参数而定)之后就可以双向直接收发数据通信了
串口软件可能有点BUG第一行的数据会乱码,问题不大
总结
HC-05为市面上较为经典的蓝牙模块,指令集齐全又同时具有主从机一体的功能使用起来方便,非常适合无线串口参数获取或调节,这篇文章主要以主机与从机相互连接的AT指令为主,也是较多的人需要用到但是没有对此有相关说明的部分,写完这篇文章希望对使用HC-05的小伙伴会有帮助
需要手册、软件等资料的朋友在下方留言或者私信邮箱即可,看到就会发过去,欢迎留言交流,大家互相学习互相进步!