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

5.2 KiB
Raw Blame History

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开发示例

// 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                  [ ]

故障排除

常见问题

  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. 监控串口输出

    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文档。