1. 通信协议概述:无人机与地面站通信的基本概念
大家好,我是你们的讲师。今天咱们正式开始这门课的第一章。
说实话,我入行那会儿,无人机还是个挺小众的玩意儿。那时候飞控和地面站之间怎么说话?基本靠猜。后来慢慢有了标准,才有了我们今天要聊的这些协议。
这一章,咱们不急着写代码。先把地基打牢。你想想看,如果连通信协议是干什么的都不清楚,后面写再多代码也是白搭。
1.1 无人机与地面站通信的基本概念
什么叫通信?说白了,就是两边互相传话。
无人机这边,得告诉地面站:我现在飞多高、电池还剩多少、GPS信号好不好。地面站这边,得告诉无人机:你往左飞、你降下来、你切个模式。
这个传话的过程,就是通信。
但问题来了——传话不能乱传。你得定个规矩:
- 谁先开口?
- 一句话说多长?
- 说错了怎么办?
- 怎么保证对方听懂了?
这些规矩加起来,就是通信协议。
核心理解:通信协议 = 双方约定好的「说话规则」。没有规则,就是鸡同鸭讲。
我记得刚带团队那会儿,有个新人问我:「老师,为什么不用蓝牙传飞控数据?」我当时就笑了。蓝牙距离才十几米,无人机飞个几百米高,你拿什么传?这就是典型的没搞清楚应用场景。
1.2 通信协议的作用与分类
协议的作用,我总结成三句话:
- 保证数据能到——别丢包,别乱序。
- 保证数据能懂——收方知道这段数据是啥意思。
- 保证效率够高——别传个姿态数据要半秒钟,那飞机早炸了。
分类上,咱们做无人机的一般这么分:
| 分类维度 | 类型 | 举例 |
|---|---|---|
| 按传输介质 | 有线 / 无线 | 串口线 / 2.4G射频 |
| 按通信方向 | 单向 / 双向 | SBUS(单向) / MAVLink(双向) |
| 按数据格式 | 文本 / 二进制 | MAVLink(二进制) / 自定义文本协议 |
| 按实时性 | 实时 / 非实时 | CRSF(实时) / 数传链路(非实时) |
嗯,这里要注意:分类不是绝对的。很多协议在不同场景下可以灵活切换。我见过有人用MAVLink做实时控制,结果延迟高得离谱——不是协议不行,是没用对地方。
1.3 主流协议对比
好,接下来咱们聊聊市面上最常见的四种协议。我一个个说。
1.3.1 MAVLink
MAVLink,全称Micro Air Vehicle Link。这是目前无人机领域用得最广的协议,没有之一。
它的特点是:
- 双向通信——飞控能发,地面站也能发。
- 消息类型丰富——姿态、位置、电池、状态、命令……应有尽有。
- 二进制编码——体积小,效率高。
- 有校验——每个包都带CRC,丢包能发现。
我个人习惯用MAVLink做数传链路。为什么呢?因为它天然支持消息路由。你可以在一个串口上同时跑心跳、姿态、GPS、遥控信号,互不干扰。
避坑指南:我曾经在一个项目里,把MAVLink的波特率设成了115200,结果飞控和地面站死活连不上。查了半天才发现,飞控默认是57600。嗯,这种低级错误,犯一次就记住了。
1.3.2 CRSF
CRSF,Crossfire协议。这是ELRS(ExpressLRS)和TBS Crossfire系统用的协议。
它的特点:
- 超低延迟——号称1ms以内。
- 双向——遥控器能发控制,接收机也能回传RSSI、电池等信息。
- 高速串口——通常跑在420kbps甚至更高。
你想想看,穿越机竞速的时候,延迟差个10ms,可能就撞墙了。所以CRSF在竞速圈特别火。
我建议做穿越机或者FPV项目的同学,优先考虑CRSF。它的回传通道虽然窄,但够用。
1.3.3 SBUS
SBUS,全称Serial Bus。这是Futaba搞出来的协议,后来成了行业标准。
特点:
- 单向——只能从遥控器接收机往飞控发。
- 16通道——最多支持16个遥控通道。
- 串口通信——100kbps,8位数据,偶校验,2个停止位。
- 反相——信号电平是反的,需要硬件或软件取反。
嗯,这里有个坑。SBUS的信号是反相的。我第一次用STM32读SBUS的时候,死活读不到数据。后来拿示波器一看,波形是反的。赶紧加了个反相器,搞定。
注意:SBUS是单向协议。它只能把遥控信号传给飞控,不能从飞控传数据回来。如果你需要回传电池电压或GPS信息,SBUS做不到。别硬用。
1.3.4 PPM
PPM,Pulse Position Modulation。这是最古老的遥控协议之一。
特点:
- 单向——同SBUS。
- 模拟信号——通过脉冲宽度编码通道值。
- 通道数有限——一般最多8通道。
- 精度低——容易受干扰。
说实话,PPM现在基本被淘汰了。我只有在调试老设备的时候才会用到它。如果你是新项目,别选PPM。真的,听我的。
1.4 协议对比总结
咱们用一张表收个尾:
| 协议 | 方向 | 延迟 | 通道数 | 典型应用 | 我的推荐 |
|---|---|---|---|---|---|
| MAVLink | 双向 | 中 | 不限(消息ID) | 数传、地面站 | ⭐ 首选 |
| CRSF | 双向 | 低 | 16 | 穿越机、FPV | ⭐ 竞速首选 |
| SBUS | 单向 | 低 | 16 | 传统遥控 | 可用,但注意单向 |
| PPM | 单向 | 中 | 8 | 老设备 | ❌ 不推荐新项目 |
好了,第一章就到这里。下一章咱们会深入MAVLink,从数据包结构开始,一行一行写代码。到时候你会看到,协议这东西,说白了就是一堆字节在飞。你懂了规则,就能驾驭它。
有什么问题,咱们下节课见。