📖 推薦閱讀:《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