远程通信
概述
当机器人的工作范围超出WiFi/蓝牙覆盖距离时,需要远程通信方案。4G/5G蜂窝网络提供高带宽广域覆盖,LoRa提供超远距离低功耗传输,RC遥控器提供低延迟实时操控。
4G/5G蜂窝通信
4G LTE模块
| 模块 |
制造商 |
速率(下行) |
频段 |
接口 |
特点 |
| SIM7600CE |
SIMCom |
150Mbps |
全网通 |
UART/USB |
国内常用 |
| SIM7600G-H |
SIMCom |
150Mbps |
全球频段 |
UART/USB |
全球漫游 |
| EC20 |
Quectel |
150Mbps |
全网通 |
USB/UART |
稳定可靠 |
| EC25 |
Quectel |
150Mbps |
全网通 |
USB |
模组小型化 |
连接方式
SIM卡
│
┌────┴────┐
│ 4G模块 │
│(SIM7600) │
└─┬──┬────┘
│ │
UART USB ──→ MCU / Linux SBC
│
└── AT指令控制
AT指令基本操作
# 检查模块状态
AT → OK
AT+CPIN? → +CPIN: READY (SIM卡就绪)
AT+CSQ → +CSQ: 25,0 (信号强度, 25/31)
AT+CREG? → +CREG: 0,1 (已注册本地网络)
AT+CGATT? → +CGATT: 1 (已附着GPRS)
# 建立PPP连接或使用模块内置TCP/IP栈
AT+CIPOPEN=0,"TCP","server.example.com",8080
AT+CIPSEND=0,12
Hello Robot!
# 通过USB提供网络接口(更推荐)
# 模块作为USB网卡,Linux自动识别为eth1/wwan0
在Linux SBC上使用
# Raspberry Pi / Jetson 通过USB使用4G模块
# 模块通常识别为 /dev/ttyUSB0-3 和网卡接口
# 使用NetworkManager管理
sudo nmcli connection add type gsm ifname '*' con-name '4G' apn 'cmiot'
sudo nmcli connection up '4G'
# 检查连接
ip addr show wwan0
ping -I wwan0 8.8.8.8
5G模块
| 特性 |
4G LTE |
5G NR |
| 下行峰值 |
150 Mbps |
1-10 Gbps |
| 上行峰值 |
50 Mbps |
500 Mbps |
| 延迟 |
20-50ms |
1-10ms |
| 功耗 |
中 |
较高 |
| 模块成本 |
低 |
高 |
| 覆盖 |
广 |
发展中 |
5G的低延迟特性(uRLLC模式可达1ms)为云端机器人控制提供了可能。
应用场景
- 远程监控:通过4G回传机器人视频和状态
- 云端控制:利用云端算力进行路径规划和决策
- OTA升级:远程固件更新
- 数据采集:外场测试数据实时上传
- 多机协调:通过云端服务器协调多台机器人
LoRa
原理
LoRa(Long Range)使用CSS(啁啾扩频)调制技术,在极低功耗下实现超远距离通信:
\[
\text{啁啾信号}: f(t) = f_0 + \frac{BW}{T_s} \cdot t
\]
频率随时间线性变化(上啁啾/下啁啾),扩频增益换取传输距离。
关键参数
| 参数 |
说明 |
典型值 |
| 频段 |
ISM免许可频段 |
433MHz / 868MHz / 915MHz / 470MHz(中国) |
| 扩频因子 SF |
越大距离越远、速率越低 |
7-12 |
| 带宽 BW |
信号占用频率范围 |
125/250/500 kHz |
| 编码率 CR |
前向纠错冗余 |
4/5, 4/6, 4/7, 4/8 |
| 发射功率 |
输出功率 |
最大20dBm (100mW) |
传输速率与距离
| SF |
BW=125kHz速率 |
灵敏度 |
大致距离 |
| 7 |
5.47 kbps |
-123 dBm |
2-5 km |
| 9 |
1.76 kbps |
-129 dBm |
5-8 km |
| 12 |
0.29 kbps |
-137 dBm |
10-15 km |
\[
\text{链路预算} = P_{tx} + G_{ant} - L_{path} > S_{rx}
\]
SX1262/SX1268
Semtech SX1262是最新一代LoRa收发芯片:
| 参数 |
值 |
| 频率范围 |
150-960 MHz |
| 发射功率 |
+22 dBm(SX1262)/ +15 dBm(SX1261) |
| 灵敏度 |
-148 dBm (SF12, 125kHz) |
| 电流 |
发射: 118mA,接收: 4.6mA,睡眠: 0.6μA |
| 接口 |
SPI |
| 封装 |
4×4mm QFN |
LoRa模块
| 模块 |
芯片 |
频段 |
接口 |
价格 |
| EBYTE E22-400T30D |
SX1268 |
410-493MHz |
UART |
~30元 |
| EBYTE E22-900T30D |
SX1262 |
850-930MHz |
UART |
~30元 |
| RAK4630 |
SX1262+nRF52840 |
多频段 |
BLE+LoRa |
~60元 |
| Heltec LoRa32 V3 |
SX1262+ESP32-S3 |
多频段 |
WiFi+BLE+LoRa |
~50元 |
Arduino LoRa示例
// 使用RadioLib库操作SX1262
#include <RadioLib.h>
// SX1262 引脚定义
SX1262 radio = new Module(8, 14, 12, 13); // CS, DIO1, RST, BUSY
void setup() {
Serial.begin(115200);
// 初始化LoRa
int state = radio.begin(
470.0, // 频率 MHz
125.0, // 带宽 kHz
9, // 扩频因子
7, // 编码率 4/7
0x12, // 同步字
22, // 发射功率 dBm
8, // 前导码长度
0, // TCXO电压
false // 使用LDO
);
if (state == RADIOLIB_ERR_NONE) {
Serial.println("LoRa 初始化成功!");
}
}
// 发送端
void sendRobotStatus() {
// 打包机器人状态(经纬度+电池+状态码)
struct {
float lat;
float lon;
uint8_t battery;
uint8_t status;
} data = {39.9042, 116.4074, 85, 0x01};
int state = radio.transmit((uint8_t*)&data, sizeof(data));
if (state == RADIOLIB_ERR_NONE) {
Serial.printf("发送成功, RSSI=%.1f dBm\n", radio.getRSSI());
}
}
// 接收端
void receiveData() {
uint8_t buf[64];
int state = radio.receive(buf, sizeof(buf));
if (state == RADIOLIB_ERR_NONE) {
Serial.printf("收到%d字节, RSSI=%.1f, SNR=%.1f\n",
radio.getPacketLength(), radio.getRSSI(), radio.getSNR());
}
}
LoRa应用场景
| 场景 |
数据内容 |
频率 |
说明 |
| 农业巡检无人车 |
GPS+状态 |
每10秒 |
远距离、低频 |
| 环境监测站 |
温湿度+气压 |
每分钟 |
太阳能供电 |
| 搜救机器人 |
位置+求助信号 |
事件触发 |
应急场景 |
| 无人机编队 |
简单指令 |
1-10Hz |
超视距控制 |
RC遥控器
2.4GHz RC系统
传统航模遥控器广泛用于机器人遥操作:
| 品牌 |
型号 |
通道数 |
协议 |
延迟 |
距离 |
| FlySky |
FS-i6X |
10 |
AFHDS 2A |
~10ms |
1.5km |
| FrSky |
X9D+ |
16 |
ACCESS |
~8ms |
2km |
| RadioLink |
AT9S |
12 |
FHSS |
~10ms |
1.5km |
| TBS |
Crossfire |
12 |
LoRa混合 |
~5ms |
40km+ |
接收器输出
| 输出类型 |
说明 |
应用 |
| PWM |
每通道一根线,1-2ms脉冲 |
直接驱动舵机 |
| PPM |
所有通道复用一根线 |
MCU解析 |
| SBUS |
串口协议(反转UART) |
飞控/MCU |
| CRSF |
高速双向串口 |
TBS Crossfire |
SBUS协议
SBUS(Serial Bus)是Futaba开发的协议,已成为RC接收器的标准输出:
| 参数 |
值 |
| 波特率 |
100000 (非标准) |
| 数据位 |
8位,偶校验,2停止位 |
| 电平 |
反相(需要反相器或软件反相) |
| 帧长度 |
25字节 |
| 通道数 |
16(11位/通道)+ 2数字通道 |
| 帧率 |
14ms 或 7ms(高速模式) |
// ESP32 SBUS 解析
#define SBUS_BAUDRATE 100000
#define SBUS_FRAME_SIZE 25
uint16_t channels[16];
void parseSBUS(uint8_t* buf) {
if (buf[0] != 0x0F) return; // 帧头
channels[0] = ((buf[1] | buf[2]<<8) & 0x07FF);
channels[1] = ((buf[2]>>3 | buf[3]<<5) & 0x07FF);
channels[2] = ((buf[3]>>6 | buf[4]<<2 | buf[5]<<10) & 0x07FF);
channels[3] = ((buf[5]>>1 | buf[6]<<7) & 0x07FF);
// ... 继续解析其余通道
// 通道值范围: 172-1811, 中值992
// 映射到 -100%~+100%
}
void setup() {
// SBUS是反相UART,ESP32可用uart_set_line_inverse
Serial2.begin(SBUS_BAUDRATE, SERIAL_8E2, 16, -1, true); // 反相
}
遥测链路(Telemetry)
概述
遥测链路用于机器人与地面站之间的双向数据传输,常见于无人机和无人车。
常见方案
| 方案 |
频段 |
距离 |
带宽 |
应用 |
| 数传电台 |
433/915MHz |
5-20km |
100kbps |
MAVLink遥测 |
| WiFi中继 |
2.4/5GHz |
1-5km |
高 |
图传+遥测 |
| 4G |
蜂窝 |
无限 |
高 |
远程监控 |
| 图传 |
5.8GHz |
1-10km |
20-50Mbps |
FPV视频 |
MAVLink协议
MAVLink(Micro Air Vehicle Link)是无人机/机器人领域的标准遥测协议:
- 轻量级消息协议
- 支持256种消息类型
- CRC校验
- 兼容多种传输层(UART、UDP、TCP)
- 被PX4、ArduPilot等飞控系统广泛使用
V2X(Vehicle-to-Everything)
概述
V2X通信用于户外移动机器人(自动驾驶、配送机器人)与周围环境的交互:
| 类型 |
说明 |
| V2V |
车辆对车辆,避碰协调 |
| V2I |
车辆对基础设施,交通信号灯 |
| V2P |
车辆对行人,安全预警 |
| V2N |
车辆对网络,云端服务 |
技术标准
| 标准 |
技术 |
延迟 |
距离 |
| DSRC (IEEE 802.11p) |
WiFi变体 |
<10ms |
300m |
| C-V2X (3GPP) |
蜂窝技术 |
<20ms |
500m |
| NR-V2X (5G) |
5G直连 |
<3ms |
500m |
配送机器人应用
户外配送机器人需要的远程通信能力:
- 4G/5G上报位置和状态
- 接收调度指令和路径更新
- 遇到异常时远程接管(遥操作)
- OTA固件升级
通信方案综合对比
| 方案 |
距离 |
带宽 |
延迟 |
功耗 |
成本 |
月费 |
| 4G LTE |
覆盖区 |
150M |
30ms |
高 |
中 |
有 |
| 5G NR |
覆盖区 |
1G+ |
5ms |
高 |
高 |
有 |
| LoRa |
2-15km |
50k |
100ms+ |
极低 |
低 |
无 |
| RC遥控器 |
1-2km |
100k |
10ms |
低 |
中 |
无 |
| 数传电台 |
5-20km |
100k |
20ms |
中 |
低 |
无 |
小结
- 4G/5G提供广域高带宽连接,适合远程监控和云端协作
- 5G的低延迟模式为云端实时控制打开了可能
- LoRa以极低功耗实现超远距离通信,适合低速率场景
- RC遥控器提供可靠的低延迟实时操控
- SBUS是RC接收器到MCU的标准数据协议
- MAVLink是无人机/机器人遥测的事实标准
- 实际系统通常组合多种通信方式以覆盖不同需求