HC-05蓝牙模块——学习笔记

HC-05蓝牙模块——学习笔记

H_Haozi Lv2

A 引入

A.1 模块和单片机型号说明

模块:HC-05 + USB转TTL
单片机:stm32f103c8t6
函数库:标准库

当然,这只是一个大学生的学习笔记

B 模块介绍

蓝牙模块常用的分为HC-05HC-06,二者最主要的区别就是HC-05可以当主机(主从一体),而HC-06只能当从机.
因为我学习的是双向通信,所以本文主要以HC-05介绍功能和使用方法

B.1 HC-05简介

HC-05 蓝牙串口通信模块,是基于 Bluetooth Specification V2.0 带 EDR 蓝牙协议的
数传模块。无线工作频段为 2.4GHz ISM,调制方式是 GFSK。模块最大发射功率为 4dBm,
接收灵敏度-85dBm,板载 PCB 天线,可以实现 10 米距离通信。
模块采用邮票孔封装方式,模块大小 27mm×13mm×2mm,方便客户嵌入应用系统之
内,自带 LED 灯,可直观判断蓝牙的连接状态。
模块采用 CSR 的 BC417 芯片,支持 AT 指令,用户可根据需要更改角色(主、从模式)
以及串口波特率、设备名称等参数,使用灵活。

B.2 引脚定义

引脚编号 定义 说明
1 TXD URAT 输出口,用于发送数据
2 RXD URAT 输入口,用于接收数据
3 VCC 电源,接3.3V或5V(根据模块规格)
4 GND 接地
5 EN(KEY) AT指令设置脚,高电平时进入AT模式,低电平时为正常工作模式;与按键功能相同
6 STATE 蓝牙状态引出脚,未连接时输出低电平,连接时输出高电平

B.3 补充说明

1.如封面图,这是一个封装好的模块,输入电压为3.2~6V,模块内置降压到3.3V,注意看买的模块的商家说明
2.通信距离一般为10米,越远越不保证通信质量
3.当配对后蓝牙可以当做全双工串口通信使用,不需用了解具体的蓝牙协议
4.默认值:从机,波特率9600,停止位1,校验位N,如果想要更改可以使用AT指令

C 使用方法

C.1 单向通信

当进行单向通信的时候,我们可以将它直接与stm32的IO口连接,并配置好串口通信(注意要与HC-05串口配置值相同,波特率停止位等,如果要更改可以看后面的AT指令),然后让手机或者其它外设连接蓝牙,利用蓝牙调试助手等工具发送消息,就可以在stm32上面利用串口中断接受到发送的数据。
由上面的操作便可以远处发送指令点灯,遥控车等

当我们对蓝牙进行调试的时候,可以直接用USB转TTL连接蓝牙模块,蓝牙TX接串口RX,蓝牙RX接串口TX,GND相连,VCC接3.3V或5V,然后电脑打开串口助手调好参数,手机连接蓝牙调试助手连接蓝牙(默认名称:HC-05),就可以手机发送电脑接收或者交换。

C.2 AT指令

在使用双向通信之前,要先了解AT指令,这是利用串口发送指令对蓝牙模块配置的过程,通过AT指令可以设置设备名称,设备配对码,设备模式,设备串口参数…..

C.2.1 常用的AT指令

下面是比较常用的几条AT指令:

指令 作用 回复 参数说明
AT 测试指令 OK
AT+ORGL 恢复默认状态 OK
AT+ADDR 获取模块蓝牙地址 +ADDR:<address>
AT+NAME=<Param> 设置设备名称 OK <Param>:设备名称(如"HC-05"
AT+NAME? 查询设备名称 +NAME:<name>
AT+ROLE=<Param> 设置模块角色 OK <Param>0(从模式),1(主模式),2(回环模式)
AT+ROLE? 查询模块角色 +ROLE:<role>
AT+PSWD=<Param> 设置配对码 OK <Param>:配对码(如"1234"
AT+PSWD? 查询配对码 +PSWD:<password>
AT+UART=<Param>,<Param2>,<Param3> 设置串口参数 OK <Param>:波特率(如9600),<Param2>:停止位(0-1位,1-2位),<Param3>:校验位(0-无校验,1-奇校验,2-偶校验)
AT+UART? 查询串口参数 +UART:<baud>,<stop>,<parity>
AT+CMODE=<Param> 设置连接模式 OK <Param>0(指定地址连接),1(任意地址连接),2(回环模式)
AT+CMODE? 查询连接模式 +CMODE:<mode>
AT+BIND=<Param> 设置绑定地址 OK <Param>:绑定地址(如"98D3,31,F60B0A"
AT+BIND? 查询绑定地址 +BIND:<address>

模块进入AT模式的该方法
1、模块上电,未配对情况下就是 AT 模式,波特率为模块本身的波特率,默认:9600,发送 AT 指令时需要置高一
次 PIO11。
2、PIO11 置高电平后,再给模块上电,此时模块进入 AT 模式,波特率固定为:38400,可以直接发送 AT 指令
注意:这里的PIO11 置高电平就是那个按钮(长按按钮上电,就会将波特率调到默认的38400)

C.2.2 调试AT指令过程中的问题

问题1:发送指令没有反应
原因1: 在发送AT指令之前,要先将34引脚置高电平,即蓝牙模块上面有个按钮要先按一下,个别指令需用一直按着然后发送
原因2: 可能蓝牙模块与你的串口的波特率不一致,请选择尝试9600和38400波特率,如果都不可以,选择长按按钮复重置到38400的波特率再重新尝试
原因3 AT指令的结尾为”/r/n”,如果你发送的指令没有,可能会没有反应,同事注意符号都为中文

C.3 双向通信

C.3.1 双蓝牙通信配置过程

大家配置的时候,可以在每个操作之后再使用查询指令,确认自己设置的是否正确

建议先对从机操作,下面以我配置过程举个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
*********************从机配置*********************
AT+ORGL //从机初始化,注意使用完这个指令之后波特率会更改为38400
AT+ROLE=0 //从机设置角色模式
AT+PSWD=1977 //从机设置配对码,有些蓝牙模块可能是6位密码
AT+ADDR? //查询从机地址,后面需用使用这个值,假设为3A:CE:59:C0:C0:34
AT+UART=9600,0,0 //从机设置串口通信

*********************主机配置*********************
AT+ORGL //主机初始化,注意使用完这个指令之后波特率会更改为38400
AT+ROLE=1 //主机设置角色模式
AT+PSWD=1977 //主机设置配对码,注意要和从机相同
AT+BIND=3A,CE,59,C0,C0,34 //主机设置绑定地址,注意冒号更改成英文逗号
AT+CMODE=0 //主机设置连接模式,这样才能自动连接绑定的地址
AT+UART=9600,0,0 //主机设置串口通信

当全部配置完毕之后,将两个蓝牙模块连接电源,注意EA/KEY引脚不接,然后二者则会自动配对,可以互相发送接受指令.

C.3.2 配置过程遇到的问题

问题1:设置密码的时候返回FAIL
原因1: 设置密码的时候注意密码如果有双引号,不要使用中文输入法,也可以尝试不使用双引号
原因2: 可以询问你的商家给你的模块密码是几位,大多数的HC-05都是四位密码,默认“1234”,但是也有例外,比如我买的密码是6位的,所以需要更改设置密码的长度

问题2:全部设置完了,但是两个蓝牙无法互相连接
原因1: 这里先说明连接成功后的状态,
连线前:
主机未记录从机地址时,快闪;
主机记录从机地址时,慢闪;
从机快闪。
连线后:
LED 两闪一停。
先置高 KEY 脚再给模块上电,进入 AT 指令模式,波特率固定为 38400,
LED 每 2 秒亮 1 秒。
如果无法连接,先检查电路电压是否稳定,或者有没有干扰什么的
原因2: 在设置设置绑定地址的时候,注意地址之间的冒号要更改成英文的逗号,不然可能会出现这个问题
原因3: 注意主机和从机的模式要设置正确,并且主机的连接模式最好设置成0,即指定地址连接(AT+CMODE=0)

参考文献

1.HC-05 蓝牙 2.0 串口模块 用户手册

留言

有问题请指出,你可以选择以下方式:

  1. 在下方评论区留言
  2. 邮箱留言
  • Title: HC-05蓝牙模块——学习笔记
  • Author: H_Haozi
  • Created at : 2025-03-11 15:25:30
  • Updated at : 2025-03-19 19:25:35
  • Link: https://redefine.ohevan.com/2025/03/11/embedded_HC_05/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments