HC-05蓝牙模块AT指令全攻略:从零配置到手机控制STM32实战

HC-05蓝牙模块AT指令全攻略:从零配置到手机控制STM32实战

1. 初识HC-05:蓝牙通信的核心桥梁

在嵌入式开发领域,无线通信技术的应用越来越广泛。HC-05作为一款经典的主从一体蓝牙串口模块,凭借其稳定性和易用性,成为众多开发者的首选。这款模块本质上是一个透明的无线串口转换器,它将复杂的蓝牙协议封装成简单的串口通信接口,让开发者无需深入理解蓝牙协议栈即可快速实现无线数据传输。

HC-05模块的核心特点包括:

  • 双模工作:支持主从模式切换,既可主动连接其他设备,也能被动等待连接
  • 广泛兼容:遵循蓝牙2.0+EDR规范,能与大多数智能设备配对
  • 灵活配置:通过AT指令可修改名称、密码、波特率等参数
  • 稳定传输:有效通信距离可达10米(视环境而定)

模块引脚定义如下表所示:

引脚名称 功能描述 连接注意事项
VCC 电源输入(3.6-6V) 建议稳定5V供电
GND 电源地 必须与主控共地
TXD 串行数据输出 接主控MCU的RXD
RXD 串行数据输入 接主控MCU的TXD
STATE 连接状态指示 可接LED指示灯
EN/KEY AT模式使能 进入AT模式时需要操作

提示:首次使用HC-05时,建议先用USB转TTL模块单独测试,确认模块功能正常后再接入主控系统。

2. AT指令配置全解析:从基础到高级

AT指令是配置HC-05模块的核心工具,正确的配置流程是项目成功的关键。首先需要了解模块的两种工作模式:

命令响应模式(AT模式):

  • 进入方式:按住模块上的按键上电,或EN引脚置高后上电
  • 状态指示:LED慢闪(约2秒一次)
  • 默认波特率:38400(与用户设置的通信波特率无关)

自动连接模式(工作模式):

  • 正常上电即进入
  • 状态指示:LED快闪(未连接)或常亮(已连接)

2.1 基础AT指令集

以下是HC-05最常用的AT指令及其功能:

AT                  # 测试指令,返回OK表示通信正常
AT+NAME?            # 查询当前设备名称
AT+NAME=MyHC05      # 设置设备名称为"MyHC05"
AT+PSWD?            # 查询配对密码
AT+PSWD="1234"      # 设置配对密码为1234
AT+UART?            # 查询串口参数
AT+UART=115200,0,0  # 设置波特率115200,1停止位,无校验
AT+ROLE?            # 查询当前角色
AT+ROLE=0           # 设置角色为从机(0:从机 1:主机 2:回环)
AT+ADDR?            # 查询模块蓝牙MAC地址
AT+VERSION?         # 查询固件版本信息
AT+ORGL             # 恢复出厂设置

注意:每条AT指令必须以回车换行结尾(\r\n),在串口调试工具中通常需要勾选"发送新行"选项。

2.2 主从模式配置实战

实现两个HC-05模块配对需要将一个设为主机,另一个设为从机。以下是具体步骤:

  1. 查询从机地址: 在从机模块上执行:

    AT+ADDR?
    

    记录返回的MAC地址,格式为"xxxx:xx:xxxxxx"

  2. 配置主机参数: 在主机模块上执行:

    AT+ROLE=1           # 设为主机模式
    AT+CMODE=0          # 指定地址连接模式
    AT+BIND=xxxx,xx,xxxxxx  # 绑定从机地址(将冒号替换为逗号)
    AT+PSWD=1234        # 设置与从机相同的密码
    AT+UART=115200,0,0  # 设置与从机相同的波特率
    
  3. 配置从机参数: 在从机模块上执行:

    AT+ROLE=0           # 设为从机模式
    AT+PSWD=1234        # 设置配对密码
    AT+UART=115200,0,0  # 设置波特率
    

配置完成后,给两个模块重新上电,它们会自动尝试建立连接。连接成功后,主机和从机的状态灯都会变为常亮。

2.3 常见配置问题排查

问题现象 可能原因 解决方案
AT指令无响应 波特率不正确 尝试38400或9600波特率
未正确进入AT模式 确认按键操作或EN引脚电平
模块无法配对 主从角色设置错误 检查AT+ROLE值
密码不一致 确认AT+PSWD设置相同
通信数据乱码 波特率不匹配 检查AT+UART设置
停止位/校验位设置错误 确保两端参数完全一致
连接频繁断开 电源不稳定 增加滤波电容,检查供电质量
距离过远或存在干扰 缩短距离,避开WiFi等干扰源

3. 硬件连接与STM32集成

3.1 典型连接电路

将HC-05与STM32连接需要遵循以下原则:

  • 电源稳定:模块工作电流峰值可达30mA,建议电源走线加10μF滤波电容
  • 电平匹配:HC-05的TXD/RXD为3.3V电平,与STM32可直接连接
  • 状态指示:可将STATE引脚接LED,直观显示连接状态

推荐连接方式:

HC-05        STM32F103
VCC  ------> 5V
GND  ------> GND
TXD  ------> PA3(USART2_RX)
RXD  ------> PA2(USART2_TX)

3.2 STM32硬件初始化

以下是在STM32CubeIDE中配置USART2的步骤:

  1. 在Pinout视图中启用USART2异步模式
  2. 配置参数:波特率115200,8数据位,无校验,1停止位
  3. 启用USART2全局中断
  4. 生成代码后添加以下初始化代码:
void MX_USART2_UART_Init(void) {
  huart2.Instance = USART2;
  huart2.Init.BaudRate = 115200;
  huart2.Init.WordLength = UART_WORDLENGTH_8B;
  huart2.Init.StopBits = UART_STOPBITS_1;
  huart2.Init.Parity = UART_PARITY_NONE;
  huart2.Init.Mode = UART_MODE_TX_RX;
  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart2) != HAL_OK) {
    Error_Handler();
  }
}

3.3 数据收发实现

采用中断方式接收数据的示例代码:

#define RX_BUF_SIZE 128

uint8_t rx_buf[RX_BUF_SIZE];
uint8_t rx_data;
uint16_t rx_index = 0;

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
  if(huart->Instance == USART2) {
    if(rx_index < RX_BUF_SIZE-1) {
      rx_buf[rx_index++] = rx_data;
      if(rx_data == '\n') {  // 检测到换行符认为一帧结束
        process_r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值