一、课程导论与方案概览
1.1 什么是BLE辅助WiFi配网?
说白了,就是让手机通过蓝牙把WiFi的SSID和密码“悄悄”告诉设备。
设备上电后,先开启蓝牙广播。手机App扫描到设备,建立蓝牙连接,然后把WiFi信息发过去。设备收到后,切换网卡连上路由器,配网完成。
整个过程,用户只需要在App里选一下WiFi、输一次密码。不需要手机切换热点,不需要对着设备喊“快连”。
核心流程: 手机BLE → 设备蓝牙接收WiFi凭证 → 设备切换WiFi → 联网成功
我在项目中第一次用这个方案时,心里还犯嘀咕:蓝牙传个密码而已,至于这么折腾吗?后来发现,真香。
1.2 为什么需要它?传统配网方式的痛点
先看看我们以前怎么配网的。我列了三种常见方式,你想想看自己踩过哪些坑。
| 配网方式 | 原理 | 痛点 |
|---|---|---|
| AP模式 | 设备开启热点,手机连上后发WiFi信息 | 手机要断开当前WiFi,切来切去;热点名称乱,用户容易连错 |
| SmartConfig | 手机广播UDP包,设备监听信道抓包解析 | 成功率看脸;路由器隔离AP、5G频段干扰、加密方式不兼容 |
| 蓝牙辅助配网 | 蓝牙直连,双向通信,稳定传输WiFi凭证 | 需要额外蓝牙芯片(或双模SoC),成本略高 |
AP模式 的问题很明显。我记得有一次帮朋友调试智能灯,手机切热点切了四五次,每次都要重新输入密码。朋友问我:“这灯是不是智商税?”我无言以对。
SmartConfig 更玄学。它本质上是靠WiFi信道里的长度编码来传数据。路由器如果开了AP隔离,或者手机连的是5G频段而设备只支持2.4G,直接失败。我在一个项目中遇到过,同一款模组,在TP-Link路由器上成功率95%,换到某米路由器直接降到40%。排查了三天,最后发现是路由器组播包转发策略不同。
避坑提醒: SmartConfig在复杂网络环境下几乎不可用。如果你做的是面向C端的产品,用户不会理解“请关闭AP隔离”这种话。
蓝牙辅助配网,说白了就是绕开了WiFi本身的不可控因素。蓝牙是点对点直连,手机和设备之间建立可靠链路,传个几十字节的WiFi信息,几乎不会丢包。而且蓝牙可以双向通信——设备还能告诉手机“我连上了”或者“密码错了”。
1.3 本课程的整体技术栈与学习路径
这个课程不是纯理论,也不是只讲一个Demo。我会带你从零搭一套完整的BLE辅助WiFi配网方案。技术栈如下:
- 硬件平台: ESP32-C3(内置BLE+WiFi双模,性价比高)
- 蓝牙协议栈: NimBLE(开源、轻量、支持蓝牙5.0)
- WiFi配网协议: 自定义GATT Service,包含WiFi SSID、密码、Token等特征值
- 手机端: 小程序(方便跨平台,无需安装App)
- 安全机制: 蓝牙配对绑定 + 加密传输 + 防重放攻击
学习路径我建议这样走:
- 先理解BLE基础概念(Service、Characteristic、UUID)
- 搭建ESP32-C3开发环境,跑通BLE广播和连接
- 实现WiFi配网GATT服务端
- 开发小程序蓝牙配网客户端
- 加入安全机制和异常处理
- 做压力测试和兼容性验证
我的建议: 不要一上来就啃蓝牙协议栈源码。先跑通一个最简单的“蓝牙传字符串”Demo,再逐步加功能。这样遇到问题容易定位。
下面这张图展示了整个配网方案的架构和流程:
嗯,这里要注意一点:配网成功后,设备可以继续保持蓝牙连接用于后续控制,也可以断开蓝牙只走WiFi。具体看产品需求。我个人习惯是配网完成后断开蓝牙,减少功耗和协议栈负担。
1.4 课程适合谁?
- 做IoT产品开发的嵌入式工程师
- 想从零掌握BLE+WiFi双模开发的初学者
- 被SmartConfig折磨过、想找稳定替代方案的人
如果你用过ESP8266或者ESP32,哪怕只是点个灯,这个课程你都能跟上。如果你完全没接触过蓝牙,也没关系——我会从GATT的概念讲起。
一句话总结: BLE辅助WiFi配网,是目前消费级IoT产品里最稳定、用户体验最好的配网方式。没有之一。