HC-05蓝牙模块主从机通信

本文详细介绍了HC-05蓝牙模块的功能特性,包括主从机通信原理、AT指令集及错误码解析,以及如何配置主从机进行通信。HC-05是一款经典蓝牙2.0版本的串口模块,支持透传模式,适用于各种无线通信场景。

一、HC-05蓝牙模块介绍

HC-05是一款主从一体式串口蓝牙模块,使用时无需理解复杂的蓝牙协议,把它当作普通串口使用即可,串口通信为透传模式,由于它同时支持主从机模式,所以任意两个蓝牙模块之间都是可以通信的,下文将介绍如何使用两个蓝牙模块进行主从机通信。
注意:HC-05属于经典蓝牙2.0版本,与BLE蓝牙区别很大,由于BLE蓝牙没有向下兼容,所以是无法和HC05通信的。
HC-05模块实物

HC05底板原理图
模块引脚功能介绍如下

引脚功能
EN使能
VCC3.6~6V电源输入,实测3.3V也是可以的
GND
TXD串口发送
RXD串口接收
STATE连接状态 低电平:未连接 高电平:已连接

LED状态灯

状态说明
快闪 1s两次正常工作模式 模块进入可配对状态
慢闪 2s1次AT模式 此时可以直接发AT指令 波特率38400
双闪 一次闪2下已配对状态 此时是透传模式

除此之外,该模块上还有一个按键,其作用是选择是否进入AT模式。
实际通信只需要VCC、GND、TXD、RXD 四个引脚即可。

二、AT模式

HC-05有两种方式进入AT模式:

  1. 按下KEY键,然后再上电,上电后便进入AT模式,波特率38400。
  2. 正常上电,需要发送AT指令时,先按下KEY键再发送,波特率和当前通信波特率一致,默认值为9600。
    注意:当模块进入已配对状态时,除非重新上电复位,否则是无法进入AT模式的,也就不能发任何AT指令。

三、AT指令与错误码

不同型号的蓝牙模块支持的AT指令集不一样,有些厂家可能“偷懒”,很多AT指令没有实现,因此需要以蓝牙模块的手册为准。
另外,AT指令必须以“\r\n”结尾,且必须大写。
这里只介绍一些常用的AT指令(仅针对HC-05)。

指令响应说明
AT+RESETOK模块复位
AT+VERSION?+VERSION:Param OK返回模块版本号
AT+ORGLOK恢复出厂设置
AT+ADDR?+ADDR:Param OK查询模块地址 不能设置地址
AT+NAME?+NAME:Param OK返回模块名称
AT+ROLE=Param+ROLE:Param OKParam:参数取值如下:0——从角色(Slave)1——主角色(Master)2——回环角色(Slave-Loop)默认值:0
AT+CLASS=ParamOKParam:设备类蓝牙设备类实际上是一个 32 位的参数,该参数用于指出设备类型,以及所支持的服务类型。默认值:0
AT+IAC=ParamOKParam:查询访问码 默认值:9e8b33
AT+PSWD=ParamOKParam:配对码 默认名称:“1234”
AT+UART=Param,Param2,Param3OKParam1:波特率(bits/s) Param2:停止位 Param3:校验位
AT+CMODE=ParamOKParam:0——指定蓝牙地址连接模式(指定蓝牙地址由绑定指令设置)1——任意蓝牙地址连接模式(不受绑定指令设置地址的约束)2——回环角色(Slave-Loop)默认连接模式:0
AT+BIND=ParamOKParam——绑定蓝牙地址 默认绑定蓝牙地址:00:00:00:00:00:00
AT+STATE?+ STATE:Param OK返回模块工作状态 “INITIALIZED”——初始化状态 “PAIRABLE”——可配对状态 “INQUIRING”——查询状态 “CONNECTING”——正在连接状态
AT+INQ+INQ: Param1,Param2,Param3,OK扫描蓝牙设备 Param1:蓝牙地址 Param2:设备类 Param3:RSSI信号强度
AT+INQCOK取消扫描设备
AT+LINK=ParamOK连接蓝牙设备 Param:远程设备蓝牙地址
AT+DISC1、+DISC:SUCCESS——断开连接成功 OK 2、+DISC:LINK_LOSS——连接丢失 OK断开连接

AT 指令错误代码

错误码说明
0AT 命令错误
1指令结果为默认值
2PSKEY 写错误
3设备名称太长(超过 32 个字节)

更多指令与错误码描述详见HC-05手册HC-05手册

三、主从机配置

主机:

AT+CMODE=1\r\n #任意地址连接 主机上电后自动连接周围存在的从机
AT+PSWD=1234\r\n #配对码配置为1234
AT+ROLE=1\r\n #主机模式

从机:(从机其实不用配置 因为模块默认就是从机模式 只要保证主从机配对码一致即可)

AT+PSWD=1234\r\n #配对码配置为1234
AT+ROLE=0\r\n #从机机模式

以上配置可以在电脑端通过串口调试助手配置好,然后单片机接上蓝牙模块即可,模块上电后主从机会自动建立连接,连接成功后,主从机就可以通过串口通信了(透传模式 :发什么收什么)。

四、备注说明

1.AT+INQ 返回ERROR:(1F)
1F错误码在HC-05手册中没有说明,暂定为未知错误
解决方法是:尝试恢复出厂设置(AT+ORGL \r\n)另外本条指令需要通过上文提到的第二种方式发送才可以
出厂默认状态:
①.设备类:0
②.查询码:0x009e8b33
③.模块工作角色:Slave Mode
④.连接模式:指定专用蓝牙设备连接模式
⑤.串口参数:波特率—38400bits/s;停止位:1 位;校验位:无
⑥.配对码:“1234”
⑦.设备名称:“HC-05”

### HC-05蓝牙模块主从配对方法 #### 设置环境准备 为了实现HC-05蓝牙模块之间的主从通信,需准备好必要的硬件设备。具体来说,需要两个USB转TTL的串口调试器来连接蓝牙模块电脑,以便通过串口工具发送AT指令进行配置[^3]。 #### 进入AT命令模式 当给HC-05供电时,保持按下模块上的按键直到指示灯变为每秒闪烁一次,则表明已成功进入AT命令响应状态,在此状态下默认波特率为38400bps,并且仅有一个停止位而无奇偶校验。对于某些版本的HC-05而言,即使处于该模式也可能无法立即回应AT指令;遇到这种情况时,可以在每次发出指令的同时持续按压按键直至得到回复,或者将EN引脚拉至高电平(通常为3.3V),从而简化操作流程[^4]。 #### 发送初始化命令 一旦确认能够正常接收来自HC-05的回答之后,就可以开始执行一系列初始化设定: 1. **恢复出厂设置**:向目标模块发送`AT+ORGL`以清除任何先前存在的自定义参数并返回初始状态; 2. **指定角色分配**:利用`AT+ROLE=0`(设为主)/ `AT+ROLE=1`(设为从) 来指明当前单元的角色身份; 3. **调整传输速率**:可通过`AT+UART=<baudrate>,<stopbits>,<parity>`改变工作中的串行接口速度及其他属性(注意这一步骤应在完成其他所有配置项后再实施); 4. **保存更改**:最后使用`AT&W`确保上述修改被永久存储下来。 以上过程适用于每一个参组网的HC-05实例,即分别针对“主”和“从”的个体重复上述步骤。 #### 测试连通性 完成上述准备工作后,断开电源重新启动双方装置。理想情况下,大约十秒钟过后,如果一切顺利的话,“主”的LED应该转变为每隔五秒两次短促亮起的形式——这意味着它已经找到了匹配伙伴并且建立了稳定的数据链路。此时可以通过任意一端发起简单的字符流交换实验验证实际效果。 ```python import serial ser = serial.Serial('COM3', baudrate=9600, timeout=1) def send_command(command): ser.write((command + '\r\n').encode()) response = '' while True: char = ser.read().decode() if not char or char == '\n': break response += char return response.strip() print(send_command("AT")) # 应返回OK表示正常工作 ```
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知否,知否

来一杯冰美式把

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值