Long-Range Communication
Introduction
When a robot's operating range exceeds WiFi/Bluetooth coverage, long-range communication solutions are needed. 4G/5G cellular networks provide high-bandwidth wide-area coverage, LoRa offers ultra-long-range low-power transmission, and RC transmitters provide low-latency real-time control.
4G/5G Cellular Communication
4G LTE Modules
| Module |
Manufacturer |
Download Speed |
Bands |
Interface |
Features |
| SIM7600CE |
SIMCom |
150 Mbps |
All China carriers |
UART/USB |
Common in China |
| SIM7600G-H |
SIMCom |
150 Mbps |
Global bands |
UART/USB |
Global roaming |
| EC20 |
Quectel |
150 Mbps |
All China carriers |
USB/UART |
Stable and reliable |
| EC25 |
Quectel |
150 Mbps |
All China carriers |
USB |
Compact module |
Connection Method
SIM card
│
┌────┴────┐
│ 4G Module│
│(SIM7600) │
└─┬──┬────┘
│ │
UART USB ──→ MCU / Linux SBC
│
└── AT command control
Basic AT Command Operations
# Check module status
AT → OK
AT+CPIN? → +CPIN: READY (SIM card ready)
AT+CSQ → +CSQ: 25,0 (Signal strength, 25/31)
AT+CREG? → +CREG: 0,1 (Registered on local network)
AT+CGATT? → +CGATT: 1 (GPRS attached)
# Establish PPP connection or use module's built-in TCP/IP stack
AT+CIPOPEN=0,"TCP","server.example.com",8080
AT+CIPSEND=0,12
Hello Robot!
# Provide network interface via USB (recommended)
# Module acts as USB NIC, Linux auto-recognizes as eth1/wwan0
Usage on Linux SBC
# Raspberry Pi / Jetson using 4G module via USB
# Module typically recognized as /dev/ttyUSB0-3 and a NIC interface
# Manage with NetworkManager
sudo nmcli connection add type gsm ifname '*' con-name '4G' apn 'cmiot'
sudo nmcli connection up '4G'
# Check connection
ip addr show wwan0
ping -I wwan0 8.8.8.8
5G Modules
| Feature |
4G LTE |
5G NR |
| Peak download |
150 Mbps |
1–10 Gbps |
| Peak upload |
50 Mbps |
500 Mbps |
| Latency |
20–50 ms |
1–10 ms |
| Power consumption |
Medium |
Higher |
| Module cost |
Low |
High |
| Coverage |
Wide |
Developing |
5G's low-latency capability (uRLLC mode can reach 1 ms) opens the possibility for cloud-based robot control.
Application Scenarios
- Remote monitoring: Streaming robot video and status over 4G
- Cloud control: Leveraging cloud computing power for path planning and decision-making
- OTA upgrades: Remote firmware updates
- Data collection: Real-time field test data upload
- Multi-robot coordination: Coordinating multiple robots via a cloud server
LoRa
Principle
LoRa (Long Range) uses CSS (Chirp Spread Spectrum) modulation to achieve ultra-long-range communication at extremely low power:
\[
\text{Chirp signal}: f(t) = f_0 + \frac{BW}{T_s} \cdot t
\]
Frequency varies linearly over time (up-chirp/down-chirp), trading spreading gain for transmission distance.
Key Parameters
| Parameter |
Description |
Typical Value |
| Frequency band |
ISM license-free band |
433 MHz / 868 MHz / 915 MHz / 470 MHz (China) |
| Spreading factor SF |
Higher = longer range, lower rate |
7–12 |
| Bandwidth BW |
Signal frequency span |
125/250/500 kHz |
| Coding rate CR |
Forward error correction redundancy |
4/5, 4/6, 4/7, 4/8 |
| Transmit power |
Output power |
Max 20 dBm (100 mW) |
Data Rate vs. Range
| SF |
Rate @ BW=125 kHz |
Sensitivity |
Approximate Range |
| 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{Link budget} = P_{tx} + G_{ant} - L_{path} > S_{rx}
\]
SX1262/SX1268
The Semtech SX1262 is the latest generation LoRa transceiver chip:
| Parameter |
Value |
| Frequency range |
150–960 MHz |
| Transmit power |
+22 dBm (SX1262) / +15 dBm (SX1261) |
| Sensitivity |
-148 dBm (SF12, 125 kHz) |
| Current |
TX: 118 mA, RX: 4.6 mA, Sleep: 0.6 uA |
| Interface |
SPI |
| Package |
4x4 mm QFN |
LoRa Modules
| Module |
Chip |
Band |
Interface |
Price |
| EBYTE E22-400T30D |
SX1268 |
410–493 MHz |
UART |
~30 RMB |
| EBYTE E22-900T30D |
SX1262 |
850–930 MHz |
UART |
~30 RMB |
| RAK4630 |
SX1262+nRF52840 |
Multi-band |
BLE+LoRa |
~60 RMB |
| Heltec LoRa32 V3 |
SX1262+ESP32-S3 |
Multi-band |
WiFi+BLE+LoRa |
~50 RMB |
Arduino LoRa Example
// Using RadioLib library for SX1262
#include <RadioLib.h>
// SX1262 pin definitions
SX1262 radio = new Module(8, 14, 12, 13); // CS, DIO1, RST, BUSY
void setup() {
Serial.begin(115200);
// Initialize LoRa
int state = radio.begin(
470.0, // Frequency MHz
125.0, // Bandwidth kHz
9, // Spreading factor
7, // Coding rate 4/7
0x12, // Sync word
22, // TX power dBm
8, // Preamble length
0, // TCXO voltage
false // Use LDO
);
if (state == RADIOLIB_ERR_NONE) {
Serial.println("LoRa initialized successfully!");
}
}
// Sender
void sendRobotStatus() {
// Pack robot status (lat/lon + battery + status code)
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("Sent successfully, RSSI=%.1f dBm\n", radio.getRSSI());
}
}
// Receiver
void receiveData() {
uint8_t buf[64];
int state = radio.receive(buf, sizeof(buf));
if (state == RADIOLIB_ERR_NONE) {
Serial.printf("Received %d bytes, RSSI=%.1f, SNR=%.1f\n",
radio.getPacketLength(), radio.getRSSI(), radio.getSNR());
}
}
LoRa Application Scenarios
| Scenario |
Data Content |
Frequency |
Description |
| Agricultural patrol vehicle |
GPS + status |
Every 10 s |
Long range, low frequency |
| Environmental monitoring station |
Temp/humidity + pressure |
Every minute |
Solar powered |
| Search and rescue robot |
Location + distress signal |
Event-triggered |
Emergency scenario |
| Drone swarm |
Simple commands |
1–10 Hz |
Beyond visual range control |
RC Transmitters
2.4 GHz RC Systems
Traditional hobby RC transmitters are widely used for robot teleoperation:
| Brand |
Model |
Channels |
Protocol |
Latency |
Range |
| FlySky |
FS-i6X |
10 |
AFHDS 2A |
~10 ms |
1.5 km |
| FrSky |
X9D+ |
16 |
ACCESS |
~8 ms |
2 km |
| RadioLink |
AT9S |
12 |
FHSS |
~10 ms |
1.5 km |
| TBS |
Crossfire |
12 |
LoRa hybrid |
~5 ms |
40 km+ |
Receiver Outputs
| Output Type |
Description |
Application |
| PWM |
One wire per channel, 1–2 ms pulse |
Direct servo driving |
| PPM |
All channels multiplexed on one wire |
MCU parsing |
| SBUS |
Serial protocol (inverted UART) |
Flight controller/MCU |
| CRSF |
High-speed bidirectional serial |
TBS Crossfire |
SBUS Protocol
SBUS (Serial Bus) was developed by Futaba and has become the standard output for RC receivers:
| Parameter |
Value |
| Baud rate |
100000 (non-standard) |
| Data bits |
8-bit, even parity, 2 stop bits |
| Signal level |
Inverted (requires inverter or software inversion) |
| Frame length |
25 bytes |
| Channels |
16 (11-bit/channel) + 2 digital channels |
| Frame rate |
14 ms or 7 ms (high-speed mode) |
// ESP32 SBUS parsing
#define SBUS_BAUDRATE 100000
#define SBUS_FRAME_SIZE 25
uint16_t channels[16];
void parseSBUS(uint8_t* buf) {
if (buf[0] != 0x0F) return; // Frame header
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);
// ... continue parsing remaining channels
// Channel value range: 172-1811, center 992
// Map to -100%~+100%
}
void setup() {
// SBUS is inverted UART; ESP32 can use uart_set_line_inverse
Serial2.begin(SBUS_BAUDRATE, SERIAL_8E2, 16, -1, true); // Inverted
}
Telemetry Links
Overview
A telemetry link provides bidirectional data transmission between the robot and a ground station, commonly used in drones and unmanned ground vehicles.
Common Solutions
| Solution |
Band |
Range |
Bandwidth |
Application |
| Telemetry radio |
433/915 MHz |
5–20 km |
100 kbps |
MAVLink telemetry |
| WiFi relay |
2.4/5 GHz |
1–5 km |
High |
Video + telemetry |
| 4G |
Cellular |
Unlimited |
High |
Remote monitoring |
| Video TX |
5.8 GHz |
1–10 km |
20–50 Mbps |
FPV video |
MAVLink Protocol
MAVLink (Micro Air Vehicle Link) is the standard telemetry protocol in the drone/robot domain:
- Lightweight message protocol
- Supports 256 message types
- CRC checksum
- Compatible with multiple transport layers (UART, UDP, TCP)
- Widely used by flight controllers such as PX4 and ArduPilot
V2X (Vehicle-to-Everything)
Overview
V2X communication is used for outdoor mobile robots (autonomous vehicles, delivery robots) to interact with their surroundings:
| Type |
Description |
| V2V |
Vehicle-to-Vehicle, collision avoidance coordination |
| V2I |
Vehicle-to-Infrastructure, traffic signals |
| V2P |
Vehicle-to-Pedestrian, safety alerts |
| V2N |
Vehicle-to-Network, cloud services |
Technical Standards
| Standard |
Technology |
Latency |
Range |
| DSRC (IEEE 802.11p) |
WiFi variant |
<10 ms |
300 m |
| C-V2X (3GPP) |
Cellular technology |
<20 ms |
500 m |
| NR-V2X (5G) |
5G sidelink |
<3 ms |
500 m |
Delivery Robot Applications
Long-range communication capabilities needed by outdoor delivery robots:
- Report location and status over 4G/5G
- Receive dispatch commands and route updates
- Remote takeover (teleoperation) upon anomalies
- OTA firmware upgrades
Comprehensive Communication Comparison
| Solution |
Range |
Bandwidth |
Latency |
Power |
Cost |
Monthly Fee |
| 4G LTE |
Coverage area |
150M |
30 ms |
High |
Medium |
Yes |
| 5G NR |
Coverage area |
1G+ |
5 ms |
High |
High |
Yes |
| LoRa |
2–15 km |
50k |
100 ms+ |
Very low |
Low |
No |
| RC transmitter |
1–2 km |
100k |
10 ms |
Low |
Medium |
No |
| Telemetry radio |
5–20 km |
100k |
20 ms |
Medium |
Low |
No |
Summary
- 4G/5G provides wide-area high-bandwidth connectivity, suitable for remote monitoring and cloud collaboration
- 5G's low-latency mode opens possibilities for cloud-based real-time control
- LoRa achieves ultra-long-range communication at extremely low power, suitable for low-data-rate scenarios
- RC transmitters provide reliable low-latency real-time control
- SBUS is the standard data protocol from RC receiver to MCU
- MAVLink is the de facto standard for drone/robot telemetry
- Practical systems typically combine multiple communication methods to cover different requirements