news 2026/9/28 8:58:06

ELRS与ArduPilot配置指南:CRSF协议遥测与串口设置详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ELRS与ArduPilot配置指南:CRSF协议遥测与串口设置详解

1. 为什么ELRS加ArduPilot是当前远航与固定翼玩家的热门组合

如果你最近两年在航模圈里混,肯定绕不开两个词:ELRS和ArduPilot。一个是把遥控链路成本打到地板价、延迟压到毫秒级的开源高频头协议,另一个是能把一架泡沫机变成全自动巡航平台的开源飞控固件。把这俩凑一块儿,基本就是当前FPV远航和固定翼玩家的标配方案。

我自己从最早的FrSky接收机一路换到Crossfire,再到现在的ELRS,踩过的坑不算少。最开始用ELRS配ArduPilot的时候,遥控能控,但遥测数据死活回传不上来,地面站里一堆传感器显示不出来。后来才搞明白,问题出在CRSF协议和ArduPilot串口配置的对应关系上。这套东西文档散落在各个论坛和GitHub issue里,中文资料更是零零碎碎,所以我把从零配置到高级遥测显示的完整流程整理出来,给正在入坑或者卡在某个环节的朋友一个可复现的参考。

这篇内容适合三类人:刚买了ELRS高频头和接收机、准备配ArduPilot飞控的新手;已经能飞但遥测数据不全、想打通地面站显示的进阶玩家;以及想用ELRS做远航、需要稳定链路和完整遥测回传的老手。核心关键词就几个:ELRS、ArduPilot、CRSF、EdgeTX,我会围绕这几个点把配置逻辑、参数计算、实操步骤和排查经验全部讲透。

先说结论:ELRS和ArduPilot的搭配,核心难点不在硬件连接,而在协议理解和串口资源分配。只要把CRSF协议的双向通信机制搞清楚,剩下的就是按部就班的参数配置。下面我按实际配置顺序,从整体思路到细节实现一步步拆。

2. 整体方案设计与核心思路拆解

2.1 ELRS与ArduPilot的通信架构到底怎么走

很多人一开始会懵:ELRS高频头插在遥控器上,接收机装在飞机上,飞控又是另一套系统,这三者之间到底怎么通信?我用一个生活化的类比来解释。把遥控器想象成一部对讲机,ELRS高频头是对讲机的天线模块,接收机是另一部对讲机。飞控则是一个只会听说特定暗号的指挥官,它不直接跟对讲机对话,而是通过一个翻译官——也就是CRSF协议——来传递指令和回传数据。

具体链路是这样的:遥控器上的EdgeTX系统把摇杆动作打包成CRSF协议数据,通过ELRS高频头发射出去;飞机上的ELRS接收机收到后,通过一根串口线把CRSF数据送给ArduPilot飞控;飞控解析后执行动作,同时把姿态、GPS、电池等遥测数据按CRSF协议反向送回接收机,接收机再通过ELRS链路回传给高频头,最终显示在遥控器屏幕或地面站上。这条链路是双向全双工的,这也是CRSF相比老式PWM和SBUS协议最大的优势。

理解了这个架构,你就明白为什么配置的时候要同时关注遥控器端、接收机端和飞控端三个地方。任何一环的协议或波特率对不上,链路就断。

2.2 为什么选CRSF而不是SBUS或PWM

SBUS是Futaba搞的单向协议,只能下行控制,没有遥测回传,而且波特率固定、抗干扰能力一般。PWM更原始,一根线一个通道,接线繁琐。CRSF是Crossfire团队设计的双向协议,后来被ELRS全面采用,优势很明显:

  • 双向通信:控制和遥测走同一条串口,省线省资源
  • 高波特率:常见420000或115200,延迟低
  • 通道多:支持最多16个通道,还能传LQ、RSSI、SNR等链路质量数据
  • 标准化:ArduPilot原生支持CRSF,配置项清晰

我实测下来,同样一架远航机,SBUS方案地面站里看不到链路质量,飞远了心里没底;换成CRSF后,遥控器上实时显示LQ和RSSI,飞控也能拿到这些数据做失控保护判断,安全感完全不一样。

2.3 串口资源分配的核心逻辑

ArduPilot飞控一般有多个UART串口,比如Pixhawk系列通常有5到6个。每个串口要分配不同用途:GPS占一个、遥测数传占一个、CRSF接收机占一个,可能还有光流、避障等。这里的关键是SERIALx_PROTOCOL和SERIALx_BAUD两个参数。

CRSF协议在ArduPilot里对应的协议编号是23。波特率方面,ELRS接收机输出CRSF的波特率通常是420000,但有些固件版本或接收机型号可能不同,需要查接收机说明书。我遇到过接收机默认输出115200的情况,飞控设成420000就完全没反应,改成115200立刻正常。所以配置前一定要确认接收机端的CRSF波特率。

提示:ArduPilot的SERIALx_BAUD参数用的是编号而不是直接填波特率数值,比如57对应57600,115对应115200,420对应420000。填错这个参数是新手最常见的坑之一。

3. 核心细节解析与实操要点

3.1 ELRS接收机端的接线与协议设置

ELRS接收机的接线不复杂,但有个细节容易忽略。接收机一般有5根线:5V、GND、TX、RX、还有一根可能是用于SBUS或PWM输出的信号线。配ArduPilot用CRSF时,只需要接5V、GND、TX、RX四根。注意TX和RX要交叉接:接收机的TX接飞控的RX,接收机的RX接飞控的TX。我第一次接的时候没交叉,结果遥控完全没反应,查了半天才发现是TX/RX接反了。

接收机端的协议设置取决于具体型号。有些ELRS接收机出厂默认就是CRSF输出,有些需要通过遥控器或WiFi进接收机配置页面切换。比如常见的EP1、EP2接收机,默认CRSF,但如果你刷了PWM固件,就得改回来。我建议用ELRS配置器或者遥控器上的ELRS Lua脚本进接收机设置,确认输出协议是CRSF。

另外,ELRS接收机的固件版本要和发射端匹配。ELRS 3.x和2.x在协议细节上有差异,混用可能导致遥测数据不全。我一般把高频头和接收机都刷到同一个大版本的最新稳定版,省得折腾。

3.2 ArduPilot串口参数配置详解

假设你把CRSF接收机接在飞控的SERIAL2上(也就是TELEM2口),那么需要设置:

  • SERIAL2_PROTOCOL = 23(RCIN,即遥控输入)
  • SERIAL2_BAUD = 420(对应420000波特率,如果接收机是115200就填115)

这里有个容易混淆的点:ArduPilot里RCIN协议编号是23,但有些老版本固件里CRSF对应的编号可能不同。我用的4.3以上版本都是23。设置完这两个参数后,重启飞控,在Mission Planner或QGroundControl的遥控器校准页面应该能看到通道条随摇杆动作。

如果通道条不动,先检查接线,再检查波特率,最后检查接收机是否真的在输出CRSF。可以用飞控的日志或者串口监视工具看有没有数据进来。

3.3 遥控器端EdgeTX的CRSF配置

遥控器这边,EdgeTX系统需要设置外部高频头为CRSF协议。进模型设置,找到External RF,协议选CRSF,波特率一般选420000或自动。然后绑定接收机,绑定成功后遥控器上应该能看到ELRS的Lua脚本入口,进去能看到接收机的信号质量。

这里有个实操心得:EdgeTX的CRSF波特率设置要和ELRS高频头匹配。有些高频头固件默认400000,有些是420000,设错了绑定都绑不上。我一般先用自动,绑不上再手动试420000。

通道映射也要注意。ArduPilot默认的通道顺序是AETR(副翼、升降、油门、方向),但EdgeTX默认可能是TAER或其他。在遥控器的通道映射里改成和飞控一致,或者在ArduPilot里用RCMAP参数重新映射。我习惯在遥控器端改,这样飞控端保持默认,换遥控器时不用重新配飞控。

3.4 遥测数据回传的协议打通

遥测回传是这套方案的精髓。CRSF协议回传的数据包括:GPS坐标、高度、速度、电池电压、电流、姿态角、链路质量LQ、RSSI、SNR等。这些数据要显示在遥控器上,需要EdgeTX的遥测页面配置;要显示在地面站上,需要飞控通过另一个串口把MAVLink数据传给数传模块。

这里有个关键点:CRSF遥测和MAVLink遥测是两条独立的路。CRSF遥测走接收机链路回遥控器,MAVLink遥测走数传电台回地面站。两者互不干扰,但都需要配置。很多人以为配了CRSF遥控,地面站就自动有数据了,其实不是,地面站数据还得靠数传。

遥控器上显示CRSF遥测,需要在EdgeTX的遥测页面添加传感器。ELRS接收机会自动上报一批传感器,你只需要在遥控器上发现新传感器,然后添加到显示页面。我一般把LQ、RSSI、电池电压、GPS速度放在首页,飞的时候一眼能看到关键信息。

4. 实操过程与核心环节实现

4.1 硬件连接与上电检查

先把接收机接到飞控上。以Pixhawk 6C为例,SERIAL2对应的物理接口是TELEM2,接线如下:

接收机引脚飞控TELEM2引脚说明
5V5V供电
GNDGND共地
TXRX接收机发,飞控收
RXTX飞控发,接收机收

接好后先不要装桨,上电检查。飞控正常启动后,接收机指示灯应该常亮或慢闪,表示已绑定。如果接收机快闪,说明没绑定,需要重新绑定。

上电后进Mission Planner,连接飞控,进配置调试里的遥控器校准。如果通道条不动,先别急着改参数,用万用表量一下接收机TX脚有没有电压波动,或者用USB转串口工具直接接接收机TX和GND,用串口助手看有没有数据。这一步能快速定位是接收机没输出还是飞控没接收。

4.2 飞控参数逐项配置与验证

确认硬件没问题后,开始配参数。我按实际配置顺序列一下:

  1. 连接Mission Planner,进配置调试,全部参数表
  2. 搜索SERIAL2_PROTOCOL,设为23
  3. 搜索SERIAL2_BAUD,设为420(如果接收机是115200就设115)
  4. 搜索RC_PROTOCOLS,确认包含CRSF(一般默认全选,不用改)
  5. 写入参数,重启飞控
  6. 重新连接,进遥控器校准,看通道条

如果通道条正常,说明遥控链路通了。这时候可以校准遥控器,把每个通道的行程拉满,保存。

接下来配失控保护。ArduPilot的失控保护用FS_THR_ENABLE和FS_THR_VALUE。CRSF协议下,接收机会在失去信号时把油门通道降到预设值,飞控检测到后触发失控保护。我一般设FS_THR_ENABLE=1(启用),FS_THR_VALUE=975(略低于最低油门)。测试方法:关掉遥控器,看飞控是否进入失控保护模式(地面站会显示)。

4.3 遥控器遥测页面配置实操

遥控器这边,以EdgeTX 2.8为例:

  1. 进模型设置,确认External RF协议是CRSF
  2. 进遥测页面,点发现新传感器
  3. 等待几秒,应该能看到一批传感器,比如1RSS、2RSS、RQly、RSNR、RxBt、GSpd、GAlt等
  4. 把这些传感器添加到显示页面,设置单位和告警阈值

我一般这样布局:第一页显示LQ(RQly)、RSSI(1RSS)、电池电压(RxBt)、GPS速度(GSpd);第二页显示GPS高度、姿态角、飞行模式。LQ低于70%设语音告警,RSSI低于-100dBm设告警。这样飞远了能提前知道链路质量下降。

注意:ELRS的LQ是链路质量百分比,比RSSI更能反映实际链路状态。RSSI受发射功率和环境影响大,LQ更稳定。我主要看LQ,RSSI作参考。

4.4 地面站MAVLink遥测的独立配置

地面站数据走数传电台,和CRSF是两条路。数传电台一般接在SERIAL1或SERIAL3上,配置:

  • SERIAL1_PROTOCOL = 2(MAVLink2)
  • SERIAL1_BAUD = 57(57600,根据数传波特率调整)

配好后,地面站应该能收到飞控的MAVLink数据,显示姿态、GPS、电池等。如果地面站没数据,检查数传的TX/RX是否交叉、波特率是否匹配、协议是否为MAVLink2。

这里有个经验:CRSF遥测和MAVLink遥测的数据来源是同一个飞控,但传输路径不同。CRSF遥测更新率受ELRS链路速率限制,一般几Hz到几十Hz;MAVLink数传更新率取决于数传带宽,一般也是几Hz。两者数据可能有轻微时间差,正常现象。

4.5 参数计算与波特率选择依据

为什么CRSF常用420000波特率?这是ELRS社区约定的标准,420000能提供足够的带宽传输16通道控制加遥测数据,同时保持低延迟。115200也能用,但通道数多或遥测数据量大时可能不够。

ArduPilot的SERIALx_BAUD参数编号对应关系:

编号波特率
99600
1919200
3838400
5757600
115115200
230230400
420420000
921921600

填420就是420000。这个编号是ArduPilot自定义的,不是标准波特率数值,新手容易填错。

5. 常见问题与排查技巧实录

5.1 遥控通道无反应的排查顺序

这是最常见的问题。我按排查效率从高到低列:

  1. 检查TX/RX是否交叉:接收机TX接飞控RX,接收机RX接飞控TX。接反了完全没数据。
  2. 检查波特率:SERIAL2_BAUD是否和接收机CRSF波特率一致。420和115都试一下。
  3. 检查协议编号:SERIAL2_PROTOCOL是否为23。
  4. 检查接收机输出协议:用ELRS配置器确认接收机输出是CRSF而不是PWM或SBUS。
  5. 检查接收机是否绑定:接收机灯常亮才是绑定状态。
  6. 检查飞控串口是否被占用:有些飞控的SERIAL2默认给别的用途,确认没冲突。

我遇到过一次,所有参数都对,就是没反应,最后发现是接收机固件版本太老,不支持CRSF双向。刷了新固件就好了。

5.2 遥测数据不全或显示异常的解决

遥测数据不全,通常是这几个原因:

  • ELRS固件版本不匹配:高频头和接收机版本差异大,遥测传感器列表可能不全。统一刷到同版本。
  • 遥控器遥测页面没发现新传感器:删掉旧传感器,重新发现。
  • 传感器单位不对:EdgeTX里手动改单位,比如速度从m/s改成km/h。
  • 数据更新率太低:ELRS链路速率设太低,进ELRS配置调高遥测比率。

我实测下来,ELRS 3.x配EdgeTX 2.8,遥测传感器基本都能正常发现。如果某个传感器一直不出来,先确认飞控有没有那个数据源,比如没接GPS就没有GPS传感器。

5.3 失控保护不触发的排查

失控保护不触发,先确认FS_THR_ENABLE设了1。然后测试:关遥控器,看地面站是否显示失控保护。如果不触发,可能是接收机在失去信号时没有把油门通道降到FS_THR_VALUE以下。进接收机配置,确认失控保护行为是“No Pulses”或“Set Position”,并设置正确的油门值。

CRSF协议下,接收机的失控保护由接收机自己处理,不是飞控。所以接收机端的失控保护设置很关键。我一般设成“No Pulses”,飞控检测到无脉冲后触发失控保护。

5.4 常见问题速查表

问题现象可能原因解决方法
遥控无反应TX/RX接反交叉接线
遥控无反应波特率不匹配试420和115
遥控无反应协议编号错SERIALx_PROTOCOL=23
遥测不全固件版本不匹配统一ELRS版本
遥测不全传感器未发现遥控器重新发现
失控保护不触发接收机失控设置错设No Pulses
地面站无数据数传未配置配MAVLink2和波特率
链路质量差发射功率低调高ELRS功率

5.5 独家避坑经验分享

第一个坑:不要同时用CRSF和SBUS。有些飞控支持多协议输入,但CRSF和SBUS不能混用同一个串口。我试过把CRSF接收机和SBUS接收机接不同串口,结果飞控只认一个,另一个完全忽略。选一个用就行。

第二个坑:ELRS高频头固件和接收机固件要匹配。我有次高频头刷了3.0,接收机还是2.0,绑定能绑上,但遥测数据缺了一半。刷成同版本后全好了。

第三个坑:ArduPilot的串口编号和物理接口不一定对应。Pixhawk的SERIAL2是TELEM2,但有些飞控的SERIAL编号和丝印不一样。查飞控说明书确认。

第四个坑:遥控器通道映射和飞控不一致。EdgeTX默认TAER,ArduPilot默认AETR,不改的话油门和方向是反的。在遥控器端改通道映射,或者在飞控端用RCMAP改。

第五个坑:ELRS的遥测比率设太高会导致控制延迟增加。遥测比率和控制速率共享链路带宽,遥测占多了控制就慢。我一般设遥测比率1:64或1:128,控制优先。

6. 进阶玩法与链路优化建议

6.1 ELRS链路参数调优

ELRS的链路参数包括包速率、遥测比率、发射功率。包速率常见有50Hz、100Hz、150Hz、250Hz。远航一般用50Hz或100Hz,牺牲一点响应速度换更远的距离和更好的穿透。穿越机用250Hz,响应快但距离近。

遥测比率我前面说了,1:64或1:128比较平衡。发射功率根据飞行距离调,近距离100mW够用,远航可以到500mW或1W,但要注意散热和功耗。

我实测下来,100Hz包速率加1:64遥测比率,配500mW功率,固定翼飞个几公里链路质量还能保持在70%以上。再远就得降包速率或加功率。

6.2 ArduPilot日志分析与链路质量评估

ArduPilot的日志里会记录RC输入和链路质量数据。飞完后把日志下载下来,用Mission Planner的日志分析工具看RCIN和RSSI数据。如果发现某个时段RC输入有跳变或丢失,说明链路在那个位置有问题,下次飞的时候注意避开或调整天线。

日志里还能看飞控的失控保护触发记录,验证失控保护是否正常工作。我一般新机首飞后都会看日志,确认链路和保护逻辑没问题。

6.3 天线布局与安装要点

ELRS接收机的天线布局对链路质量影响很大。固定翼一般把接收机天线呈90度垂直摆放,避免和碳纤维、电池、电机线平行。天线远离飞控和数传,减少干扰。

我试过把接收机天线贴在机身侧面,结果飞远了链路质量掉得厉害。后来改成一根垂直一根水平,呈L形,链路质量明显改善。天线不要剪短或改装,原厂长度是调好的。

6.4 多机切换与模型配置管理

EdgeTX支持多模型配置,每架飞机的通道映射、遥测页面、ELRS绑定都可以独立保存。我一般给每架飞机建一个模型,绑定对应的接收机。切换飞机时直接切模型,不用重新配置。

ELRS的绑定信息存在高频头和接收机里,换模型不影响绑定。但如果换了高频头,需要重新绑定。我习惯把绑定短语设成固定值,这样换高频头后不用重新绑定接收机。

6.5 固件升级与版本管理

ELRS和ArduPilot都在持续更新,固件升级是常态。我的经验是:不要追最新版,用稳定版。升级前备份参数和模型配置。ELRS升级用配置器或WiFi,ArduPilot升级用Mission Planner。

升级后一定要重新检查关键参数,特别是串口协议和波特率,有时候升级会重置部分参数。我有次升级ArduPilot后SERIAL2_PROTOCOL被重置成默认值,遥控直接没反应,查了半天才发现。

这套ELRS加ArduPilot的方案,我从最初的一头雾水到现在能闭着眼配,中间踩的坑基本都写在这了。核心就一句话:协议理解到位,串口配置对号,剩下的就是耐心调试。遥测显示这块,先把CRSF链路打通,再配MAVLink数传,两条路各走各的,别混在一起想。最后分享一个小技巧:每次改完参数,先在地面测试所有功能,包括遥控、遥测、失控保护,确认没问题再飞。地面多花十分钟,天上少丢一架机。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 8:58:05

ABAP新语法实战:S/4迁移中的代码精简与常见场景落地

最近在搞S/4迁移项目,团队里好几个同事跑到我工位上看我写的代码,第一反应都是“你这写的什么东西?DATA呢?LOOP呢?怎么几行就搞定了?”因为之前他们看的都是清一色的老ABAP:先声明,再…

作者头像 李华
网站建设 2026/9/28 8:57:12

深度学习音乐推荐系统实战:从协同过滤到多模态融合

简介:面向计算机与软件相关专业学生的毕业设计及课程作业项目,主题为基于深度学习的音乐推荐系统实现。系统围绕用户历史行为与音乐元数据,构建深度学习模型生成个性化歌曲推荐,可用于课题研究、答辩展示或推荐系统入门实践。 压…

作者头像 李华
网站建设 2026/9/28 8:57:10

第七周复盘:长期计划坚持不下时,我用系统代替热血

今天是第七周第一天。早上七点四十,我坐在书桌前,按自己定的100天计划的规则,这个时间段应该用来阅读。可我当时脑子里冒出来的话是:今天能不能只做一半,剩下的明天补回来。第七周第一天,就这么在一种并不励…

作者头像 李华
网站建设 2026/9/28 8:56:53

基于OpenClaw与AI大模型的冲压模具设计智能化实践

1. 冲压模具设计为什么要引入AI大模型1.1 传统设计流程的真实瓶颈干了十几年汽车冲压模具设计,我最大的感受就是:这个行业的设计效率瓶颈,从来不在“画图”本身,而在“决策前的信息准备”和“设计中的反复验证”这两头。一套中等复…

作者头像 李华
网站建设 2026/9/28 8:55:58

JEV代码模型实战:从密钥申请到Codex接入与调优

最近好几个开发者群里都在反复出现“JEV”这个词,GitHub 上相关仓库的 star 涨得也快。顺着热搜词往下翻,大家问的问题倒是很一致:JEV 是什么、官网在哪、密钥怎么申请、能不能在 Codex 里用、模型到底开源没开源。说实话,一个模型…

作者头像 李华
网站建设 2026/9/28 8:54:42

Python OpenCV车牌识别工程解读:从SVM到HyperLPR的完整实践

简介:面向计算机视觉与图像处理开发者的车牌识别实战资源,基于OpenCV与百度API构建,覆盖静态图片、网络图片、实时截图与摄像头视频流等多种识别场景,适合需要快速实现车牌检测、定位、对比与检索功能的算法学习者、毕设学生及工程…

作者头像 李华