在竞技或教育类机器人系统中,网络连接需同时满足两类看似矛盾的需求:
- 本地直连控制:用户通过手机 Wi-Fi 直连机器人,实现低延迟操控(如体感、遥控);
- 联网能力:机器人需接入赛事局域网或家庭 Wi-Fi,用于固件 OTA 升级、多人联机对战或云端数据同步。
为兼顾二者,我们基于 OpenWrt(运行于 MT7628 等 Linux-capable 模块)构建了一套双模 Wi-Fi 架构 ,核心是稳定可靠的 AP+STA(Access Point + Station)共存模式,并在此基础上扩展出中继(Repeater)功能。
一、基础配置:启用 AP+STA
OpenWrt 默认不鼓励 AP 与 STA 共用同一射频(radio),因其易引发信道冲突。但我们通过精细配置实现稳定共存:
1# /etc/config/wireless
2config wifi-device 'radio0'
3 option type 'mac80211'
4 option channel '6' # 固定信道,避免自动跳频
5 option hwmode '11g'
6 option path 'platform/10300000.wmac'
7
8config wifi-iface 'default_radio0'
9 option device 'radio0'
10 option mode 'ap'
11 option ssid 'GEX_001'
12 option encryption 'psk2'
13 option key 'robot1234'
14 option network 'lan'
15 option maxassoc '1' # 限制仅1台设备连接,提升安全性
16
17config wifi-iface 'wifinet1'
18 option device 'radio0'
19 option mode 'sta'
20 option ssid 'BattleArena_AP'
21 option encryption 'psk2'
22 option key 'arena2026'
23 option network 'wwan' # 关联到独立网络接口
关键点在于:
- 固定信道(如 channel 6),避免 AP 与 STA 因信道不一致导致性能下降;
- STA 接口绑定到
wwan网络 ,与 AP 所属的lan网络隔离; maxassoc '1'限制仅允许一台手机连接,防止未授权设备接入。
二、稳定性保障:自愈脚本 fix_sta_ap.sh
实测发现,当 STA 连接的上级 AP 信号弱或重启时,OpenWrt 可能自动关闭整个 radio,导致本地 AP 也失效------这在比赛中是灾难性的。为此,我们编写守护脚本:
1#!/bin/sh
2# /root/fix_sta_ap.sh
3while true; do
4 if ! iwinfo wlan0-1 assoclist | grep -q ".*"; then
5 echo "$(date): STA disconnected, restarting hostapd..."
6 wifi down
7 sleep 2
8 wifi up # 重新激活radio,AP会自动恢复
9 fi
10 sleep 5
11done &
该脚本每5秒检测 STA 是否关联成功。若断开,则重启整个 Wi-Fi 子系统,确保 AP 始终可用。经数百小时压力测试,系统在弱网环境下仍能保持本地控制通道畅通。
三、进阶:实现中继(Repeater)模式
为使机器人既能被直连,又能访问外网(如下载地图、上报战绩),需将 STA 获取的网络"透传"给 AP 客户端。这本质是一个三层路由 + NAT 转发问题。
步骤如下:
-
创建桥接或路由规则,将
wwan流量转发至lan; -
配置防火墙允许跨 zone 转发;
-
启用 IP 转发与 MASQUERADE。
1# /etc/config/network
2config interface 'wwan'
3 option proto 'dhcp'
4 option metric '10' # 优先级低于有线
5
6# /etc/config/firewall
7config zone
8 option name 'wwan'
9 option input 'REJECT'
10 option output 'ACCEPT'
11 option forward 'ACCEPT'
12 option network 'wwan'
13
14config forwarding
15 option src 'lan'
16 option dest 'wwan'
再通过 iptables 启用 NAT:
1iptables -t nat -A POSTROUTING -o wlan0-1 -j MASQUERADE
2echo 1 > /proc/sys/net/ipv4/ip_forward
最终效果:手机连接机器人 AP(192.168.4.1)后,可直接访问互联网(如 ping 8.8.8.8),仿佛机器人是一台普通路由器。
四、安全与性能优化
- IP 段隔离 :AP 使用
192.168.4.0/24,STA 获取192.168.1.x,避免 IP 冲突; - DNS 重定向 :通过
dnsmasq将固件升级域名解析至本地缓存服务器,加速 OTA; - QoS 限速:对图传 TCP 流(端口5000)设置高优先级,保障视觉反馈流畅。
五、总结
这套基于 OpenWrt 的双模网络架构,成功解决了机器人"既要独立又要联网"的核心矛盾。它不仅支撑了日常调试、赛事对抗、远程维护等多场景需求,其自愈机制和防火墙策略更确保了在复杂无线环境下的鲁棒性。未来,我们将探索 5GHz 频段用于图传、2.4GHz 专用于控制的双频分离方案,进一步提升整体网络性能。