两个蓝牙模块HC-05的主从机匹配

两个蓝牙模块HC-05的主从机匹配

  • 1、HC-05蓝牙模块知识
    • 1.1、两种工作模式:
    • 1.2、进入命令响应工作模式?
    • 1.3、什么叫做置高一次PIO11?
    • 1.4、怎么区分进了命令响应工作模式呢?
    • 1.5、串口调试助手发送AT命令格式
  • 2、AT命令
  • 3、两个蓝牙模块设置
    • 1、主机A蓝牙模块发送以下命令
    • 2、从机B蓝牙模块发送以下命令
    • 3、从机B蓝牙模块发送以下命令
    • 4、主机蓝牙A绑定从机蓝牙B地址
    • 5、设置主机蓝牙A的连接模式
    • 6、设置主、从机蓝牙的连接波特率并确认
  • 4、两个蓝牙模块连接测试


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命令+勾选发送新行

参考如下的图片
两个蓝牙模块HC-05的主从机匹配_第1张图片


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转串口模块连接蓝牙,重新上电两个模块就能够自动连接。


参考文章一
参考文章二


你可能感兴趣的:(相关模块传感器使用,stm32,linux,测试工具)