1. 项目背景与核心问题
在ESP32的BLE配网开发中,我们经常遇到一个典型问题:当目标Wi-Fi处于隐藏SSID模式时,App端需要正确发送STA_BSSID参数才能建立连接。但实际开发中,经常出现"ESP32收不到BSSID"的诡异情况。这时候就需要一个可靠的工具来验证数据链路是否畅通。
nRF Connect作为一款专业的蓝牙调试工具,可以绕过App直接验证BLUFI协议栈的数据传输。这个方法尤其适合以下场景:
- App开发团队和固件团队互相甩锅时快速定位问题
- 验证BLUFI协议中STA_BSSID字段的传输有效性
- 排查加密校验导致的报文丢弃问题
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与工具配置
2.1 硬件设备清单
- 搭载ESP32的目标设备(需已烧录支持BLUFI的固件)
- 安卓/iOS手机(安装nRF Connect应用)
- 可选:USB转TTL模块(用于查看ESP32串口日志)
2.2 nRF Connect基础配置
- 在应用商店下载安装nRF Connect(Nordic官方出品)
- 打开应用后授予位置权限(BLE扫描必需)
- 进入Scanner界面,点击右上角扫描按钮
注意:Android 6.0+需要开启定位服务才能扫描BLE设备,这是系统级限制
2.3 ESP32蓝牙服务确认
在nRF扫描结果中,目标ESP32设备通常会显示为"ESP32"或厂家自定义名称。连接后需要确认以下服务特征:
- 主服务UUID:0xFFFF
- 写特征UUID:0xFF01(手机→ESP32方向)
- 通知特征UUID:0xFF02(ESP32→手机方向)
如果找不到这些标准UUID,说明:
- 固件可能修改了默认UUID
- 设备运行的并非BLUFI协议
- BLE服务未正确初始化
3. BLUFI协议帧结构解析
3.1 基础帧格式
BLUFI协议的数据帧采用分层结构,完整格式如下:
| 字段 | 长度(byte) | 说明 |
|---|---|---|
| Type | 1 | 帧类型+子类型 |
| FrameCtrl | 1 | 帧控制字段 |
| Sequence | 1 | 序列号 |
| Length | 1 | 数据长度 |
| D |
