1. 为什么ELRS加ArduPilot是当前穿越机与固定翼玩家的热门组合
如果你最近一年逛过航模论坛或者刷过FPV相关的视频,大概率会频繁看到两个词:ELRS和ArduPilot。前者是ExpressLRS的缩写,一套开源遥控链路方案;后者是飞控固件里功能最全、生态最庞大的存在。把这俩凑一块儿,基本就是“信号稳、距离远、功能多”的代名词。
我自己从最早的PPM接收机一路用到SBUS,再到后来换装ELRS,中间踩过的坑不算少。最开始用ELRS配Betaflight很顺,插上就能用,但换到ArduPilot之后发现事情没那么简单——CRSF协议虽然通用,可ArduPilot的参数体系跟Betaflight完全不是一个量级,遥测回传的配置也有一堆细节要注意。这篇文章就是把我从零配置到高级遥测显示的完整过程整理出来,包括参数怎么设、线怎么接、常见故障怎么排查,以及怎么把飞控数据回传到遥控器上显示。
适合谁看?如果你手上有刷了ArduPilot的飞控,遥控器是OpenTX或者EdgeTX系统,想用ELRS接收机做控制链路,同时希望把飞行数据实时回传到遥控器屏幕上,那这篇内容基本能覆盖你90%的需求。不需要你有多深的电子基础,但至少要会拆装机、会刷固件、能看懂基本的接线图。
核心关键词先摆出来:ELRS负责射频链路,ArduPilot负责飞行控制,CRSF是两者之间的通信协议,OpenTX和EdgeTX是遥控器端的操作系统。这四个东西串起来,就是一套完整的遥控遥测方案。
2. 硬件选型与接线:别让一根线毁掉整个链路
2.1 接收机与飞控的匹配逻辑
ELRS接收机的种类很多,按频段分有2.4GHz和915MHz(国内常用868MHz),按接口分有单线CRSF、双线CRSF加遥测、还有带PWM输出的版本。配ArduPilot的话,我强烈建议用支持CRSF协议的串口接收机,比如常见的EP1、EP2、RP1、RP3这几款。原因很简单:CRSF是双向协议,一根线就能同时传输遥控指令和遥测数据,接线少、故障点少。
飞控这边,ArduPilot支持的串口数量取决于具体硬件。以Pixhawk系列为例,通常有5个以上的UART,其中TELEM1、TELEM2、GPS口都可以配置成遥控输入。我一般习惯把ELRS接收机接在TELEM2上,因为TELEM1通常留给数传电台,GPS口留给GPS模块,这样分工明确,后期排查问题也方便。
这里有个细节要注意:ELRS接收机的供电电压。大部分接收机支持5V输入,但有些飞控的串口供电是3.3V或者电压不稳。我实测过,如果供电不足,接收机会间歇性重启,表现就是遥控信号时断时续。所以接线前先用万用表量一下飞控串口口的供电电压,确认在4.5V到5.5V之间再插接收机。
2.2 接线方式与端口映射
CRSF接收机通常有四根线:5V、GND、TX、RX。但实际用的时候,你只需要接三根——5V、GND、TX。因为CRSF是半双工协议,一根TX线就能完成双向通信。接收机的TX接到飞控串口的RX上,飞控的TX不用接。这个逻辑跟SBUS类似,但CRSF的波特率是420000,比SBUS的100000高不少。
具体到ArduPilot的参数配置,假设你把接收机接在TELEM2口上,对应的参数是:
SERIAL2_PROTOCOL设为 23(RCIN)SERIAL2_BAUD设为 420(对应420000波特率)RC_PROTOCOLS设为 1(只启用CRSF)
这里解释一下为什么SERIAL2_PROTOCOL要设成23。ArduPilot的串口协议编号里,23代表RC输入,也就是把该串口当作遥控信号输入口。如果你设成别的值,比如1(MAVLink),飞控就收不到遥控指令了。RC_PROTOCOLS这个参数是位掩码,1代表CRSF,2代表SBUS,4代表PPM。设成1就是只认CRSF,避免飞控误判信号类型。
注意:改完参数必须重启飞控,否则串口协议不会重新初始化。我见过有人改完参数直接试,结果遥控没反应,以为接收机坏了,其实就是没重启。
2.3 遥控器端的硬件准备
遥控器这边,OpenTX和EdgeTX系统的遥控器都支持ELRS外置高频头。常见的有Jumper T-Lite、Radiomaster TX12、TX16S这些。如果你用的是内置ELRS的遥控器,比如Radiomaster Zorro ELRS版,那就省事了,直接在遥控器里设置就行。
外置高频头的安装很简单,插到遥控器背面的JR仓或者Nano仓里,然后在遥控器系统里把外置射频模式设成CRSF。具体路径是:模型设置 -> 外部射频 -> 协议选CRSF -> 波特率选400000(有些遥控器是420000,选最接近的就行)。这里有个坑:如果波特率选错了,高频头和遥控器之间通信不上,表现就是高频头灯不亮或者闪烁异常。
3. ArduPilot参数配置:从串口到遥控校准的完整流程
3.1 串口参数与协议选择
前面提到了SERIAL2_PROTOCOL和SERIAL2_BAUD,这里再展开说一下其他相关参数。ArduPilot的串口参数命名规则是SERIALx_PROTOCOL和SERIALx_BAUD,x代表串口编号。不同飞控的串口编号对应关系不一样,比如Pixhawk 4的TELEM2对应SERIAL2,而有些飞控的TELEM2对应SERIAL3。这个一定要查飞控的硬件定义文档,别凭感觉猜。
我一般会先把所有串口的当前配置读出来,确认哪个串口是空闲的。方法很简单:在Mission Planner或者QGroundControl里连上飞控,打开参数列表,搜索SERIAL,把SERIALx_PROTOCOL不是-1的都记下来。通常GPS占一个、数传占一个,剩下的就可以给接收机用。
RC_PROTOCOLS这个参数值得单独说一下。它的默认值通常是7,也就是CRSF、SBUS、PPM都启用。但实际用的时候,我建议只启用你正在用的协议。原因有两个:一是减少飞控的解析负担,二是避免信号干扰导致的误判。比如你只用CRSF,就设成1;如果以后要换SBUS接收机,再改成2。
还有一个参数叫RC_OPTIONS,这个跟遥测有关。默认值是0,但如果你要用CRSF的遥测功能,需要把第5位(值32)打开,也就是设成32。这个参数控制的是是否通过CRSF回传遥测数据。我一开始没设这个,结果遥控器上什么数据都看不到,折腾了半天才发现是这里的问题。
3.2 遥控校准与通道映射
参数设好之后,下一步是遥控校准。在Mission Planner里,进入初始设置 -> 必要硬件 -> 遥控器校准,按照提示拨动摇杆和开关。校准过程中要注意几点:
第一,确保接收机已经跟遥控器对频成功。ELRS的对频方式通常是上电后接收机灯快闪,然后在遥控器高频头菜单里选Bind。对频成功后接收机灯常亮。
第二,校准前把遥控器的通道映射确认好。ArduPilot默认的通道顺序是:1副翼、2升降、3油门、4方向、5飞行模式、6预留、7预留、8预留。如果你在遥控器里改了通道顺序,比如把油门放到通道3以外的位置,那校准的时候飞控会识别错。
第三,校准过程中如果某个通道的行程不够,飞控会提示。这时候要回到遥控器里调整该通道的行程范围,通常是调到±100%。ELRS的默认行程就是±100%,一般不需要额外调整。
校准完成后,检查一下飞行模式开关是否对应正确的模式。ArduPilot的飞行模式是通过通道5的PWM值来切换的,不同PWM区间对应不同模式。比如固定翼的Manual、Stabilize、Loiter、RTL,每个模式对应一个PWM范围。这个在Mission Planner的飞行模式设置里可以直观地看到。
3.3 失控保护与故障安全设置
失控保护是很多人容易忽略的一环。ELRS接收机本身支持失控保护,但ArduPilot也有自己的失控保护逻辑。两者要配合好,否则可能出现接收机认为信号丢了、飞控却还在等指令的情况。
ELRS的失控保护设置在高频头菜单里,可以设置每个通道在失控时的输出值。我一般把油门通道设为最低,其他通道设为中位,飞行模式通道设为RTL对应的值。这样一旦失控,飞控会自动进入返航模式。
ArduPilot这边的失控保护参数是FS_THR_ENABLE和FS_THR_VALUE。FS_THR_ENABLE设为1表示启用油门失控保护,FS_THR_VALUE设为950左右,比正常油门最低值略低。当飞控检测到油门通道值低于这个阈值超过一定时间,就会触发失控保护。
提示:测试失控保护的时候,不要把桨装上。我见过有人在地面测试时电机突然转起来,幸好没装桨,不然后果不堪设想。
4. 遥测回传与遥控器显示:把飞行数据搬到屏幕上
4.1 CRSF遥测协议的数据类型
CRSF协议支持的遥测数据类型很多,包括GPS坐标、高度、速度、电池电压、电流、姿态角、飞行模式等。但不是所有数据都会自动回传,需要在ArduPilot里配置。具体来说,RC_OPTIONS设成32之后,飞控会通过CRSF回传一组标准遥测数据。但如果你想回传更多数据,比如具体的GPS卫星数、HDOP值,就需要额外配置。
ArduPilot的遥测回传是通过MAVLink协议实现的,CRSF只是传输层。飞控把MAVLink数据打包成CRSF帧,通过接收机的TX线回传到遥控器。遥控器端的OpenTX或EdgeTX系统再解析这些数据,显示在屏幕上。
这里有个概念要理清:CRSF遥测和MAVLink遥测是两回事。CRSF遥测是接收机直接回传的,数据量有限;MAVLink遥测是通过数传电台回传的,数据量大但需要额外硬件。ELRS的优势在于它把两者结合了——通过CRSF链路回传部分MAVLink数据,不需要额外的数传电台。
4.2 OpenTX/EdgeTX遥测屏幕配置
遥控器端的遥测显示配置,OpenTX和EdgeTX的操作逻辑基本一致。以EdgeTX为例,进入模型设置 -> 遥测 -> 发现新传感器,系统会自动搜索接收机回传的传感器数据。搜到之后,你会看到一堆传感器名称,比如RSSI、1RSS、2RSS、RQly、TQly、GPS、Alt、Spd、Vbat等。
这些传感器的含义分别是:
- RSSI:信号强度指示
- 1RSS/2RSS:双天线各自的信号强度
- RQly:上行链路质量
- TQly:下行链路质量
- GPS:GPS坐标
- Alt:高度
- Spd:速度
- Vbat:电池电压
搜到传感器之后,下一步是配置显示屏幕。EdgeTX支持多个遥测屏幕,每个屏幕可以显示不同数据。我一般配三个屏幕:第一个显示信号质量和链路质量,第二个显示GPS和高度速度,第三个显示电池电压和电流。
配置方法:进入显示 -> 遥测屏幕,选择屏幕编号,然后添加要显示的传感器。每个传感器可以设置名称、单位和精度。比如电池电压可以设成显示两位小数,高度设成整数。
4.3 高级遥测:自定义传感器与逻辑开关
如果你想让遥测显示更智能,比如电池电压低于某个值时触发震动提醒,那就需要用到逻辑开关和特殊功能。EdgeTX的逻辑开关功能很强大,可以基于遥测数据做条件判断。
举个例子:我想在电池电压低于3.5V每片时触发遥控器震动。假设是4S电池,总电压低于14V时触发。配置步骤是:
- 在逻辑开关里新建一个,功能选“小于”,第一个参数选Vbat传感器,第二个参数设14,然后开启这个逻辑开关。
- 在特殊功能里新建一个,触发条件选刚才的逻辑开关,动作选“震动”,然后设置震动模式。
这样当电压低于14V时,遥控器就会震动提醒。类似地,你还可以做高度提醒、速度提醒、信号弱提醒等。
还有一个高级玩法是把遥测数据记录到遥控器的SD卡里。EdgeTX支持日志记录功能,可以把选定的传感器数据以CSV格式保存。飞行结束后把SD卡插到电脑上,用Excel或者专门的分析软件打开,就能看到整个飞行过程的电压、高度、速度曲线。这个对于调试飞行性能特别有用。
5. 常见问题与排查技巧实录
5.1 接收机灯不亮或闪烁异常
这是最常见的问题,通常有三个原因:供电不足、对频失败、固件不匹配。
供电不足的判断方法很简单,用万用表量接收机供电引脚电压。如果低于4.5V,就要检查飞控串口供电是否正常,或者考虑从其他5V源取电。我遇到过一种情况:飞控的TELEM2口供电只有4.2V,接收机勉强能工作但距离一远就失控。后来改从飞控的5V输出排针取电,问题就解决了。
对频失败的话,先确认遥控器高频头和接收机的固件版本是否匹配。ELRS的固件版本号必须一致,比如都是3.x版本。如果一个是2.x一个是3.x,对频会失败。查看版本号的方法:遥控器高频头菜单里看版本,接收机连上飞控后看Mission Planner的CRSF遥测数据里的版本号。
固件不匹配的情况比较少见,但如果你买的是二手接收机,有可能被刷过其他固件。这时候需要用ELRS配置器重新刷固件。刷固件的方法这里不展开,官方文档写得很清楚。
5.2 遥控信号时断时续
信号断续的原因比较多,按概率排序:天线安装不当、接收机供电不稳、遥控器高频头功率设置过低、环境干扰。
天线安装是最容易被忽视的。ELRS接收机的天线要尽量远离碳纤维板和金属部件,因为碳纤维会屏蔽射频信号。我一般把天线用扎带固定在机臂的塑料部分,让天线振子尽量垂直。如果是双天线接收机,两根天线最好呈90度夹角,这样能覆盖不同的极化方向。
供电不稳前面说过了,这里补充一点:如果接收机跟飞控共用5V,而飞控的5V是由电调BEC提供的,那电调负载变化时电压会波动。解决办法是给接收机单独加一个5V BEC,或者加一个电容滤波。
遥控器高频头功率设置:ELRS支持10mW到1000mW的功率调节。功率越高信号越强,但功耗和发热也越大。我一般设成100mW,这个功率在开阔环境下能拉到几公里,足够用了。如果设成1000mW,高频头会烫得厉害,而且可能干扰其他设备。
5.3 遥测数据不显示或显示错误
遥测不显示的原因通常是RC_OPTIONS没设对,或者遥控器端没有发现传感器。先检查RC_OPTIONS是否设成了32,然后重启飞控和遥控器,重新发现传感器。
如果传感器发现了但数据不对,比如高度一直是0,那可能是飞控没有获取到GPS定位。ArduPilot的高度数据来自气压计和GPS,如果GPS没定位,高度数据可能不准确。检查GPS模块是否正常工作,卫星数是否足够。
还有一种情况是数据更新频率太低。CRSF遥测的更新频率取决于链路质量,链路好的时候更新快,链路差的时候更新慢。如果发现数据卡顿,先检查信号质量,RQly和TQly应该在80%以上才算正常。
5.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 接收机灯不亮 | 供电不足 | 万用表量电压 | 换5V源或加BEC |
| 接收机灯闪烁 | 对频失败 | 检查固件版本 | 统一固件版本后重新对频 |
| 信号时断时续 | 天线安装不当 | 检查天线位置 | 远离碳纤维,垂直安装 |
| 遥控无反应 | 串口协议错误 | 检查SERIALx_PROTOCOL | 设为23并重启 |
| 遥测不显示 | RC_OPTIONS未设 | 检查参数值 | 设为32并重启 |
| 高度数据为0 | GPS未定位 | 检查卫星数 | 等待GPS定位或检查GPS模块 |
| 数据更新慢 | 链路质量差 | 检查RQly/TQly | 调整天线或提高功率 |
6. 进阶玩法:把ELRS遥测接入地面站
6.1 通过WiFi或蓝牙回传遥测
ELRS的遥测数据不仅能在遥控器上显示,还能通过遥控器的WiFi或蓝牙模块回传到手机或平板上的地面站软件。这个功能对于需要大屏幕显示飞行数据的场景特别有用,比如测绘或者长距离飞行。
具体实现方式:遥控器(比如TX16S)内置WiFi模块,可以开启WiFi热点,然后手机连上这个热点,在地面站软件里设置UDP连接,端口通常是14550。这样地面站就能收到飞控的MAVLink数据了。
但要注意,通过CRSF回传的MAVLink数据量有限,不是所有地面站功能都能用。比如航点上传、参数修改这些需要双向通信的功能,通过CRSF遥测可能不稳定。如果需要完整的地面站功能,还是建议加一个数传电台。
6.2 遥测数据记录与分析
前面提到了EdgeTX的日志记录功能,这里再补充一下数据分析的方法。EdgeTX记录的CSV文件可以用Excel打开,也可以用专门的分析工具比如FlightPlot或者MAVExplorer。我一般用Excel做快速查看,用MAVExplorer做深度分析。
分析的重点通常是:电压曲线是否平滑、高度变化是否符合预期、速度是否有异常波动、信号质量在哪些位置变差。通过这些分析,可以优化天线布局、调整飞行路线、改进电池配置。
举个例子:我有一次飞固定翼,发现飞到某个位置时信号质量骤降。后来把日志导出来一看,那个位置正好是遥控器天线指向飞机的方向,说明天线极化方向不匹配。后来把遥控器天线角度调整了一下,问题就解决了。
6.3 多机切换与模型配置管理
如果你有多架飞机,每架都装了ELRS接收机,那模型配置管理就很重要。EdgeTX支持多个模型配置,每个模型可以独立设置高频头参数、遥测传感器、逻辑开关等。切换飞机时只需要在遥控器里选择对应的模型就行。
但要注意,ELRS接收机的对频信息是存在接收机里的,不是存在遥控器里的。所以如果你用同一个高频头控制多架飞机,每架飞机的接收机都需要单独对频。对频一次之后,接收机会记住高频头的ID,下次上电自动连接。
如果你想让一个接收机对应多个模型配置,比如同一架飞机在不同飞行场地用不同的参数,那可以在遥控器里复制模型配置,然后修改参数。接收机不需要重新对频,因为它只认高频头ID,不认模型配置。
7. 我个人在实际操作中的几点体会
从最早用PPM到现在用ELRS加ArduPilot,我最大的感受是:这套组合的灵活性很高,但前提是你得把基础参数搞对。很多人觉得ArduPilot参数太多太复杂,其实常用的就那么十几个,搞懂了之后剩下的都是微调。
另外,ELRS的固件更新比较频繁,每次更新可能会引入新功能或者改变默认参数。我建议每次更新固件后,都重新检查一遍关键参数,特别是RC_OPTIONS和SERIALx_BAUD这两个,有时候更新后会被重置。
最后分享一个小技巧:如果你在调试过程中遇到莫名其妙的问题,先别急着改参数,把飞控和遥控器都重启一遍,很多时候问题就消失了。电子设备嘛,有时候就是需要重启一下。