晟辉智能制造

HC-05技术文档核心功能是什么?

HC-05 蓝牙模块 技术文档

HC-05 是一款高性能的主从一体蓝牙串口模块,遵循蓝牙 V2.0+EDR 规范,它可以将串口数据转换为蓝牙无线数据,或者将蓝牙无线数据转换为串口数据,从而实现各类设备(如单片机、电脑、手机)之间的无线串口通信。

HC-05技术文档核心功能是什么?-图1
(图片来源网络,侵删)

主要特性:

  • 蓝牙版本: Bluetooth V2.0 + EDR (Enhanced Data Rate)
  • 工作频率: 2.4GHz ISM 频段
  • 调制方式: GFSK
  • 发射功率: Class 2,可达 +4dBm
  • 灵敏度: -80dBm
  • 工作电压: 3.3V ~ 6V
  • 串口接口: TTL 电平 (RX, TX)
  • 工作模式: 主机模式、从机模式、回环模式
  • 默认波特率: 9600, 8, N, 1
  • 蓝牙名称: HC-05 (可通过 AT 指令修改)
  • 配对密码: 1234 或 0000 (可通过 AT 指令修改)

模块引脚定义

HC-05 模块通常通过排针或焊盘引出,常见的引脚排列如下:

引脚 名称 功能描述 电平
1 VCC 电源正极 3V - 6V
2 GND 电源地 GND
3 TXD 发送数据 (TTL 电平) 输出
4 RXD 接收数据 (TTL 电平) 输入
5 KEY / EN 模式切换引脚 高电平: AT 模式
低电平: 正常工作模式
6 STATE 连接状态指示 高电平: 已连接
低电平: 未连接
7 +5V (可选) 5V 电源输入 5V

重要提示:

  • TXD 和 RXD: 这两个引脚用于与主控板(如 Arduino、STM32)进行串口通信,连接时必须交叉连接,即 HC-05的TXD 连接到 主控板的RXDHC-05的RXD 连接到 主控板的TXD
  • KEY / EN 引脚: 这是切换工作模式的关键引脚。
    • 当此引脚接高电平时,模块进入 AT 指令模式
    • 当此引脚接低电平时,模块进入 正常工作模式(作为从机或主机)。
  • STATE 引脚: 可用于在程序中检测蓝牙连接状态,通常外接一个 LED 灯进行直观显示。

工作模式

HC-05 支持 3 种工作模式,通过 KEY 引脚和特定指令进行切换。

1 从机模式

这是最常用的模式,模块作为从机,等待主机(如手机、电脑)的连接请求。

HC-05技术文档核心功能是什么?-图2
(图片来源网络,侵删)
  • 进入方式:
    1. 确保 KEY 引脚为 低电平
    2. 给模块上电。
    3. 模块会自动进入从机模式,蓝牙名称为 HC-05(默认),等待配对。
  • 指示: 模块上的 LED 灯会 慢闪(约 2 秒闪一次),表示未连接;当连接成功后,LED 会 快闪(约 200ms 闪一次)。

2 主机模式

模块作为主机,可以主动搜索并连接其他蓝牙设备(尤其是另一个处于从机模式的 HC-05)。

  • 进入方式:
    1. 需要通过 AT 指令 将模块设置为可被其他主机连接(AT+ROLE=1)。
    2. 在程序中通过串口发送指令 AT+CMODE=1AT+RMAAD 清除之前的配对记录,并设置连接模式。
    3. 发送 AT+BIND= 指令来绑定目标从机的 MAC 地址。
    4. 重启模块,并将 KEY 引脚置为低电平上电,模块会自动连接绑定的设备。
  • 指示: 主机模式下的 LED 灯行为与从机模式类似,慢闪表示正在寻找或未连接,快闪表示已连接。

3 回环模式

此模式下,模块连接到自身,主要用于测试。

  • 进入方式: 通过 AT 指令设置 AT+ROLE=2

4 AT 指令模式

此模式用于配置模块的参数,如修改名称、密码、波特率等。

  • 进入方式:
    1. 将 KEY 引脚接 高电平 (VCC)。
    2. 给模块上电。
    3. 模块进入 AT 指令模式,LED 灯会 快速双闪(约 100ms 闪两次,停顿一下)。
  • 注意事项:
    • AT 指令的波特率可能与默认串口波特率不同,需要查阅模块手册或尝试常用波特率(如 38400)。
    • 所有 AT 指令都必须以 回车+换行 (\r\n0x0D 0x0A)

AT 指令集

在 AT 指令模式下,可以通过发送特定指令来配置模块。

HC-05技术文档核心功能是什么?-图3
(图片来源网络,侵删)
指令 功能 参数 示例 返回值
AT 测试通信 AT\r\n OK\r\n
AT+VERSION 查询固件版本 AT+VERSION\r\n VERSION:2.0-20100601\r\nOK\r\n
AT+NAME 设置/查询蓝牙名称 新名称 AT+NAMEMyArduino\r\n OK\r\n
AT+PSWD 设置/查询配对密码 4位密码 AT+PSWD1234\r\n OK\r\n
AT+BAUD 设置/查询串口波特率 (见下表) AT+BAUD4\r\n OK\r\n
AT+ADDR 查询模块 MAC 地址 AT+ADDR\r\n ADDR:98D3:31F2:5CBE\r\nOK\r\n
AT+ROLE 设置角色 0=从机, 1=主机 AT+ROLE1\r\n OK\r\n
AT+CMODE 设置连接模式 0=只连接绑定设备, 1=连接任何设备 AT+CMODE1\r\n OK\r\n
AT+RMAAD 移除所有配对记录 AT+RMAAD\r\n OK\r\n
AT+RESET 复位模块 AT+RESET\r\n OK\r\n

AT+BAUD 波特率设置对照表:

波特率 波特率
0 1200 4 38400
1 2400 5 57600
2 4800 6 115200
3 9600 7 230400
8 460800 9 921600

与 Arduino 连接示例

1 准备工作

  • Arduino Uno (或其他型号)
  • HC-05 蓝牙模块
  • 杜邦线若干

2 硬件连接 (从机模式)

HC-05 引脚 Arduino 引脚
VCC 5V
GND GND
TXD D10 (作为软件串口的 RX)
RXD D11 (作为软件串口的 TX)
KEY GND (设置为从机模式)

注意: Arduino Uno 只有一个硬件串口 (0, 1),通常用于上传代码和与电脑通信,为了避免冲突,我们使用 SoftwareSerial 库在数字引脚上创建一个虚拟串口。

3 代码示例 (回环测试)

这个示例让 HC-05 接收来自电脑串口的数据,并原样返回,形成一个回环。

#include <SoftwareSerial.h>
// 定义软件串口的 RX 和 TX 引脚
// HC-05 的 TXD 连接到 Arduino 的 RX (D10)
// HC-05 的 RXD 连接到 Arduino 的 TX (D11)
SoftwareSerial BTSerial(10, 11); // RX, TX
void setup() {
  // 初始化硬件串口,用于与电脑通信
  Serial.begin(9600);
  Serial.println("Arduino Bluetooth HC-05 is ready.");
  // 初始化软件串口,用于与 HC-05 通信
  // 这里的波特率必须和 HC-05 模块的默认波特率或设置后的波特率一致
  BTSerial.begin(9600); 
}
void loop() {
  // 如果电脑有数据发送过来
  if (Serial.available()) {
    // 读取数据
    char c = Serial.read();
    // 将数据发送给 HC-05
    BTSerial.write(c);
  }
  // HC-05 有数据发送过来
  if (BTSerial.available()) {
    // 读取数据
    char c = BTSerial.read();
    // 将数据发送到电脑串口监视器
    Serial.write(c);
  }
}

4 使用步骤

  1. 按照上述接线图连接硬件。
  2. 将代码上传到 Arduino。
  3. 打开 Arduino IDE 的 串口监视器 (波特率设置为 9600)。
  4. 在电脑上搜索蓝牙设备,找到 HC-05 并配对,密码为 1234
  5. 配对成功后,在串口监视器中输入任何字符,该字符会通过蓝牙发送给 Arduino,Arduino 再通过蓝牙发回,最终在监视器上显示出来。

常见问题与解决方案

  1. 无法进入 AT 模式:

    • 检查 KEY 引脚: 确保上电前 KEY 引脚稳定接高电平。
    • 检查波特率: 尝试使用不同的波特率(如 38400)发送 AT 指令。
    • 检查接线: 确保 TX/RX 交叉连接,且没有接反。
  2. AT 指令返回 ERROR

    • 检查指令格式: 确保指令拼写正确,并且以 \r\n
    • 检查当前模式: 确保模块确实在 AT 模式下(LED 快速双闪)。
  3. 无法配对或连接:

    • 检查电源: 确保 VCC 电压稳定在 3.3V-6V。
    • 检查距离: 确保设备在有效通信距离内(约 10 米)。
    • 检查密码: 确认输入的配对密码正确。
    • 重启设备: 尝试重新给 Arduino 和蓝牙模块上电。
  4. 数据传输乱码:

    • 检查波特率: 这是最常见的原因! 确保 Arduino 代码中 SoftwareSerial.begin() 的波特率与 HC-05 模块的波特率完全一致,如果通过 AT 指令修改了波特率,必须重新设置 Arduino 代码。

应用场景

  • 无线遥控: 用手机或电脑遥控 Arduino 控制的机器人、小车。
  • 数据采集: 将传感器数据(如温湿度、GPS)通过蓝牙实时传输到手机或电脑。
  • 智能家居控制: 通过手机 APP 控制家中的灯光、窗帘等设备。
  • 串口调试助手: 在没有物理串口线的情况下,用手机或电脑调试设备的串口输出。
  • 无线透传: 替代有线串口,实现设备间的无线数据交换。
分享:
扫描分享到社交APP
上一篇
下一篇