两个蓝牙模块HC-05的主从机匹配
1、HC-05蓝牙模块知识
1.1、两种工作模式:
HC-05蓝牙串口通讯模块具有两种工作模式:命令响应工作模式和自动连接工作模式。在自动连接工作模式下模块又可分为主(Master)
、从(Slave)
和回环(Loopback)
三种工作角色。
当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;
当模块处于命令响应工作模式时能执行AT命令,用户可向模块发送各种AT 指令,为模块设定控制参数或发布控制命令。
1.2、进入命令响应工作模式?
进入命令响应工作模式有两种方法:
- 模块上电,未配对情况下就是AT模式,波特率为模块本身的波特率,默认:9600,发送一次AT指令时需要置高一次PIO11;
- PIO11 置高电平后,再给模块上电,此时模块进入AT 模式,波特率固定为:38400,可以直接发送AT指令。
1.3、什么叫做置高一次PIO11?
在蓝牙模块中有一个小按键,按一下就置高一次PIO11。
- 也就是说,第一种方法需要每发送一次AT指令按一次;
- 而第二种方式是长按的过程中上电,之后就无需再管了,直接发送AT命令即可。波特率38400。
需要注意一下,两种进入命令响应工作模式的方式使用的波特率是不一样的,建议使用第二种方式。
1.4、怎么区分进了命令响应工作模式呢?
- 在蓝牙模块上有灯,当灯快闪的时候,就是自动连接工作模式;
- 当灯慢闪的时候,就是命令响应工作模式。
1.5、串口调试助手发送AT命令格式
串口软件发送给HC-05蓝牙模块AT指令 ,必须严格按照格式发送才可以(即使看不到格式情况),否则返回错误ERROR或者没有反应,格式如下两种:
1.AT+一个回车;
2.AT命令+勾选发送新行
参考如下的图片
2、AT命令
进入到命令响应工作模式之后,就可以使用串口调试助手进行蓝牙调试了。
首先有一点,AT指令不区分大小写,下面介绍常用的AT指令:
指令名 | 响应 | 含义 |
---|---|---|
AT | OK | 测试指令 |
AT+RESET | OK | 模块复位 |
AT+VERSION? | +VERSION: OK | 获得软件版本号 |
AT+ORGL | OK | 恢复默认状态 |
AT+ADDR? | +ADDR: OK | 获得蓝牙模块地址 |
AT+NAME= | OK | 设置设备名称 |
AT+NAME? | +NAME: OK | 获得设备名称 |
AT+PSWD= | OK | 设置模块密码 |
AT+PSWD? | +PSWD: OK | 获得模块密码 |
AT+UART=,, | OK | 设置串口参数 |
AT+UART? +UART:,, | OK | 获得串口参数 |
补充:
AT命令之设置串口
- AT+UART?:获得串口参数,串口的参数一共有三个,波特率、停止位、检验位。其取值如下:
参数名称 | 取值 |
---|---|
波特率 | 2400、4800、9600、19200、38400、5760、115200、230400、460800、921600、1382400 |
停止位 | 0:1位 ; 1:2位 |
校验位 | 0:NONE ; 1:Odd ; 2:Even |
蓝牙三种角色:
AT+ROLE:该指令用于选择HC05蓝牙模块的角色,总共有三种角色:master,slave,loop-slave.
AT+ROLE=0\r\n
将蓝牙模块设置成从角色,只能被动连接AT+ROLE=1\r\n
将蓝牙模块设置成主角色,可以查询周围SPP蓝牙从设备,并发送连接AT+ROLE=2\r\n
将蓝牙模块设置成回环角色,被动连接,接收远程蓝牙模块主设备数据并将数据原样返回给远程蓝牙设备
这几个指令用在不同的场合,当设置蓝牙模块为从设备的时候,可以用手机的相关蓝牙装串口软件连接该设备,进行通讯;当设置成主角色的时候,可以搜索周遭的蓝牙从设备,并连接,这种模式在应用中很常用;回环角色很多时候都是用来做测试用的
3、两个蓝牙模块设置
长按的过程中上电,进入AT命令模式,指示灯开始慢闪,直接发送AT命令即可。
以下代码块:
- 黑色的为主机A蓝牙模块AT命令;
- 白色的为从机B蓝牙模块AT命令;
1、主机A蓝牙模块发送以下命令
- 初始化蓝牙模块A
- 设置主机A密码
- 设置蓝牙模块为主机A模式
AT+ORGL
AT+PSWD="0000"
AT+ROLE=1
2、从机B蓝牙模块发送以下命令
- 初始化蓝牙模块B
- 设置从机B密码,从机的密码与主机的密码一致
- 设置蓝牙模块为从机B模式
AT+ORGL
AT+PSWD="0000"
AT+ROLE=0
3、从机B蓝牙模块发送以下命令
- 查询蓝牙B的地址
AT+ADDR?
得到类似如下的地址反馈
+ADDR:98d3:32:71062d
其中98d3:32:71062d为从机B蓝牙模块的地址
4、主机蓝牙A绑定从机蓝牙B地址
AT+BIND=98d3,32,71062d
注意把地址的冒号换成逗号
确认绑定地址
AT+BIND?
5、设置主机蓝牙A的连接模式
查询蓝牙A的连接模式
AT+CMODE?
设置主机蓝牙A的连接模式
AT+CMODE=0
6、设置主、从机蓝牙的连接波特率并确认
主机设置
AT+UART=115200,0,0
AT+UART?
从机设置
AT+UART=115200,0,0
AT+UART?
4、两个蓝牙模块连接测试
之后只要使用TTL转串口模块连接蓝牙,重新上电两个模块就能够自动连接。