第2章 HC-05/HC-06模块详解:从引脚到AT指令
好,咱们直接进入正题。HC-05和HC-06这两个模块,可以说是STM32蓝牙开发里最常见的搭档了。我刚开始做蓝牙项目那会儿,也在这俩兄弟身上栽过跟头——说白了,它们长得像,脾气可不一样。
2.1 模块引脚定义:别接错了
先看引脚。HC-05和HC-06的引脚排列基本一致,但有个关键区别——EN引脚。我见过不少新手直接把HC-05当HC-06用,结果死活进不了AT模式。嗯,这里要注意。
| 引脚名称 | 功能说明 | 连接建议 |
|---|---|---|
| VCC | 电源正极,3.6V~6V | 推荐3.3V或5V,我习惯用3.3V |
| GND | 电源地 | 与STM32共地 |
| TXD | 模块发送,接STM32的RX | 注意交叉连接 |
| RXD | 模块接收,接STM32的TX | 注意交叉连接 |
| STATE | 状态指示(仅HC-05) | 可接GPIO检测连接状态 |
| EN | 使能/AT模式控制(仅HC-05) | 高电平进入AT模式 |
2.2 AT指令集与配置模式
AT指令,说白了就是模块的“控制语言”。你通过串口发一串字符,模块就按你的意思干活。HC-05和HC-06的AT指令大部分通用,但有些细节不一样。
2.2.1 进入AT模式
HC-05进AT模式有个固定流程:
- EN引脚拉高(3.3V)
- 模块上电或复位
- 等待1~2秒,模块以38400波特率启动
- 发送AT测试指令
HC-06就简单了——上电直接进AT模式,默认波特率9600。我个人习惯在调试时先用USB转TTL模块单独测试,确认模块正常再接到STM32上。
2.2.2 常用AT指令表
| 指令 | 功能 | 返回示例 |
|---|---|---|
AT |
测试连接 | OK |
AT+NAME=xxx |
设置蓝牙名称 | OK |
AT+PSWD=1234 |
设置配对码 | OK |
AT+UART=9600,0,0 |
设置波特率 | OK |
AT+ROLE=0 |
设置为主/从模式 | OK |
AT+ADDR? |
查询模块地址 | +ADDR:1234:56:789ABC |
2.3 主从模式设置
HC-05支持主从切换,HC-06固定为从机。你想想看,如果两个模块都是从机,谁主动发起连接?所以主从模式必须搞清楚。
2.3.1 模式对比
| 模式 | AT指令 | 适用场景 |
|---|---|---|
| 从机模式 | AT+ROLE=0 |
手机连接模块,最常见 |
| 主机模式 | AT+ROLE=1 |
模块主动连接另一个从机 |
| 回环模式 | AT+ROLE=2 |
测试用,不常用 |
我在一个项目中需要两个STM32通过蓝牙通信,当时用了两个HC-05,一个设为主机,一个设为从机。主机端用AT+CMODE=0指定连接目标地址,再用AT+BIND=地址绑定从机。嗯,这样上电就能自动连接。
2.4 波特率与配对码配置
这两个参数直接影响通信稳定性和安全性。我建议你按项目需求来配,别图省事用默认值。
2.4.1 波特率配置
HC-05默认AT模式波特率38400,透传模式默认9600。HC-06默认9600。配置指令格式:
AT+UART=<波特率>,<停止位>,<校验位>
// 示例:设置115200,1位停止位,无校验
AT+UART=115200,0,0
停止位参数:0=1位,1=2位。校验位参数:0=无,1=奇校验,2=偶校验。我个人习惯用115200,速度够快,STM32的USART也支持。
2.4.2 配对码配置
默认配对码是1234,但项目交付时最好改掉。配置指令:
AT+PSWD=xxxx
// 示例:设置配对码为8888
AT+PSWD=8888
配对码长度支持4~16位数字。我建议用6位以上,安全性好一些。不过要注意,改了配对码后,之前配过对的设备需要重新配对。
2.5 知识体系总览
下面这张图把本章的核心知识点串起来了,你看一眼就能明白模块配置的完整流程。
2.6 实战配置示例
最后给一个完整的配置流程,你照着做一遍就能跑通:
- 硬件连接:HC-05的VCC接3.3V,GND接GND,TXD接STM32的PA10(RX),RXD接PA9(TX),EN接3.3V
- 上电:模块指示灯慢闪(每2秒一次),表示进入AT模式
- 发送AT测试:收到OK,说明通信正常
- 配置名称:
AT+NAME=STM32-BLE - 配置配对码:
AT+PSWD=8888 - 设置从机模式:
AT+ROLE=0 - 配置波特率:
AT+UART=115200,0,0 - 保存并重启:重新上电,模块进入透传模式
🔑 核心要点:HC-05和HC-06最大的区别就是EN引脚和主从能力。选型时想清楚——如果只需要手机连模块,HC-06就够了,便宜又简单。如果需要模块之间通信,必须用HC-05。