ExpressLRS开源之接收机固件编译烧录步骤
- 1. 源由
- 2. 编译步骤
- 2.1 推荐源代码指定方案
- 2.2 方法一:ELRS Configurator
- 步骤一:下载ELRS Configurator工具
- 步骤二:安装ELRS Configurator工具
- 步骤三:使用ELRS Configurator工具进行配置
- 步骤四:设置ELRS接收机为烧录模式
- 步骤五:点击"Flash"烧录固件
- 2.3 方法二:VSCode IDE
- 步骤一:安装vscode
- 步骤二:安装PlatformIO插件
- 步骤三:选择ELRS工程
- 步骤四:修改工程配置
- 步骤五:选择编译目标
- 步骤六:编译&烧录固件
- 3. ELRS基本调试验证
- 3.1 ID,Antenna,RSSI,LQ,SNR,PWR,FHSS,TimingOffset
- 3.2 IRQ_CNT,RSSI_AVE,SNR_AVE,SNV_MAX,TELEM_CNT,FAIL_CNT
- 3.3 ELRS Configurator配置界面
- 3.4 VSCode配置界面
- 4. 固件烧录
- 4.1 命令行
- 4.2 GUI工具
- 5. 参考资料
1. 源由
ExpressLRS是航模上目前比较流行的开源发射机和接收机开源代码之一。
其目的旨在提供最好的完全开放、高刷新率的无线电控制链路,同时以低延迟保持该速率下的最大可实现范围,在900MHz和2.4GHz频率下对硬件提供大量支持。
这个也是笔者一直使用的RC控制链路。从无人机的控制电传,图传以外,RC链路控制是非常重要的链路。
不过这里有一个非常痛苦的事情,就是编译。为什么???? 耗时
因此,本文主要的出发点是确保操作步骤的正确性,并针对常见问题进行必要且快速的解决方法。
注:如果想要更加方便且快速的编译,就需要了解更多关于VSCode&ELRS Configurator背后整合的工具面命令,将一键操作进行分解。如果有时间,后续我们会进一步的分解,以便这个耗时的编译烧录能最简化,也许1~2分钟就可以解决问题。
2. 编译步骤
在所有编译之前,首先进行源代码下载:
A) Git拉取Github开源代码
$ git clone git@github.com:ExpressLRS/ExpressLRS.git
$ git checkout 3.x.x-maintenance //根据需要进行分支切换
B) 稳定发布版本获取压缩包
$ wget https://github.com/ExpressLRS/ExpressLRS/archive/refs/tags/3.3.0.zip
$ unzip ExpressLRS-3.3.0.zip //根据需要下载对应的版本,并进行解压
C) 通过ELRS Configurator下载
注:该方式并不推荐,但这确实是一个OneButton的解决方案。
2.1 推荐源代码指定方案
因为国内网络的不稳定性,采用本地代码进行编译是一个比较好的选择,且大多数开发人员也经常使用的是本地代码进行开发,开发完成后提交相应修改。
因此,我们推荐采用"LOCAL"的方式进行源代码选择,而非上面C)选项中的方式。
2.2 方法一:ELRS Configurator
步骤一:下载ELRS Configurator工具
通过ELRS Configurator配置工具发布页面寻找合适软件版本,进行下载。
目前,最新的版本号是1.6.0。
步骤二:安装ELRS Configurator工具
ELRS Configurator工具支持较多系统(比如:MacOS/Linux/Windows),且如果Github上无二进制,用户可以根据需求直接源代码进行交叉编译(不再讨论范围之内)。
具体安装方式与常规软件类似,Windows版本请根据安装提示完成安装。
步骤三:使用ELRS Configurator工具进行配置
- 设备配置:目前采用了一块类似BETAFPV 900的接收机硬件(硬件管脚定义)
2. 烧录方式:采用串口直接烧录
3. 设备选项:通常使用"Standard mode" + “FCC_915”
4. 固件烧录方式
步骤四:设置ELRS接收机为烧录模式
- 首先,将ELRS接收机的Rx/Tx/GND/VCC与USB串口板连接
ELRS-Rx <–> USB-SerialAdapter-Tx
ELRS-Tx <–> USB-SerialAdapter-Rx
ELRS-VCC <–> USB-SerialAdapter-5V
ELRS-GND <–> USB-SerialAdapter-GND
- 然后,按住"Firmware Upgrade Button"按键
- 最后,同时将USB插入电脑,上电时接收机将会自动进入烧录模式
步骤五:点击"Flash"烧录固件
这里的“Flash”是一键式编译+烧录,从设计的角度来说是非常方便的,但是从实际情况来看会出现大量的网络问题导致编译失败。
注:如果出现编译失败,请删除"src/.pio"目录,重新步骤五。
2.3 方法二:VSCode IDE
步骤一:安装vscode
在VisualStudioCode上下载最新版本,安装vscode IDE开发环境。
注:Windows安装软件比较简单和直观,next by next就好了。
步骤二:安装PlatformIO插件
在vscode IDE环境中点击"extension",搜索platformio,安装"PlatformIO IDE"插件,最后将会在左侧ICON上显示PlatformIO的图标,表示安装成功。
注:因为ExpressLRS是使用Arduino框架用C++编写的。
步骤三:选择ELRS工程
在使用Visual Studio Code时,在选项卡中看到PlatformIO主页。单击“打开项目”按钮。导航到ExpressLRS repo目录。导航到src文件夹(即./ExpressLRS/src/)。最后,按下“打开”按钮。
步骤四:修改工程配置
编辑文件/src/user_defines.txt来定义用户特定的变量。
步骤五:选择编译目标
在左侧工具栏中,单击PlatformIO图标,该图标将显示任务列表。选择“编译目标”
步骤六:编译&烧录固件
常用的几个选项是:Build/Upload/Clean/Full Clean
注:如果上述方法无法解决编译时出现的错误,很有可能还是网络问题导致组件下载出现异常,请删除"src/.pio"目录,重新步骤六。
3. ELRS基本调试验证
ELRS基本调试验证,主要侧重硬件方面的信号数据指标。通过固件配置参数的调整获取相关硬件性能的参数。
基础参数如下:
-DMY_BINDING_PHRASE=“”
-DAUTO_WIFI_ON_INTERVAL=“60”
-DLOCK_ON_FIRST_CONNECTION
-DRegulatory_Domain_FCC_915 //请根据国家地区,以及设备进行选择合适的规则
3.1 ID,Antenna,RSSI,LQ,SNR,PWR,FHSS,TimingOffset
在基础参数前提下,增加以下配置参数:
-DDEBUG_LOG
-DDEBUG_CRSF_NO_OUTPUT
-DDEBUG_RCVR_LINKSTATS
通过串口可得到如下类似串口打印调试信息:
3.2 IRQ_CNT,RSSI_AVE,SNR_AVE,SNV_MAX,TELEM_CNT,FAIL_CNT
在基础参数前提下,增加以下配置参数:
-DDEBUG_LOG
-DDEBUG_CRSF_NO_OUTPUT
-DDEBUG_RCVR_SIGNAL_STATS
通过串口可得到如下类似串口打印调试信息:
3.3 ELRS Configurator配置界面
3.4 VSCode配置界面
4. 固件烧录
ELRS采用了乐鑫的芯片,因此还可以命令行输入,详见:ExpressLRS_Manufacturer_Design_Guidelines_v1.7.pdf
4.1 命令行
4.2 GUI工具
5. 参考资料
【1】Advanced Toolchain Setup for ELRS
【2】ExpressLRS-Configurator