Wi-Fi 模组产品概览
Wi-Fi 技术演进
| 标准 | 别名 | 频段 | 最高速率 | 关键技术 |
|---|---|---|---|---|
| 802.11b | Wi-Fi 1 | 2.4GHz | 11Mbps | DSSS |
| 802.11g | Wi-Fi 3 | 2.4GHz | 54Mbps | OFDM |
| 802.11n | Wi-Fi 4 | 2.4/5GHz | 600Mbps | MIMO |
| 802.11ac | Wi-Fi 5 | 5GHz | 3.5Gbps | MU-MIMO, 波束赋形 |
| 802.11ax | Wi-Fi 6 | 2.4/5GHz | 9.6Gbps | OFDMA, BSS Coloring |
| 802.11ax | Wi-Fi 6E | 6GHz | 9.6Gbps | 新增 6GHz 频段 |
移远 Wi-Fi 产品
FC41D(Wi-Fi 6,主推)
| 参数 | 规格 |
|---|---|
| 芯片 | 联发科 MT7921 |
| Wi-Fi 标准 | 802.11ax(Wi-Fi 6) |
| 频段 | 2.4GHz + 5GHz 双频 |
| 最高速率 | 2.4G: 574Mbps / 5G: 1201Mbps |
| 蓝牙 | BT 5.0 |
| 接口 | PCIe / USB / SDIO |
| 工作温度 | -40°C ~ +85°C |
| 封装 | M.2 2230 |
FC20(Wi-Fi 5,经济型)
| 参数 | 规格 |
|---|---|
| 芯片 | 联发科 MT7668 |
| Wi-Fi 标准 | 802.11ac(Wi-Fi 5) |
| 频段 | 2.4GHz + 5GHz |
| 最高速率 | 2.4G: 300Mbps / 5G: 433Mbps |
| 蓝牙 | BT 4.2 |
| 接口 | USB / SDIO |
Wi-Fi 6 核心技术
OFDMA(正交频分多址)
Wi-Fi 6 引入 OFDMA,允许多个设备同时传输:
Wi-Fi 5(OFDM):
一次只能服务一个设备
其他设备等待
Wi-Fi 6(OFDMA):
将信道分成多个 RU(资源单元)
多个设备同时传输
优势:
- 低时延(不需要等待)
- 高效率(减少信道竞争)
- 适合密集设备场景(IoT)BSS Coloring(BSS 着色)
解决密集部署时的同频干扰:
传统方式:
检测到任何 Wi-Fi 信号就退避
导致信道利用率低
BSS Coloring:
为每个 BSS(基本服务集)分配颜色标识
只有相同颜色的信号才需要退避
不同颜色的信号可以并发传输
效果:密集部署场景吞吐量提升 30-40%Target Wake Time(TWT)
Wi-Fi 6 的省电机制,专为 IoT 设计:
TWT 工作原理:
AP 与设备协商唤醒时间
设备在约定时间才唤醒接收数据
其余时间深度睡眠
功耗对比:
Wi-Fi 5 待机:约 10-20mA
Wi-Fi 6 TWT:约 1-5mA
适合场景:
- 智能家居传感器
- 工业 IoT 设备
- 可穿戴设备(Wi-Fi 版)Linux 驱动开发
FC41D 在 Linux 上的使用
bash
# 查看 Wi-Fi 接口
ip link show
# wlan0: <BROADCAST,MULTICAST> mtu 1500 ...
# 扫描可用网络
iw dev wlan0 scan | grep SSID
# 连接 Wi-Fi(使用 wpa_supplicant)
cat > /etc/wpa_supplicant.conf << 'EOF'
network={
ssid="MyWiFi"
psk="MyPassword"
key_mgmt=WPA-PSK
}
EOF
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
dhclient wlan0
# 查看连接状态
iw dev wlan0 link工业 Wi-Fi 配置(静态 IP)
bash
# /etc/network/interfaces
auto wlan0
iface wlan0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
wpa-ssid "IndustrialWiFi"
wpa-psk "SecurePassword123"
dns-nameservers 8.8.8.8工业 Wi-Fi 方案
工厂 Wi-Fi 覆盖设计
工业 Wi-Fi 特殊要求:
- 金属环境(反射、遮挡)
- 移动设备(AGV、叉车)
- 高可靠性(生产不能中断)
- 漫游切换(设备移动时无缝切换)
频段选择:
5GHz:速率高,干扰少,但穿透力弱
2.4GHz:覆盖广,穿透力强,但干扰多
工厂推荐:5GHz 为主,2.4GHz 补盲
AP 部署密度:
普通仓库:每 500m² 一个 AP
密集金属环境:每 200m² 一个 AP
漫游协议:
802.11r(快速 BSS 切换):切换时间 < 50ms
802.11k(邻居报告):辅助设备选择最佳 APAGV 小车 Wi-Fi 方案
python
# AGV 小车 Wi-Fi 连接管理
import subprocess
import time
import logging
class AGVWiFiManager:
"""AGV 小车 Wi-Fi 连接管理,支持无缝漫游"""
def __init__(self, interface="wlan0"):
self.interface = interface
self.current_ap = None
self.rssi_threshold = -70 # 低于此值触发漫游
def get_current_rssi(self):
"""获取当前信号强度"""
result = subprocess.run(
["iw", "dev", self.interface, "link"],
capture_output=True, text=True
)
for line in result.stdout.split('\n'):
if 'signal:' in line:
rssi = int(line.split('signal:')[1].split('dBm')[0].strip())
return rssi
return -100
def scan_aps(self):
"""扫描可用 AP"""
result = subprocess.run(
["iw", "dev", self.interface, "scan"],
capture_output=True, text=True
)
aps = []
current_ap = {}
for line in result.stdout.split('\n'):
if 'BSS' in line and 'on' in line:
if current_ap:
aps.append(current_ap)
current_ap = {'bssid': line.split()[1]}
elif 'SSID:' in line:
current_ap['ssid'] = line.split('SSID:')[1].strip()
elif 'signal:' in line:
current_ap['rssi'] = float(line.split('signal:')[1].split('dBm')[0].strip())
return sorted(aps, key=lambda x: x.get('rssi', -100), reverse=True)
def roam_if_needed(self, target_ssid):
"""必要时触发漫游"""
current_rssi = self.get_current_rssi()
if current_rssi < self.rssi_threshold:
logging.warning(f"RSSI {current_rssi} dBm 低于阈值,触发漫游")
# 扫描更好的 AP
aps = self.scan_aps()
better_aps = [ap for ap in aps
if ap.get('ssid') == target_ssid
and ap.get('rssi', -100) > current_rssi + 10]
if better_aps:
best_ap = better_aps[0]
logging.info(f"漫游到 AP: {best_ap['bssid']} (RSSI: {best_ap['rssi']} dBm)")
# 触发 802.11r 快速漫游
subprocess.run([
"wpa_cli", "-i", self.interface,
"roam", best_ap['bssid']
])
def monitor(self, target_ssid, interval=5):
"""持续监控并在需要时漫游"""
while True:
self.roam_if_needed(target_ssid)
time.sleep(interval)