两个蓝牙模块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指令:

指令名响应含义
ATOK测试指令
AT+RESETOK模块复位
AT+VERSION?+VERSION: OK获得软件版本号
AT+ORGLOK恢复默认状态
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的连接模式
默认是:0 ,即指定蓝牙地址连接模式。这样第一个蓝牙才能自动连接绑定的地址,如果不是模式0,设置为模式0

AT+CMODE=0

6、设置主、从机蓝牙的连接波特率并确认

主机设置

AT+UART=115200,0,0
AT+UART?

从机设置

AT+UART=115200,0,0
AT+UART?

4、两个蓝牙模块连接测试

之后只要使用TTL转串口模块连接蓝牙,重新上电两个模块就能够自动连接。


参考文章一
参考文章二


  • 37
    点赞
  • 302
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
步骤: 1. 两个蓝牙模块必须一个作为主,另一个作为从才能建立连接(上电后,从一直处于接受状态,等待被连接。而主则主动发出信号,寻找目标从,前提是该目标从的mac地址事先被写入到主的flash芯片中储存) 2. 蓝牙模块上电前一直按住key按键不放,上电后松开,此时LED灯处于慢闪状态(每秒闪1次),提示已经进入AT指令响应状态,可以进行接收AT指令控制 3. PC端打开安可信串口助手(带AT指令),打开相应的串口,发送AT+ROLE?\n查询该模块的主从角色,如果为0,则为从,如果为1则为主。本例中,此模块(图中左边的HC-05模块)设为主,则发送AT+ROLE=1\n,设为主,成功返回OK 4. 发送AT+ADDR?\n查询此模块的mac地址,本例中为98d3:33:80ebdf,记下来稍后为从的地址绑定用。同样的方法将另一个模块(图中右边的HC-05模块)设置为从(AT+ROLE=0\n),并且查询到mac地址为98d3:36:aac2 5. 向主串口中发送AT+BIND=98d3,36,aac2\n绑定从的mac地址,成功则返回OK。发送AT+CMODE=0\n将主设为指定蓝牙地址连接模式(即只允许主向绑定好mac地址的蓝牙从设备发起连接) 6. 同样地,向从串口发送AT+BIND=983d,33,80ebdf\n绑定主的mac地址,成功则返回OK。发送AT+CMODE=0\n将从也设为指定蓝牙地址连接模式(即只允许从接受绑定好mac地址的蓝牙主设备发起的连接) 7. 至此,主从均设置完毕。主从两模块松开key键重新上电,LED都快闪(每秒闪2次),表明均处于等待配对状态,随后大约几秒钟后,LED闪烁频率发生变化(不确定),表明已经侦测到目标设备,正在建立连接。随后大约一秒钟,很快 LED变成慢双闪状态(每2秒闪一次,每次连闪2下),提示已经配对成功,可以通过蓝牙协议传输数据了 8. 此时,在串口助手中发送一串字符,如果另一个蓝牙模块的串口助手里收到了同样的字符,且回送的字符,对方亦能收到,则通信成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值