ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ESP32 蓝牙配网实战:用 ESP-IDF 的 BluFi,3 步把 Wi-Fi 密码安全送进芯片

ESP32 蓝牙配网实战:用 ESP-IDF 的 BluFi,3 步把 Wi-Fi 密码安全送进芯片 ESP32 蓝牙配网实战用 ESP-IDF 的 BluFi3 步把 Wi-Fi 密码安全送进芯片【免费下载链接】esp-idfEspressif IoT Development Framework. Official development framework for Espressif SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-idf你手头有一台没有屏幕的设备却必须连上 Wi-Fi怎么办BluFi 就是为此而生它借用蓝牙通道把 Wi-Fi 的 SSID 和密码安全地隔空传给 ESP32 芯片而 ESP-IDF 框架已经把这个蓝牙配网协议做成了现成组件。你不必扫二维码也不必让设备先连上某个配网专用网络——手机通过蓝牙把凭证发过去设备自己连上路由器。全景速览一张图看懂 BluFi 整条链路很短你的手机装 EspBlufi App→ 蓝牙 → ESP32跑 BluFi 示例→ Wi-Fi 路由器。手机先通过 GATT蓝牙的数据传输协议连上 ESP32双方在蓝牙里协商出一把秘密钥匙然后手机把 Wi-Fi 凭证加密后发过来ESP32 解密、拿它去连路由器最后把连接状态回传给你。设备上电、BluFi 初始化完成后串口会打出这样的日志说明蓝牙配网已就绪把它和 SmartConfig手机把 Wi-Fi 信息以广播包形式发出ESP32 用 2.4G Wi-Fi 听广播这类传统配网对比差异有五点凭证走蓝牙而非 Wi-Fi 广播不依赖设备处于听广播状态两边也不要求在同一网络里每帧都加密并带 CRC16 校验Wi-Fi 密码不会以明文出现在空中支持 Station、SoftAP、APSTA 组合三种模式SmartConfig 基本只管连路由器加密与校验算法可以自定义安全级别随项目要求上调或下调手机端是标准 GATT ClientApp 开源可自己魔改界面三步跑通最小配网 路线一Station 模式设备连已有 Wi-Fi硬件就绪开发板用 USB 连上电脑打开串口工具。校验点串口出现BLUFI init finish说明配网通道已就绪。烧录示例打开 BluFi 示例工程执行idf.py set-target esp32再执行idf.py flash monitor。校验点烧录成功串口持续输出 BLUFI 版本与初始化日志。手机配网安装 EspBlufi App授予蓝牙、Wi-Fi、定位权限刷新列表连上 ESP32点 Networking选 Station选中路由器并输入密码。校验点App 显示连接成功串口里设备连上 AP 并拿到 IP。路线二SoftAP 模式设备自己当路由器硬件就绪同上确认串口出现BLUFI init finish。烧录同一个示例不需要改任何代码SoftAP 只是 App 里的一个运行时选项。校验点示例正常跑起来。手机设热点蓝牙连上后在 App 里选 SoftAP 模式填写热点 SSID、密码和加密方式。校验点用手机搜索到并连上这个新建热点。顺带一提示例支持 ESP32、C2、C3、C5、C6、C61、S3、S31 等目标芯片换芯片只需改一行idf.py set-target 芯片。协议与安全机制深挖 帧结构与分片BluFi 规定每次蓝牙传输都按固定格式打包字段速查表如下字段长度一句话解释类型1 字节这是什么帧控制帧还是数据帧帧控制1 字节携带已加密后面还有分片等标志位序列号1 字节逐帧递增用来防止重放数据长度1 字节后面数据字段的实际长度数据N 字节真正的内容SSID、密码等校验2 字节对数据做的 CRC16 校验值内容太长装不进一帧时自动分片帧控制位打上分片标志数据部分的前 2 字节写明整包总长度。接收端照这个长度预分配内存再按序列号把碎片依次拼回去。加密 / 校验 / 防重放设备端默认配了三件安全武器密钥协商DH 算法双方各发一个公开参数各自在本地算出同一把秘密钥匙钥匙本身从不上链路数据加密128 位 AES每帧的数据字段都用这把钥匙加密完整性校验CRC16数据被篡改哪怕 1 个字节校验也会失败再加上序列号必须严格递增重复的旧帧直接丢弃重放攻击因此失效。如果你想换更强的算法ESP-IDF 留了四个回调注册点签名长这样esp_blufi_register_encrypt_func(esp_blufi_encrypt_func_t f); // 加密 esp_blufi_register_decrypt_func(esp_blufi_decrypt_func_t f); // 解密 esp_blufi_register_checksum_func(esp_blufi_checksum_func_t f); // 校验 esp_blufi_register_nego_data_handler(esp_blufi_negotiate_data_handler_t h); // 协商分别对应加解密一对、校验一个、协商数据处理一个全部可替换成你自己的实现。落地选型与避坑BluFi 最适合无屏 IoT 设备和批量配网设备没有屏幕、没有摄像头现场一次铺几十台也不怕只要有手机和蓝牙就能逐台喂凭证。相比其他方案它的长项是链路加密、安全级别可调短项是蓝牙有效距离短米级且手机端要装专门的 App。三个高频疑问快答支持 5GHz Wi-Fi 吗不支持。ESP32 系列芯片的 Wi-Fi 只有 2.4GHzBluFi 配的目标网络也限于 2.4GHz 频段。安全级别怎么定一般消费类产品用默认的 DH AES128 CRC16 就够了保密要求更高的场景可以注册自定义的加密与校验回调把级别拉满。新项目还该选它吗说句实话官方 README 已注明 BluFi 处于维护模式不再规划新功能新项目建议优先考虑官方维护的 network_provisioning 组件BluFi 适合存量设备、学习协议和轻量场景。更细的协议说明在 BluFi 官方文档API 细节见 esp_blufi_api.h。【免费下载链接】esp-idfEspressif IoT Development Framework. Official development framework for Espressif SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-idf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表