📖 推荐阅读:《Yocto项目实战教程:高效定制嵌入式Linux系统》
🎥 更多学习视频请关注 B 站:嵌入式Jerry
1. WiFi基础与协议
WiFi(Wireless Fidelity)是基于IEEE 802.11协议族的无线局域网(WLAN)技术,允许终端设备在不使用有线的前提下接入本地或互联网。
1.1 IEEE 802.11协议简介
- 802.11a/b/g/n/ac/ax:从2.4GHz/5GHz到6GHz,各有不同的速率、频宽和应用场景。
- 数据链路层和物理层协议,涵盖加密认证(WEP/WPA/WPA2/WPA3)、信道管理、数据传输等。
1.2 WiFi网络结构
- AP模式(Access Point):常见于路由器,提供无线接入。
- STA模式(Station):普通终端设备,连接AP使用。
- Ad-Hoc模式:设备间直连(少见)。
2. 主流WiFi标准及区别
标准 | 频段 | 最大速率 | 主要特征 |
---|---|---|---|
802.11b | 2.4GHz | 11Mbps | 早期标准,易受干扰 |
802.11g | 2.4GHz | 54Mbps | 向下兼容b |
802.11n | 2.4/5GHz | 600Mbps | MIMO技术,提升速率 |
802.11ac | 5GHz | 6.9Gbps | 高速、5G专用 |
802.11ax | 2.4/5/6G | 9.6Gbps | Wi-Fi 6,OFDMA |
选择建议:
- 工业/嵌入式设备建议优先支持 802.11n/802.11ac/ax,提高带宽与抗干扰能力。
3. WiFi核心名词与架构
- SSID(Service Set Identifier):无线网络名称。
- BSSID:AP的唯一标识(MAC地址)。
- Channel(信道):用于频谱分隔,降低干扰。
- WPA/WPA2/WPA3:无线加密与认证协议。
- MIMO/SISO:多输入多输出/单输入单输出,提升速率和抗干扰。
- RSSI:接收信号强度指示。
4. 数据传输方法与协议选型
4.1 网络协议
- TCP(可靠、顺序、适合控制/文件类)
- UDP(无连接、低延迟、适合音视频流/实时数据)
- RTSP/RTP(流媒体协议,常见于监控摄像头)
- MQTT(物联网消息队列,适合AI控制/传感数据)
- WebRTC(低延迟、P2P音视频实时通讯)
4.2 WiFi传输典型场景
- 远程视频监控:UDP+H.264/H.265
- AI边缘推理结果:MQTT/HTTP/WebSocket
- 多路同步:RTSP/多UDP流
5. 常用工具与调试命令
工具/命令 | 用途 |
---|---|
iw | 查询/管理无线接口状态 |
iwlist | 扫描附近WiFi |
wpa_supplicant | 认证与连接加密WiFi |
udhcpc/dhclient | DHCP获取IP |
ifconfig/ip | 网络接口配置 |
tcpdump/wireshark | 网络抓包分析 |
iperf | 网络带宽测试 |
常用命令示例:
# 查询WiFi状态
$ iw dev wlan0 link# 扫描可用网络
$ iw dev wlan0 scan# 连接加密WiFi
$ wpa_supplicant -i wlan0 -c wpa.conf &# 获取IP
$ udhcpc -i wlan0
6. 程序化数据传输工具与示例代码
6.1 Python实现UDP摄像头视频流(简化版)
import socketsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('0.0.0.0', 5000))while True:data, addr = sock.recvfrom(65536)# 解码并处理摄像头视频帧process_frame(data)
6.2 C语言Linux下WiFi UDP收发示例
// UDP收包(伪代码简化版)
int sock = socket(AF_INET, SOCK_DGRAM, 0);
bind(sock, ...);
while (1) {int n = recvfrom(sock, buf, sizeof(buf), 0, ...);// 处理buf中的数据
}
6.3 MQTT客户端数据上传
import paho.mqtt.client as mqtt
client = mqtt.Client()
client.connect('broker.ip', 1883, 60)
client.publish('camera/ai', 'result:ok')
7. WiFi实战用例与面试讲解
7.1 典型实战流程
- 设备初始化:确认驱动正常、无线网卡可用
- 扫描与连接:用
iw
/wpa_supplicant
完成网络接入 - DHCP配置:获取IP地址
- 协议选型:选定TCP/UDP/RTSP等合适协议
- 数据流收发:用socket、MQTT、RTSP等实现主机<->摄像头通信
- 稳定性优化:定时检测丢包、断流、自动重连、信道切换等
7.2 面试高分讲解模板
“我有实际WiFi嵌入式设备开发经验,熟悉IEEE 802.11协议和主流加密(WPA2/WPA3)。实战中常用iw/wpa_supplicant管理连接,用UDP推送H.264视频流给主机,主机多线程/异步方式收流并处理。对于丢包、卡顿,我会用信号强度检测与丢包容忍策略,必要时降码流或调整信道优化稳定性。”
8. 常见面试问题与高分答题思路
Q1:如何保证多路WiFi摄像头数据流稳定?
- 合理分配带宽、优先5GHz、用UDP+丢包容忍、关键帧优化、AP侧QOS流控。
Q2:如何排查WiFi连接和数据中断问题?
iw
查状态,iw scan
查干扰,tcpdump
抓包,重连机制,AP负载检查。
Q3:如何保证WiFi数据安全?
- WPA2/WPA3加密,强密码,必要时协议层TLS加密。
Q4:UDP和TCP适用场景?
- UDP适合实时音视频,TCP适合文件/控制流。
结语:WiFi开发不仅要理解协议、标准和常用工具,还要具备多协议适配、网络调优和现场排查能力。遇到面试问题时,要能结合实际项目经验,讲清楚自己的优化与工程方案。
📖 推荐阅读:《Yocto项目实战教程:高效定制嵌入式Linux系统》
🎥 更多学习视频请关注 B 站:嵌入式Jerry