3、WiFi配网技术:WiFi Aware、WiFi RTT、传统WiFi扫描与连接机制

做UWB定位,第一步不是测距,而是把设备连上网。你想想看,UWB标签和基站之间要交换数据,没有WiFi或者蓝牙做桥梁,根本玩不转。这一章,我就带你看看WiFi配网的几种主流方式。

我个人习惯把WiFi配网分成三代:传统扫描连接、WiFi Aware(感知技术)、WiFi RTT(往返时间测距)。它们各有各的脾气,也各有各的坑。

核心观点: 配网不只是“连上就行”,它决定了后续定位的精度、延迟和功耗。选错方案,后面全白搭。

3.1 传统WiFi扫描与连接机制

这是最基础的方式。设备开机,扫描周围AP,选一个信号最强的连上去。流程很简单:

  1. 主动扫描: 设备发Probe Request,AP回Probe Response。
  2. 被动扫描: 设备监听AP定期发的Beacon帧。
  3. 认证与关联: 交换密钥,建立连接。

我在项目中遇到过一个问题:在密集AP环境下,Probe Request满天飞,信道利用率飙升。你想想看,一个商场里几百个手机同时扫描,WiFi网络基本就瘫了。嗯,这里要注意,传统扫描的延迟通常在1-3秒,对于需要快速配网的UWB场景来说,太慢了。

参数 传统WiFi扫描 WiFi Aware WiFi RTT
连接建立时间 1-3秒 <1秒 无需连接
功耗 高(持续扫描) 低(按需唤醒) 中(单次测距)
测距能力 无(仅RSSI) 无 有(1-2米精度)
适用场景 家庭/办公室 社交/发现 室内定位
避坑指南: 我曾经在做一个智能家居项目时,用了传统扫描来配网。结果设备在弱信号区反复重连,功耗飙升,电池撑不过一天。后来我换成了WiFi Aware,问题才解决。记住:传统扫描不适合低功耗、快速响应的场景。

3.2 WiFi Aware:低功耗设备发现

WiFi Aware,说白了就是设备之间“互相认识”但不一定“连上”。它工作在2.4/5GHz频段,通过周期性的同步帧(Sync Beacon)来发现邻居。

它的核心机制是集群(Cluster)。设备加入一个集群,然后按时间槽(Time Slot)交换数据。我建议你把它理解成一个“WiFi对讲机”——大家约好时间,轮流说话,不说话的时候就睡觉。

  • 发现阶段: 设备监听Sync Beacon,获取集群信息。
  • 服务发布: 设备广播自己能提供的服务(比如“我是UWB基站”)。
  • 数据交换: 在约定的时间槽里交换小数据包。

为什么说它适合UWB配网?因为它不需要建立完整的TCP/IP连接。UWB标签只需要告诉基站“我在这里,给我发测距指令”,然后就可以切到UWB模式了。整个过程功耗极低,延迟在毫秒级。

个人经验: 我在一个仓储机器人项目里用了WiFi Aware做设备发现。机器人进库后,1秒内就能发现所有UWB基站,然后自动切换到UWB测距模式。相比传统扫描,功耗降低了70%。

3.3 WiFi RTT:精准测距的WiFi方案

WiFi RTT(IEEE 802.11mc)是WiFi联盟推出的精准测距技术。它通过测量信号往返时间(RTT)来计算距离,精度可以达到1-2米。你想想看,这比RSSI靠谱多了。

它的工作原理很简单:

  1. 设备发一个Fine Timing Measurement(FTM)请求。
  2. AP回复FTM响应,并记录时间戳。
  3. 设备计算往返时间,乘以光速,除以2,得到距离。

嗯,这里要注意,WiFi RTT需要AP支持802.11mc。目前大部分高端路由器(如Google Nest WiFi、TP-Link AX系列)都支持,但老旧设备不行。我在项目中踩过这个坑——客户说“我的AP支持WiFi 6,肯定支持RTT”,结果一测,根本不支持。

// WiFi RTT测距伪代码示例
// 假设设备已经连接到支持RTT的AP

// 1. 发起FTM会话
wifi_rtt_initiate_session(ap_mac);

// 2. 发送FTM请求
wifi_rtt_send_ftm_request(ap_mac, burst_size=10);

// 3. 接收FTM响应,提取时间戳
for (i = 0; i < burst_size; i++) {
    t1 = get_timestamp_tx(ftm_request[i]);
    t2 = get_timestamp_rx(ftm_response[i]);
    t3 = get_timestamp_tx(ftm_response[i]);
    t4 = get_timestamp_rx(ftm_request[i]);
    
    // 计算RTT
    rtt = (t4 - t1) - (t3 - t2);
    distance = (rtt * speed_of_light) / 2;
    
    // 滤波
    if (distance > 0 && distance < 100) {
        distances[i] = distance;
    }
}

// 4. 取中位数作为最终距离
final_distance = median(distances);
关键点: WiFi RTT的精度受多径效应影响。在空旷环境下,误差可以控制在1米以内;但在室内复杂环境,误差可能达到3-5米。所以,WiFi RTT适合做粗定位,UWB做精定位,两者互补。

3.4 三种技术的对比与选择

说了这么多,到底该选哪个?我个人习惯这样判断:

  • 传统WiFi扫描: 适合静态设备,比如智能灯泡、插座。配网一次,用一辈子。
  • WiFi Aware: 适合移动设备,比如机器人、无人机。需要快速发现和低功耗。
  • WiFi RTT: 适合需要粗定位的场景,比如楼层判断、区域识别。

在UWB配网中,我建议的流程是:先用WiFi Aware发现设备,然后用WiFi RTT做粗定位,最后用UWB做精定位。这样既保证了速度,又保证了精度。

注意: 不要试图用WiFi RTT替代UWB。WiFi RTT的精度天花板是1米,而UWB可以做到10厘米。两者是互补关系,不是替代关系。

3.5 本章知识体系

下面这张图总结了三种WiFi配网技术的核心逻辑和关系。你可以把它当作一个快速参考。

WiFi配网技术知识体系 WiFi配网技术知识体系 传统WiFi扫描 WiFi Aware WiFi RTT 延迟1-3秒,功耗高 延迟<1秒,功耗低 精度1-2米,需AP支持 静态设备配网 移动设备发现 粗定位/区域识别 UWB配网推荐流程 WiFi Aware发现 → WiFi RTT粗定位 → UWB精定位 三种技术互补,WiFi RTT做粗定位,UWB做精定位,WiFi Aware做快速发现

这张图把三种技术的核心特性、适用场景和与UWB的关系都串起来了。你可以看到,WiFi Aware负责“找到”,WiFi RTT负责“大概在哪”,UWB负责“精确在哪”。三者配合,才能实现真正的厘米级定位。

我的建议: 如果你刚开始做UWB项目,先从WiFi Aware入手。它最简单,也最容易集成。等跑通了,再考虑加WiFi RTT做粗定位。别一上来就想搞大而全,容易翻车。