从AT指令到数据收发:用HC-05蓝牙模块和安卓App打造你的第一个无线通信项目
在创客和物联网开发领域,蓝牙通信一直是连接硬件与移动设备的黄金标准。HC-05作为经典蓝牙模块,以其稳定性和易用性成为无数项目的起点。但真正让蓝牙模块发挥价值的,远不止于简单的配对连接——关键在于如何设计可靠的双向通信协议,实现硬件与手机的智能对话。本文将带您从零构建一个手机遥控LED系统,同时掌握可复用的蓝牙通信框架。
1. 硬件准备与环境搭建
1.1 核心硬件选型
HC-05模块有两种工作模式:
- 命令模式:AT指令配置参数(波特率、名称、配对密码)
- 数据传输模式:透明传输串口数据
推荐准备以下硬件组合:
- HC-05主从一体模块(带状态指示灯)
- USB转TTL模块(建议使用CP2102或CH340芯片)
- Arduino开发板(可选,用于后续扩展)
- LED及220Ω电阻(用于控制演示)
1.2 关键连接步骤
# 接线示意图(USB转TTL与HC-05) VCC → 3.3V GND → GND TXD → RXD RXD → TXD EN → 3.3V(AT模式)/ GND(通信模式)注意:首次使用时需通过
AT+UART?确认模块波特率,常见值为9600/38400/115200。若通信失败,可尝试所有波特率组合。
2. AT指令深度配置实战
2.1 基础参数设置
通过串口工具(如Arduino IDE串口监视器)发送下列指令:
AT+NAME=MyBT_Module // 设置设备名称 AT+PSWD="1234" // 设置配对密码 AT+ROLE=0 // 设为从机模式 AT+CMODE=1 // 允许任意地址连接2.2 高级功能配置
// 查询模块地址 AT+ADDR? // 设置串口参数(波特率、停止位等) AT+UART=9600,0,0 // 恢复出厂设置 AT+ORGL提示:使用
AT+RESET指令使配置生效前,建议先用AT+STATE?检查当前状态。
3. 手机端通信框架设计
3.1 蓝牙调试工具对比
| 工具名称 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 蓝牙调试器 | 支持Hex/ASCII双模式 | 界面较老旧 | 基础数据收发 |
| Serial Bluetooth | 可保存常用指令 | 广告较多 | 周期性指令发送 |
| BLE Terminal | 支持数据图表化 | 仅兼容BLE设备 | 传感器数据监控 |
3.2 自定义通信协议示例
# 指令格式设计(LED控制) ON_LED = b'\xA1\x01' # 开灯指令 OFF_LED = b'\xA1\x00' # 关灯指令 GET_TEMP = b'\xB2\xFF' # 获取温度 # 数据包结构 [HEADER][CMD][LEN][DATA][CHECKSUM]4. 双向通信实战案例
4.1 手机控制硬件LED
- 在蓝牙调试器中发送Hex格式指令
A1 01 - Arduino解析代码示例:
void handleBluetooth() { if(Serial.available() >= 2){ byte header = Serial.read(); byte command = Serial.read(); if(header == 0xA1){ digitalWrite(LED_PIN, command); } } }4.2 硬件上报传感器数据
// 温度传感器数据上报 void reportTemperature() { float temp = readTempSensor(); byte checksum = 0xB2 + sizeof(temp); Serial.write(0xB2); Serial.write((byte*)&temp, sizeof(temp)); Serial.write(checksum); }5. 常见问题排查指南
5.1 连接异常处理流程
指示灯状态诊断:
- 快闪(2次/秒):等待配对
- 慢闪(1次/2秒):已配对未通信
- 双闪:通信中
数据收发失败检查:
- 确认TX/RX线序是否正确
- 检查两端波特率是否一致
- 验证EN引脚电平状态
5.2 抗干扰优化技巧
- 在电源并联100μF电容
- 避免与WiFi设备共用2.4GHz频段
- 使用
AT+POLAR调整信号极性
6. 项目扩展与进阶方向
6.1 物联网原型开发
将HC-05与ESP8266组合使用:
graph LR 传感器 --> Arduino Arduino --> HC-05 HC-05 --> 手机App 手机App --> 云服务器6.2 多设备组网方案
通过设置不同的模块角色:
// 主机模式配置 AT+ROLE=1 AT+INQM=1,5,3 // 设置查询模式在实际项目中,最实用的技巧是使用AT+BIND绑定特定设备地址,避免误连接。我曾在一个智能农场项目中,通过地址绑定实现了10个蓝牙节点与中央控制器的稳定通信。