ExpressLRS开源之接收机固件编译烧录步骤

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 RX Scoreboard
    • 3.4 ELRS Configurator配置界面
    • 3.5 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工具进行配置

  1. 设备配置:目前采用了一块类似BETAFPV 900的接收机硬件(硬件管脚定义)

在这里插入图片描述
2. 烧录方式:采用串口直接烧录

在这里插入图片描述
3. 设备选项:通常使用"Standard mode" + “FCC_915”

在这里插入图片描述4. 固件烧录方式

在这里插入图片描述

步骤四:设置ELRS接收机为烧录模式

  1. 首先,将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

  1. 然后,按住"Firmware Upgrade Button"按键
  2. 最后,同时将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 RX Scoreboard

-DPRINT_RX_SCOREBOARD

在这里插入图片描述
在这里插入图片描述

3.4 ELRS Configurator配置界面

在这里插入图片描述
在这里插入图片描述

3.5 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/100565.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3D点云处理:获取最高层范围内的点(附源码)

文章目录 0. 测试效果1. 基本内容2. 代码实现文章目录:3D视觉个人学习目录微信: dhlddxB站: Non-Stop_目标:仅获取最高层范围内的点云用于后续处理0. 测试效果 红色为提取的最高层范围内的点云 1. 基本内容 要获取点云中特定高度范围内的点云,可以使用高度条件过滤的原理。…

Docker技术--Docker简介和架构

1.Docker简介 (1).引入 我们之前学习了EXSI&#xff0c;对于虚拟化技术有所了解&#xff0c;但是我们发现类似于EXSI这样比较传统的虚拟化技术是存在着一定的缺陷:所占用的资源比较多&#xff0c;简单的说&#xff0c;就是你需要给每一个用户提供一个操作平台&#xff0c;这一个…

【数据结构】 二叉树面试题讲解->贰

文章目录 &#x1f30f;引言&#x1f384;[二叉树遍历](https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef?tpId60&&tqId29483&rp1&ru/activity/oj&qru/ta/tsing-kaoyan/question-ranking)&#x1f431;‍&#x1f464;题目描述&#…

【Flutter】下载安装Flutter并使用学习dart语言

前言 安装flutter, 并使用flutter内置的dartSDK学习使用dart语言。 编辑器&#xff1a; Android Studio fluuter 版本 : flutter_windows_3.13.1 内置dartSDK : 3.1.0 dart路径路径&#xff1a; flutter安装路径\bin\cache\dart-sdk 安装Flutter 下载安装包 flutter下载地址…

智慧工地源码 智慧大屏、手机APP、SaaS模式

一、智慧工地可以通过安全八要素来提升安全保障&#xff0c;具体措施包括&#xff1a; 1.安全管理制度&#xff1a;建立科学完善的安全管理制度&#xff0c;包括安全标准规范、安全生产手册等&#xff0c;明确各项安全管理职责和要求。 2.安全培训教育&#xff1a;对工地人…

MySQL数据库——多表查询(3)-自连接、联合查询、子查询

目录 自连接 查询语法 自连接演示 联合查询 查询语法 子查询 介绍 标量子查询 列子查询 行子查询 表子查询 自连接 通过前面的学习&#xff0c;我们对于连接已经有了一定的理解。而自连接&#xff0c;通俗地去理解就是自己连接自己&#xff0c;即一张表查询多次。…

Qt/C++编写视频监控系统81-Onvif报警抓图和录像并回放

一、前言 视频监控系统中的图文警情模块&#xff0c;是通过Onvif协议的事件订阅拿到的&#xff0c;通过事件订阅后&#xff0c;设备的各种报警事件比如入侵报警/遮挡报警/越界报警/开关量报警等&#xff0c;触发后都会主动往订阅者发送&#xff0c;而且一般都是会发送两次&…

【C++】C++11新特性(下)

上篇文章&#xff08;C11的新特性&#xff08;上&#xff09;&#xff09;我们讲述了C11中的部分重要特性。本篇接着上篇文章进行讲解。本篇文章主要进行讲解&#xff1a;完美转发、新类的功能、可变参数模板、lambda 表达式、包装器。希望本篇文章会对你有所帮助。 文章目录 一…

Git和Github的基本用法

目录 背景 下载安装 安装 git for windows 安装 tortoise git 使用 Github 创建项目 注册账号 创建项目 下载项目到本地 Git 操作的三板斧 放入代码 三板斧第一招: git add 三板斧第二招: git commit 三板斧第三招: git push 小结 &#x1f388;个人主页&#xf…

多源最短路径算法:Floyd-Warshall算法分析

文章目录 图的邻接矩阵 一.Floyd-Warshall算法思想(基于动态规划)二.Floyd-Warshall算法接口笔记附录:单源最短路径--Bellman-Ford算法1.Bellman-Ford算法接口核心部分2.Bellman-Ford算法接口 图的邻接矩阵 namespace Graph_Structure {//Vertex是代表顶点的数据类型,Weight是…

开发智能应用的新范式:大数据、AI和云原生如何构建智能软件

文章目录 1.利用大数据实现智能洞察2. 集成人工智能和机器学习3. 云原生架构的弹性和灵活性4. 实现实时处理和响应5. 数据安全和隐私保护6. 可解释性和透明性7. 持续创新和迭代8. 数据伦理和合规性 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &a…

Kafka3.0.0版本——手动调整分区副本示例

目录 一、服务器信息二、启动zookeeper和kafka集群2.1、先启动zookeeper集群2.2、再启动kafka集群 三、手动调整分区副本3.1、手动调整分区副本的前提条件3.2、手动调整分区副本的示例需求3.3、手动调整分区副本的示例 一、服务器信息 四台服务器 原始服务器名称原始服务器ip节…

【位运算】leetcode371:两整数之和

一.题目描述 两整数之和 二.思路分析 题目要求我们实现两整数相加&#xff0c;但是不能使用加号&#xff0c;应该立马想到是用位运算来解决问题。之前说过&#xff0c;异或就是“无进位相加”&#xff0c;故本题可以先将两数异或&#xff0c;然后想办法让得到的结果进位即可。…

前几天写的博客被选中进入【CSDN月度精选】榜单

小收获&#xff0c;记录一下&#xff0c;哈哈 这个貌似是CSDN给的排名和得分&#xff1a;

Linux 常见命令操作

一、目录管理 1.1 列出目录 ls # ls 命令 # -a 参数&#xff0c;查看全部的文件&#xff0c;包括隐藏的文件 # -l 参数&#xff0c;列出所有的文件&#xff0c;包括文件的属性和权限&#xff0c;不显示隐藏文件 [rootlocalhost /]# ls bin boot dev etc home lib lib64…

Java 包装类和Arrays类(详细解释)

目录 包装类 作用介绍 包装类的特有功能 Arrays类 Arrays.fill() Arrays.toString() Arrays.sort() 升序排序 降序排序 Arrays.equals() Arrays.copyOf() Arrays.binarySearch() 包装类 作用介绍 包装类其实就是8种基本数据类型对应的引用类型。 基本数据类型引用…

ToBeWritten之VSOC安全运营

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

D357周赛复盘:模拟双端队列反转⭐⭐+贪心

文章目录 2810.故障键盘1.直接用reverse解决2.双端队列 2811.判断能否拆分数组&#xff08;比较巧妙的贪心&#xff09;思路完整版 2812.找出最安全路径2810.故障键盘1.直接用reverse解决2.双端队列 2811.判断能否拆分数组&#xff08;比较巧妙的贪心&#xff09;思路完整版 28…

SystemVerilog interface详细介绍

1. Interface概念 System Verilog中引入了接口定义&#xff0c;接口与module 等价的定义&#xff0c;是要在其他的接口、module中直接定义&#xff0c;不能写在块语句中&#xff0c;跟class是不同的。接口是将一组线捆绑起来&#xff0c;可以将接口传递给module。 2. 接口的优…

IA-SEG项目中DIAL-Filters(IAPM模块+LGF模块)使用解读

IA-SEG项目源自论文Improving Nighttime Driving-Scene Segmentation via Dual Image-adaptive Learnable Filters&#xff0c;其核心就是在原有的语义分割模型上添加了DIAL-Filters。而&#xff0c;DIAL-Filters由两部分组成&#xff0c;包括一个图像自适应处理模块&#xff0…