1. BLE辅助WiFi配网开发全景

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)
  • 安全机制: 蓝牙配对绑定 + 加密传输 + 防重放攻击

学习路径我建议这样走:

  1. 先理解BLE基础概念(Service、Characteristic、UUID)
  2. 搭建ESP32-C3开发环境,跑通BLE广播和连接
  3. 实现WiFi配网GATT服务端
  4. 开发小程序蓝牙配网客户端
  5. 加入安全机制和异常处理
  6. 做压力测试和兼容性验证

我的建议: 不要一上来就啃蓝牙协议栈源码。先跑通一个最简单的“蓝牙传字符串”Demo,再逐步加功能。这样遇到问题容易定位。

下面这张图展示了整个配网方案的架构和流程:

BLE辅助WiFi配网架构图 BLE辅助WiFi配网整体架构 手机小程序 BLE连接 ESP32-C3设备 BLE Service WiFi Station 配网成功 → 设备连接WiFi路由器 WiFi路由器 WiFi连接 配网流程说明: 1. 设备上电 → 开启BLE广播,等待手机连接 2. 手机扫描 → 发现设备,建立BLE连接 3. 手机写入 → 通过GATT特征值写入WiFi SSID和密码 4. 设备切换 → 关闭BLE,启动WiFi Station连接路由器 5. 结果反馈 → 设备通过BLE(或WiFi UDP)告知手机配网结果

嗯,这里要注意一点:配网成功后,设备可以继续保持蓝牙连接用于后续控制,也可以断开蓝牙只走WiFi。具体看产品需求。我个人习惯是配网完成后断开蓝牙,减少功耗和协议栈负担。

1.4 课程适合谁?

  • 做IoT产品开发的嵌入式工程师
  • 想从零掌握BLE+WiFi双模开发的初学者
  • 被SmartConfig折磨过、想找稳定替代方案的人

如果你用过ESP8266或者ESP32,哪怕只是点个灯,这个课程你都能跟上。如果你完全没接触过蓝牙,也没关系——我会从GATT的概念讲起。

一句话总结: BLE辅助WiFi配网,是目前消费级IoT产品里最稳定、用户体验最好的配网方式。没有之一。