WiFi基础与配网协议:从模式到实战

做物联网这几年,我接触最多的就是WiFi配网。说实话,很多新手一上来就调代码,结果连WiFi都没连上,就开始怀疑硬件坏了。其实,先把基础概念理清楚,后面会省很多事。

这一章,我们聊聊WiFi的两种核心模式——Station和AP,以及配网协议到底在干什么。

WiFi的两种角色:Station与AP

你想想看,一个WiFi设备,要么是提供热点的,要么是连接热点的。就这么简单。

  • AP(Access Point):就是热点。它广播SSID,等待别的设备来连。路由器就是典型的AP。
  • Station(工作站):就是客户端。它扫描周围的热点,选择一个去连接。手机、电脑连WiFi时,就是Station模式。

在嵌入式设备里,比如ESP32,它可以切换这两种模式。甚至同时当AP和Station——这叫WiFi双模。我在一个项目中就遇到过这种情况:设备先开AP让手机连上来配网,配完网自己切回Station去连路由器。

关键点:配网的本质,就是让一个还不知道路由器密码的设备,通过某种方式拿到SSID和密码,然后自己切到Station模式去连接。

WiFi扫描与连接流程

这部分我建议你动手试一下。流程其实很固定:

  1. 初始化WiFi驱动:设置模式、注册回调。
  2. 扫描AP:设备主动发Probe Request,AP回复Probe Response。扫描结果里包含SSID、信号强度(RSSI)、加密方式等。
  3. 选择目标AP:根据预设规则(比如信号最强、或者指定SSID)选一个。
  4. 认证与关联:设备发认证帧,AP回复;然后发关联请求,AP分配AID(关联ID)。
  5. DHCP获取IP:设备发DHCP Discover,路由器回复Offer,设备再发Request,最后得到ACK。拿到IP,才算真正连上。

嗯,这里要注意:扫描不是必须的。如果你已经知道SSID和密码,可以直接跳过扫描,直接发起连接。但扫描能帮你确认目标AP是否存在,信号好不好。

我的经验:扫描时,建议设置主动扫描模式,并且给足扫描时间(比如3秒以上)。有些AP响应慢,扫快了会漏掉。

常见的WiFi配网协议

配网协议解决的核心问题就一个:怎么把WiFi密码告诉一个没有键盘、没有屏幕的设备。

目前市面上主流的方案,我归纳为三类:

协议 代表方案 原理 局限性
Smart Config TI CC3200 手机加密SSID/密码到UDP包长度,设备混杂模式监听 需要手机和设备在同一信道;成功率受环境干扰大
ESP-TOUCH 乐鑫ESP8266/ESP32 类似Smart Config,但增加了CRC校验和组包机制 同样依赖信道同步;部分路由器会过滤多播包
SoftAP + HTTP 通用方案 设备开AP,手机连上后通过HTTP页面提交密码 需要用户手动切换WiFi连接;体验较繁琐

SmartConfig原理与坑

TI最早提出这个思路。手机把SSID和密码编码到UDP包的长度字段里,设备用混杂模式(promiscuous mode)抓取空中的数据包,然后解析长度信息,还原出密码。

听起来很巧妙对吧?但我在项目中踩过坑:

  • 信道问题:手机可能在信道6,设备默认在信道1,根本收不到。所以需要设备先扫描所有信道,或者手机广播时切换信道。
  • 加密干扰:WPA2加密的包,设备只能看到802.11帧头,看不到UDP内容。所以只能靠包长度这种物理层特征来传信息。
  • 成功率不稳定:环境里其他WiFi流量一多,误码率就上去了。

避坑指南:我曾经在一个工厂里调试SmartConfig,死活配不上。后来发现是路由器开启了“多播过滤”功能,把手机发的UDP广播包给丢了。关掉这个功能,一次成功。

ESP-TOUCH的改进

乐鑫在SmartConfig基础上做了优化。ESP-TOUCH把数据分成多个组,每组带CRC校验,接收端可以检错重传。另外,它用了一种“引导码”机制来同步信道:手机先发一串特殊序列,设备扫描到后就知道该锁定哪个信道了。

不过,它也有自己的问题:

  • 部分路由器会丢弃非标准的802.11帧。
  • 手机端App需要实现复杂的编码逻辑。
  • 配网时间通常在10-30秒,用户体验一般。

为什么我们需要BLE辅助配网

你看,上面这些方案都有硬伤。它们依赖WiFi本身的广播信道来传数据,而WiFi的物理层设计本来就不是干这个的。

BLE就不一样了。BLE有专门的服务发现、数据通知机制,双向通信稳定可靠。用BLE来传WiFi密码,成功率接近100%,而且可以实时反馈配网进度。

这就是我们这门课的核心思路——用BLE的确定性,弥补WiFi配网的不确定性。

配网协议对比总览

我整理了一张对比表,方便你选型时参考:

维度 SmartConfig ESP-TOUCH SoftAP+HTTP BLE辅助配网
是否需要额外硬件 否 否 否 需要BLE芯片
配网成功率 70-85% 80-90% 95%+ 99%+
配网时间 5-15秒 10-30秒 20-40秒 3-10秒
用户操作复杂度 低(一键) 低(一键) 中(需切换WiFi) 低(自动连接)
抗干扰能力 弱 中 强 强
双向反馈 无 有限 有 有

从表里能看出来,BLE辅助配网在成功率和用户体验上都有明显优势。代价就是多一颗BLE芯片,或者选一颗同时支持WiFi和BLE的SoC(比如ESP32、NRF5340)。

一张图看懂WiFi配网生态

下面这张SVG图,把WiFi配网的几种路径和关系画清楚了。你可以对照着理解。

WiFi配网协议生态图 配网目标 让设备连上路由器 SmartConfig TI方案 · 包长度编码 ESP-TOUCH 乐鑫方案 · CRC校验 BLE辅助配网 本课程核心方案 局限性 信道同步难 成功率70-85% 局限性 依赖多播包 配网时间10-30秒 优势 双向通信稳定 成功率99%+ 结论 BLE辅助配网是当前体验最优的WiFi配网方案

从这张图能看出来,SmartConfig和ESP-TOUCH都受限于WiFi物理层的不可靠性。而BLE辅助配网,相当于在设备和手机之间搭了一条专用通道,密码传输、状态反馈都走这条通道,干净利落。

我个人认为,如果你在做新产品选型,只要成本允许,优先考虑带BLE的SoC。省下来的调试时间,远比那几毛钱的硬件差价值钱。