3. 通信链路与协议:数传电台与图传原理,MAVLink协议基础,串口通信(UART)配置

地面站跟飞机之间怎么说话?说白了就靠两样东西:数传和图传。一个传数据,一个传画面。再加上底层的串口协议和上层的MAVLink协议,这一整套链路才算完整。

我刚开始接触无人机时,总觉得数传和图传差不多,都是天线对天线嘛。结果有一次在野外调试,图传画面清晰得很,数传却疯狂丢包——这才意识到,这两兄弟虽然住在一起,脾气可完全不一样。

3.1 数传电台与图传原理

3.4 数传电台:可靠才是第一位的

数传电台负责传输飞行数据——高度、速度、GPS坐标、电池电压、遥控信号强度等等。这些数据量不大,但绝对不能丢。你想想看,要是降落时高度数据丢了一帧,后果是什么?

数传电台通常工作在433MHz、915MHz或2.4GHz频段。频率越低,绕射能力越强,传输距离越远,但带宽也越小。我个人习惯在城区或山区用433MHz,开阔场地才上2.4GHz。

频段 特点 典型距离 适用场景
433MHz 穿透强、距离远、带宽低 5-15km 山区、城市、远距离飞行
915MHz 平衡型、抗干扰好 3-10km 郊区、农田、常规作业
2.4GHz 带宽高、距离短、易受WiFi干扰 1-5km 近距离、高数据量、竞速飞行
我的经验:数传电台的发射功率不是越大越好。功率太大,接收端容易饱和,反而丢包。我一般控制在100-500mW之间,配合合适的天线,效果比盲目开满功率好得多。

3.2 图传:画面流畅才是王道

图传传输的是摄像头采集的视频流。数据量巨大,但允许偶尔丢帧——你看到的画面卡了一下,总比飞机失联好。

图传主流方案有两种:模拟图传和数字图传。

  • 模拟图传:延迟低(<50ms)、价格便宜、穿透力强。但画质差,有雪花点。我早期做FPV穿越机时一直用模拟图传,那种实时感是数字图传给不了的。
  • 数字图传:画质高清、抗干扰强、支持双向通信。但延迟稍高(100-200ms),价格贵。大疆的Lightbridge和OcuSync就是典型代表。

这里有个坑——数传和图传的频段不能冲突。我曾经遇到过数传用2.4GHz,图传也用2.4GHz,结果两者互相干扰,飞机飞出去200米就失控了。后来我把数传改到433MHz,问题立刻解决。

注意:数传和图传的天线要尽量远离,至少间隔30cm以上。否则发射功率会互相耦合,轻则降低通信距离,重则烧毁前端放大器。

3.3 MAVLink协议基础

数传电台传的是数据,但数据怎么组织?怎么保证地面站和飞控能互相理解?这就轮到MAVLink协议上场了。

MAVLink是无人机领域最常用的通信协议。说白了,它定义了一套标准的数据格式——飞控发什么消息、地面站回什么指令,都按这个规矩来。

3.3.1 MAVLink的消息结构

每条MAVLink消息都是一个数据包。我拆开给你看:

起始标识(0xFE) | 负载长度 | 序列号 | 系统ID | 组件ID | 消息ID | 负载数据 | 校验和
  • 起始标识:固定为0xFE,告诉接收端“一条新消息来了”。
  • 负载长度:后面跟着多少字节的有效数据。
  • 序列号:用来检测丢包。如果序列号跳了,说明中间有消息丢了。
  • 系统ID和组件ID:区分不同的无人机和不同的设备(飞控、GPS、云台等)。
  • 消息ID:这条消息是什么类型——是心跳包、姿态数据、还是遥控指令?
  • 负载数据:真正的数据内容。
  • 校验和:保证数据在传输过程中没被篡改。

我调试时最常用的消息是HEARTBEAT(心跳包)。飞控每秒发一次,地面站收到就知道链路还活着。如果连续3秒没收到心跳包,地面站就该报警了。

3.3.2 常用MAVLink消息

消息ID 名称 内容 频率
0 HEARTBEAT 系统状态、飞行模式、是否已解锁 1Hz
24 GPS_RAW_INT 经纬度、海拔、地面速度、卫星数 5Hz
30 ATTITUDE 横滚角、俯仰角、偏航角、角速度 10Hz
65 RC_CHANNELS 遥控器各通道值 10Hz
74 VFR_HUD 空速、地速、高度、爬升率 5Hz
关键点:MAVLink 2.0相比1.0增加了签名机制,可以防止数据被篡改。如果你的无人机用于商业或安防场景,务必使用MAVLink 2.0。

3.4 串口通信(UART)配置

数传电台和飞控之间怎么连?图传模块和地面站之间怎么通?答案就是串口(UART)。

UART是无人机系统里最底层的通信接口。飞控、GPS、数传、甚至一些传感器,都通过UART连接。它只有两根数据线——TX(发送)和RX(接收),外加一根地线。

3.4.1 串口参数配置

串口通信需要两边约定好参数,否则就是鸡同鸭讲。主要参数有四个:

  • 波特率:每秒传输多少位。常见值:57600、115200、921600。数传一般用57600或115200,图传数据量大,可能用到921600。
  • 数据位:通常是8位。
  • 停止位:通常是1位。
  • 校验位:无校验(N)、奇校验(O)、偶校验(E)。无人机系统一般用无校验。

我遇到过最头疼的问题就是波特率不匹配。飞控设了115200,数传模块默认却是57600。地面站那边死活收不到数据,折腾了半天才发现是波特率没对上。

3.4.2 典型接线方式

飞控和数传模块的连接,记住一个原则:TX接RX,RX接TX。别接反了,接反了数据就飞不出去。

飞控(UART)         数传模块
TX  ——————————>  RX
RX  <——————————  TX
GND ——————————  GND
VCC ——————————  VCC (5V或3.3V,看模块规格)
我的习惯:每次焊接串口线之前,先用万用表量一下TX和RX的电平。3.3V的飞控接5V的数传模块,中间要加电平转换芯片,否则会烧IO口。别问我怎么知道的——我已经烧过三块飞控了。

3.4.3 地面站串口配置示例(QGroundControl)

以QGroundControl为例,配置串口连接数传模块的步骤:

  1. 打开QGC,进入设置 → 通信连接。
  2. 点击添加,选择串口。
  3. 选择正确的串口号(Windows下是COM口,Linux下是/dev/ttyUSB0或/dev/ttyACM0)。
  4. 设置波特率(与数传模块和飞控一致)。
  5. 点击连接。

如果连接成功,QGC的状态栏会显示已连接,并且开始收到心跳包。如果一直显示正在连接,八成是波特率不对或者TX/RX接反了。

3.5 通信链路整体架构

把上面这些串起来,就是一条完整的通信链路。我画了一张图,帮你理清关系:

无人机通信链路架构图 无人机通信链路架构 飞控 Pixhawk / Cube / 自研 数传模块 433MHz / 915MHz 图传模块 2.4GHz / 5.8GHz 地面站数传 接收端 地面站图传 接收端 地面站软件 QGC / Mission Planner UART (115200bps) UART (921600bps) MAVLink over 数传链路 视频流 over 图传链路 UART / USB HDMI / USB 数传:MAVLink 数据包 图传:H.264 / H.265 视频流

从这张图可以看得很清楚:飞控通过UART连接数传模块和图传模块,数传模块把MAVLink数据包通过无线链路发给地面站数传接收端,再通过UART或USB传给地面站软件。图传模块则把视频流通过另一条无线链路发给地面站图传接收端,再通过HDMI或USB传给地面站软件。

两条链路互不干扰,各司其职。但一旦其中一条出问题,地面站就会丢失对应的数据——要么看不到画面,要么收不到飞行数据。

避坑指南:我曾经在项目里遇到过数传和图传天线靠太近,导致数传的发射信号串入图传接收端,图传画面出现横条纹干扰。后来把两个天线拉开到50cm以上,问题消失。记住:天线之间要保持物理隔离。

3.6 本章小结

通信链路是地面站和无人机之间的生命线。数传负责可靠的数据传输,图传负责流畅的视频传输,MAVLink协议让数据有了统一的语言,UART则是这一切的物理基础。

你只要记住三点:频段别冲突、波特率要一致、TX接RX别接反。做到这三点,通信链路基本就稳了。