HC-05蓝牙模块的学习开发
模块介绍
特点简介
HC-05 蓝牙串口通信模块,是基于 Bluetooth Specification V2.0 带 EDR 蓝牙协议的数传模块。无线工作频段为 2.4GHz ISM,调制方式是 GFSK。模块最大发射功率为 4dBm,接收灵敏度-85dBm,板载 PCB 天线,可以实现 10 米距离通信。
模块采用邮票孔封装方式,模块大小 27mm×13mm×2mm,方便客户嵌入应用系统之内,自带 LED 灯,可直观判断蓝牙的连接状态。
模块采用 CSR 的 BC417 芯片,支持 AT 指令,用户可根据需要更改角色(主、从模式)以及串口波特率、设备名称等参数,使用灵活。
基本参数
参数名称 | 参数值 | 参数名称 | 参数值 |
---|---|---|---|
型号 | HC-05 | 模块尺寸 | 27*13*2mm |
工作频段 | 2.4G | 空中速率 | 2Mbps |
通讯接口 | UART3.3VTTL电平 | 天线接口 | 内置PCB天线 |
工作电压 | 3.0V~3.6V | 通信电流 | 40mA |
RSSI支持 | 不支持 | 接收灵敏度 | -85dBm@2Mbps |
通信电平 | 3.3V | 工作湿度 | 10%~90% |
发射功率 | 4dBm(最大) | 存储温度 | -40°C~+85°C |
参考距离 | 10m | 工作温度 | -25°C~+75°C |
连接说明
模块与单片机 MCU 等设备的连接
①:模块与供电系统为 3.3V 的 MCU 连接时,串口交叉连接即可。(模块的 RX 接 MCU 的 TX、模块的 TX 接 MCU的 RX)
②:模块与供电系统为 5V 的 MCU 连接时,可在模块的 RX 端串接一个 220R~1K 电阻再接 MCU 的 TX,模块的TX 直接接 MCU 的 RX,无需串接电阻。(注:请先确认所使用的 MCU 把 3.0V 或以上电压认定为高电平,否则需加上 3.3V/5V 电平转换电路)
注:模块的电源为 3.3V,不能接 5V, 5V 的电源必须通过 LDO 降压到 3.3V 后再给模块供电。
模块之间的连接通讯
设置一个为主机,一个为从机,配对码一致(默认均为 1234),波特率一致,上电即可自动连接。
HC-05 支持一对一连接。
在连接模式 CMODE 为 0 时,主机第一次连接后,会自动记忆配对对象,如需连接其他模块, 必须先清除配对记忆。在连接模式 CMODE 为 1 时,主机则不受绑定指令设置地址的约束,可以与其他从机模块连接。
**注:HC-05-USB 默认为主机,HC-05 默认为从机。 **
模块与手机的连接通讯
HC-05 可以与安卓手机自带蓝牙连接,通讯测试可以使用安卓串口助手软件。
模块与 PC 的连接通讯
HC-05 直接连接电脑需借助 HC-05-USB 蓝牙虚拟串口与电脑相连。
HC-05 可直接连接电脑的自带蓝牙设备进行通讯。
实例开发
准备工作
两种工作模式
首先,我们应该了解到HC-05蓝牙串口通讯模块具有两种工作模式:命令响应工作模式和自动连接工作模式。在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。
- 当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;
- 当模块处于命令响应工作模式时,能执行AT命令,用户可向模块发送各种AT 指令,为模块设定控制参数或发布控制命令。
进入命令响应工作模式
那么,如何进入命令响应工作模式呢?
进入命令响应工作模式有两种方法:
模块上电,未配对情况下就是AT模式,波特率为模块本身的波特率,默认:9600,发送一次AT指令时需要置高一次PIO11,也就是每发送一次AT指令按一下蓝牙模块上的按键;
PIO11 置高电平后(长按按键的过程中上电或者直接将PIO11接到VCC,之后就无需再管了),再给模块上电,此时模块进入AT 模式,波特率固定为:38400,可以直接发送AT指令。
本次的开发采取第二种方法,下文中有说明。
区分工作模式
怎么区分进了命令响应工作模式呢?
在蓝牙模块上有灯,当灯快闪的时候,就是自动连接工作模式;当灯慢闪的时候,就是命令响应工作模式。
模块连线引脚图
在自动连接工作模式下直接四根线串行通信即可,而在命令响应工作模式下还需要将KEY(PIO11)进行如上说明处理,图中为黄线。
常用AT命令
AT 指令不区分大小写,均以回车、换行结尾,部分 AT 指令需要对模块 34 脚 PIO11 一直置高电平才有效 。
AT | 测试指令 |
---|---|
AT+RESET | HC-05复位 |
AT+VERSION? | 返回HC-05的软件版本号 |
AT+ADDR? | 获得蓝牙模块地址 |
AT+ORGL | 恢复出厂默认设置 |
AT+NAME=BLUE | 修改蓝牙模块的名字为BLUE |
AT+NAME? | 返回HC-05的名字 |
AT+PSWD=”1234” | 设置密码1234 |
AT+PSWD? | 查询配对密码 |
AT+UART=115200,1,2 | 设置串口波特率115200,2位停止位,偶校验 |
AT+UART? | 返回蓝牙波特率 |
AT+ROLE? AT+ROLE=1 |
?: 查询主从状态 =1:设置成主 =0:设置成从 =2:设置成回环 |
波特率设置的规则如下:
AT+UART=
param1: 波特率,可选2400、4800、9600、19200、38400、5760、115200、230400、460800、921600、1382400。
param2: 停止位, 0=1位,1=2位
param3: 校验位, 0=无校验,1=奇校验,2=偶校验
默认设置为9600,0,0
注:此时配置的波特率9600为自动连接工作模式的波特率,命令响应工作模式始终为38400。
配对指令
主机AT指令 | 从机AT指令 |
---|---|
AT(测试指令,正常返回OK) | AT(测试指令,正常返回OK) |
AT+ORGL(可选操作,恢复默认状态) | AT+ORGL(可选操作,恢复默认状态) |
AT+NAME=Master(主机名称,可自定义) | AT+NAME=Slaver(从机名称,可自定义) |
AT+ROLE=1(蓝牙模式为主模式) | AT+ROLE=0(蓝牙模式为从模式) |
AT+CMODE=1(蓝牙连接地址为任意地址) | AT+CMODE=1(蓝牙连接地址为任意地址) |
AT+PSWD=12345(蓝牙配对密码,可自定义,需与从机相同) | AT+PSWD=12345(蓝牙配对密码,可自定义,需与主机相同) |
AT+UART=115200,0,0(蓝牙通信串口波特率,停止位1位,无校检位,可根据需要自主配置,要求与主从机相同) | AT+UART=115200,0,0 |
AT+RMAAD(清空配对列表) | AT+RMAAD(清空配对列表) |
模块与手机的连接通讯
1)将PIO11置为高电平,蓝牙模块与USB-TTL转换模块连接,再连接到电脑上,进入命令响应工作模式。
2)打开串口调试助手,如图所示:
3)按图中所示,将蓝牙模块配置为从机模式,在此处,建议配置波特率为115200,因为大部分手机蓝牙串口软件常采用115200波特率。然后,将蓝牙模块断电,使PIO11悬空,重新上电,让蓝牙模块进入自动连接工作模式。(此步可忽略,默认情况下蓝牙模块为从机模式)
4)手机下载蓝牙串口助手,我推荐蓝牙调试器,这是我用过手机端最方便的蓝牙调试软件。打开调试软件,连接蓝牙,传输过程如下图所示:
手机已经与蓝牙模块配对成功
手机通过调试软件发送数据到蓝牙模块,经PC端串口通信接收。
同样地,手机也能收到蓝牙模块发送的数据。
注:手机端调试软件字符编码格式应选择GBK,否则会出现乱码。
模块与 PC 的连接通讯
前三步和模块与手机的连接通讯相同,唯独注意一下,配置自动连接工作模式的波特率为38400,否则会乱码。
4)电脑连接此蓝牙模块,此时再打开一个串口调试助手。
此时,会出现两个虚拟串口,其中只有一个能真正连接到蓝牙模块,试一试就好了。
配置完后如下图所示:
接下来,蓝牙模块就能与 PC 的互相发送数据了。
模块之间的连接通讯
按照上表配对指令,分别将两个蓝牙模块配置为主机、从机。
主机名称和从机名称,可自定义,蓝牙配对密码,可自定义,主从机相同,蓝牙通信串口波特率,可根据需要自主配置,要求与主从机相同。总体比较简单,不再演示说明。
配对成功指示灯说明:
模块配对成功,此时STA双闪(一次闪2下,2秒闪一次)
参考资料
https://blog.csdn.net/qq_29339467/article/details/95459177