5.2 KiB
5.2 KiB
BluFi配网使用指南
概述
本项目已成功集成BluFi配网功能,实现了蓝牙优先配网,2分钟超时后自动回退到WiFi AP配网模式。
配网流程
1. 自动配网流程
- 设备启动 - 设备启动后自动检查是否有已保存的WiFi凭据
- BluFi优先 - 如果没有WiFi凭据或WiFi连接失败,自动启动BluFi配网
- 设备广播 - 设备开始蓝牙广播,设备名格式:
Airhub-XXXXXX(后6位为MAC地址) - 客户端连接 - 用户使用手机APP连接设备
- WiFi配置 - 通过APP发送WiFi SSID和密码
- 自动连接 - 设备接收到WiFi凭据后自动尝试连接
- 超时回退 - 如果2分钟内配网未成功,自动切换到WiFi AP模式
2. 状态指示
- BluFi配网模式 - 显示"BluFi配网模式"和设备名
- 客户端连接 - 显示"客户端已连接"
- 凭据接收 - 显示"WiFi凭据已接收"
- 连接成功 - 显示"WiFi连接成功"并播放提示音
- 连接失败 - 显示"WiFi连接失败"
- 配网超时 - 自动切换到WiFi AP模式
客户端APP开发
Android开发示例
// 1. 添加蓝牙权限
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
// 2. 扫描BluFi设备
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothLeScanner scanner = bluetoothAdapter.getBluetoothLeScanner();
// 3. 连接设备并发送WiFi凭据
// 使用ESP-IDF提供的BluFi库或自定义实现
iOS开发示例
// 1. 添加蓝牙权限到Info.plist
<key>NSBluetoothAlwaysUsageDescription</key>
<string>需要蓝牙权限进行设备配网</string>
// 2. 使用Core Bluetooth框架
import CoreBluetooth
// 3. 实现CBCentralManagerDelegate和CBPeripheralDelegate
// 4. 扫描并连接BluFi设备
// 5. 发送WiFi凭据
微信小程序开发示例
// 1. 开启蓝牙适配器
wx.openBluetoothAdapter({
success: function(res) {
console.log('蓝牙适配器开启成功');
}
});
// 2. 搜索蓝牙设备
wx.startBluetoothDevicesDiscovery({
services: [], // BluFi服务UUID
success: function(res) {
console.log('开始搜索设备');
}
});
// 3. 连接设备并发送WiFi信息
// 使用wx.createBLEConnection()和wx.writeBLECharacteristicValue()
技术规格
BluFi协议参数
- 服务UUID: ESP32 BluFi标准服务
- 设备名前缀:
Airhub- - 配网超时: 120秒(2分钟)
- 最大连接数: 1个客户端
- 安全模式: 支持加密传输(可配置)
支持的WiFi参数
- SSID: 最长32字节
- 密码: 最长64字节
- 安全类型: WPA/WPA2/WPA3
- 频段: 2.4GHz
配置选项
可通过idf.py menuconfig配置以下选项:
Component config → Bluetooth Provisioning Configuration
├── Enable Bluetooth Provisioning [*]
├── Device Name Prefix (Airhub)
├── Security Mode (0)
├── Auto Stop After Success [*]
├── Stop Delay (seconds) (5)
├── WiFi Connection Timeout (seconds) (30)
├── WiFi Retry Count (3)
└── Enable Verbose Logging [ ]
故障排除
常见问题
-
BluFi启动失败
- 检查sdkconfig中蓝牙配置是否正确
- 确认CONFIG_BT_ENABLED=y
- 确认CONFIG_BT_BLUFI_ENABLED=y
-
客户端无法发现设备
- 确认设备蓝牙广播正常
- 检查客户端蓝牙权限
- 确认设备名称格式正确
-
WiFi连接失败
- 检查WiFi凭据是否正确
- 确认WiFi信号强度
- 检查路由器兼容性
-
配网超时
- 检查客户端APP实现
- 确认蓝牙连接稳定性
- 调整超时时间配置
调试方法
-
启用详细日志
CONFIG_LOG_DEFAULT_LEVEL_DEBUG=y CONFIG_BT_STACK_NO_LOG=n -
监控串口输出
idf.py monitor -
使用蓝牙抓包工具
- Android: HCI Snoop Log
- iOS: PacketLogger
- PC: Wireshark + Bluetooth adapter
性能优化
内存优化
- 蓝牙协议栈预留内存:64KB
- BluFi最大连接数:1
- 动态内存分配:关闭
功耗优化
- 配网成功后自动停止蓝牙
- 支持蓝牙低功耗模式
- WiFi和蓝牙共存优化
安全考虑
数据加密
- 支持AES加密传输
- 可配置PSK预共享密钥
- 防重放攻击保护
访问控制
- 设备名称随机化
- 连接超时保护
- 最大重试次数限制
扩展功能
自定义数据传输
- 支持自定义数据通道
- 设备信息查询
- 固件版本检查
- OTA升级支持
多语言支持
- 中文界面提示
- 英文调试信息
- 可扩展其他语言
版本历史
- v1.0.0 - 初始版本,基础BluFi配网功能
- v1.1.0 - 添加超时回退机制
- v1.2.0 - 优化用户界面和提示
- v1.3.0 - 添加安全加密支持
技术支持
如有问题,请检查:
- ESP-IDF版本兼容性
- 硬件蓝牙模块状态
- 客户端APP实现
- 网络环境配置
更多技术细节请参考ESP-IDF官方BluFi文档。