4、网络接入层:Wi-Fi配网与蜂窝网络附着
设备要联网,第一步就是接入网络。这一步看似简单,但坑特别多。我做了这么多年物联网,见过太多设备卡在配网环节,用户折腾半天连不上,直接退货。
这一章,咱们就聊聊设备怎么“找到”网络,并且“加入”网络。主要分两条线:Wi-Fi配网和蜂窝网络附着。
核心观点:配网不是简单的“输密码”,而是一场设备、手机、路由器之间的三方握手。蜂窝网络附着则更像一次“入网注册”,设备要向基站证明自己的身份。
4.1 Wi-Fi配网:三种主流方案
Wi-Fi设备没有键盘和屏幕,怎么告诉它路由器的SSID和密码?这就是配网要解决的问题。目前主流方案有三种,各有优劣。
4.1.1 SmartConfig(也称一键配网)
SmartConfig的原理很巧妙。手机把SSID和密码编码到UDP广播包的长度或内容里。设备处于混杂监听模式,抓取这些数据包,从中解码出网络信息。
说白了,就是手机在“喊”,设备在“听”。
我的经验:SmartConfig对路由器兼容性要求高。有些路由器会过滤广播包,或者加密方式特殊,导致配网失败。我建议在代码里加一个超时重试机制,比如30秒没收到就重启监听。
典型流程如下:
- 设备上电,进入配网模式,开启混杂监听。
- 手机App连接上路由器(2.4G频段)。
- 手机发送编码后的UDP广播包。
- 设备抓包解码,获取SSID和密码。
- 设备主动连接路由器,配网完成。
注意:SmartConfig只支持2.4G频段。5G频段的数据包编码方式不同,很多芯片不支持。如果你发现设备死活连不上,先检查手机是不是连的5G Wi-Fi。
4.1.2 SoftAP模式
这个方案更直接。设备自己变成一个热点(AP),手机连上这个热点,然后通过Socket或HTTP把Wi-Fi信息发给设备。
你想想看,设备先当“小老板”,手机来“面试”,手机把“公司地址”(路由器信息)告诉设备,设备再去“上班”。
代码示例(ESP32伪代码):
// 1. 启动SoftAP
WiFi.softAP("IoT_Device_Config", "12345678");
// 2. 启动HTTP服务器
server.on("/config", HTTP_POST, [](AsyncWebServerRequest *request){
String ssid = request->arg("ssid");
String password = request->arg("password");
// 保存并尝试连接
WiFi.begin(ssid.c_str(), password.c_str());
});
// 3. 手机连上设备热点,访问配置页面
优缺点对比:SoftAP兼容性最好,几乎所有手机都能连热点。但用户体验差,需要手动切换Wi-Fi连接。我一般只在调试或企业级设备上用这个方案。
4.1.3 蓝牙辅助配网
这是目前最流行的方案。设备同时集成Wi-Fi和BLE(低功耗蓝牙)。手机通过BLE把Wi-Fi信息传给设备,设备收到后自动连接路由器。
蓝牙负责“传话”,Wi-Fi负责“上网”。分工明确。
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| SmartConfig | 操作简单,无需切换网络 | 兼容性差,仅支持2.4G | 智能灯泡、插座 |
| SoftAP | 兼容性最好 | 需要手动切换Wi-Fi | 工业设备、网关 |
| 蓝牙辅助 | 体验好,支持双向通信 | 需要BLE芯片,成本略高 | 智能音箱、门锁 |
避坑指南:我曾经在一个项目里用蓝牙辅助配网,结果发现某些手机蓝牙扫描不到设备。后来排查是蓝牙广播间隔设置太短,导致手机来不及响应。把广播间隔调到100ms以上就解决了。
4.2 蜂窝网络附着流程
蜂窝网络设备(NB-IoT、LTE-M)不需要配网,它们插上SIM卡就能用。但“能用”背后是一套复杂的附着流程。
说白了,设备要向基站说:“我是谁?我要上网。”基站要验证身份,分配资源,然后说:“好,你上吧。”
4.2.1 NB-IoT附着流程
NB-IoT是为低功耗、小数据量场景设计的。附着流程比传统4G简化了不少,但核心步骤还在。
- 小区搜索:设备扫描频点,找到最强的小区信号。
- 随机接入:设备发送前导码,申请上行资源。
- RRC连接建立:设备和基站建立无线资源控制连接。
- 附着请求:设备发送附着请求,包含IMSI(国际移动用户识别码)。
- 身份验证:核心网验证SIM卡合法性。
- EPS承载建立:分配IP地址,建立数据通道。
关键点:NB-IoT的附着过程可能持续5-15秒。对于电池供电的设备,我建议不要频繁附着。一次附着后,尽量保持连接,或者使用eDRX(扩展不连续接收)来省电。
4.2.2 LTE-M附着流程
LTE-M比NB-IoT更快,支持移动性和语音。附着流程和标准LTE基本一致,但增加了对低功耗特性的支持。
我记得有个项目做车载追踪器,用的LTE-M。设备在高速移动时附着成功率明显高于NB-IoT。这是因为LTE-M支持更完善的切换机制。
| 特性 | NB-IoT | LTE-M |
|---|---|---|
| 带宽 | 200 kHz | 1.4 MHz |
| 峰值速率 | ~250 kbps | ~1 Mbps |
| 移动性 | 不支持 | 支持 |
| 附着时间 | 5-15秒 | 2-5秒 |
| 典型场景 | 水表、烟感 | 追踪器、可穿戴 |
注意:蜂窝网络附着失败的原因很多:信号弱、SIM卡欠费、运营商限制、核心网配置错误。我建议在设备端实现一个“附着状态机”,记录失败原因和重试次数。连续失败3次后,进入深度休眠,等30分钟再试。
4.3 本章小结
网络接入层是物联网设备的第一道关卡。Wi-Fi设备要解决“怎么告诉它密码”的问题,蜂窝设备要解决“怎么注册到网络”的问题。
选哪种方案,取决于你的产品形态、成本预算和用户体验要求。没有银弹,只有权衡。
我的建议:如果你做消费类产品,优先考虑蓝牙辅助配网。如果你做工业类产品,SoftAP更稳妥。蜂窝设备的话,NB-IoT适合静态场景,LTE-M适合移动场景。