toy-hardware/main/BluFi配网使用指南.md

216 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BluFi配网使用指南
## 概述
本项目已成功集成BluFi配网功能实现了蓝牙优先配网2分钟超时后自动回退到WiFi AP配网模式。
## 配网流程
### 1. 自动配网流程
1. **设备启动** - 设备启动后自动检查是否有已保存的WiFi凭据
2. **BluFi优先** - 如果没有WiFi凭据或WiFi连接失败自动启动BluFi配网
3. **设备广播** - 设备开始蓝牙广播,设备名格式:`Airhub-XXXXXX`后6位为MAC地址
4. **客户端连接** - 用户使用手机APP连接设备
5. **WiFi配置** - 通过APP发送WiFi SSID和密码
6. **自动连接** - 设备接收到WiFi凭据后自动尝试连接
7. **超时回退** - 如果2分钟内配网未成功自动切换到WiFi AP模式
### 2. 状态指示
- **BluFi配网模式** - 显示"BluFi配网模式"和设备名
- **客户端连接** - 显示"客户端已连接"
- **凭据接收** - 显示"WiFi凭据已接收"
- **连接成功** - 显示"WiFi连接成功"并播放提示音
- **连接失败** - 显示"WiFi连接失败"
- **配网超时** - 自动切换到WiFi AP模式
## 客户端APP开发
### Android开发示例
```java
// 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开发示例
```swift
// 1. 添加蓝牙权限到Info.plist
<key>NSBluetoothAlwaysUsageDescription</key>
<string>需要蓝牙权限进行设备配网</string>
// 2. 使用Core Bluetooth框架
import CoreBluetooth
// 3. 实现CBCentralManagerDelegate和CBPeripheralDelegate
// 4. 扫描并连接BluFi设备
// 5. 发送WiFi凭据
```
### 微信小程序开发示例
```javascript
// 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 [ ]
```
## 故障排除
### 常见问题
1. **BluFi启动失败**
- 检查sdkconfig中蓝牙配置是否正确
- 确认CONFIG_BT_ENABLED=y
- 确认CONFIG_BT_BLUFI_ENABLED=y
2. **客户端无法发现设备**
- 确认设备蓝牙广播正常
- 检查客户端蓝牙权限
- 确认设备名称格式正确
3. **WiFi连接失败**
- 检查WiFi凭据是否正确
- 确认WiFi信号强度
- 检查路由器兼容性
4. **配网超时**
- 检查客户端APP实现
- 确认蓝牙连接稳定性
- 调整超时时间配置
### 调试方法
1. **启用详细日志**
```
CONFIG_LOG_DEFAULT_LEVEL_DEBUG=y
CONFIG_BT_STACK_NO_LOG=n
```
2. **监控串口输出**
```bash
idf.py monitor
```
3. **使用蓝牙抓包工具**
- 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** - 添加安全加密支持
## 技术支持
如有问题,请检查:
1. ESP-IDF版本兼容性
2. 硬件蓝牙模块状态
3. 客户端APP实现
4. 网络环境配置
更多技术细节请参考ESP-IDF官方BluFi文档。