ExpressLRS开源之RC链路性能测试
ExpressLRS开源之RC链路性能测试
- 1. 源由
- 2. 分析
- 3. 测试方案
- 4. 测试设计
- 4.1 校准测试
- 4.2 实验室测试
- 4.3 拉距测试
- 4.4 遮挡测试
- 5. 总结
- 6. 参考资料
1. 源由
基于ExpressLRS开源基本调试验证方法,对RC链路性能进行简单的性能测试。
修改设计总能够满足合理的需求,往往我们需要再不变更设计的基础上,进行相关验证。此时也是考研设计鲁棒性的一个维度。
开源代码有的时候往往比所谓专业的企业团队给出更好的设计就在于此。这里将借助开源代码的基本调试验证方法进行简单的性能测试。
注:当然更为专业的测试可能就需要涉及到代码的改动。不过作为开源代码,已经非常不错,值得国内企业的研发团队学习。
2. 分析
鉴于期望对RC链路性能测试,首先需要明确一些基础的概念和定义。
透过ExpressLRS开源之接收机固件编译烧录步骤中的基本调试验证方法
ID,Antenna,RSSI,LQ,SNR,PWR,FHSS,TimingOffset
IRQ_CNT,RSSI_AVE,SNR_AVE,SNV_MAX,TELEM_CNT,FAIL_CNT
可以获取以上一手测试数据。通过数据,我们对于RC链路性能做出如下简单解释:
- 固定发射功率前提下
- 接收信号功率的大小作为RC链路性能表征
- 接收型号信噪比作为RC链路性能表征
- 接收LQ指标作为RC链路性能表征
- 接收FAIL_CNT作为RC链路性能表征
为此,后续对上述表征量进行测量,以便验证RC链路性能。
3. 测试方案
基于测试分析,不难得出如下关系数据进行相关性能解释:
- 发射功率是否恒定
PWR v.s. dBm [RF module]
- 接收信号强度校准
RSSI/RSSI_AVE v.s. dBm [test fixture]
- 初步RF性能指标分析
LQ v.s. dBm [RF module]
SNR v.s. dBm [RF module]
- 高阶稳定性指标分析
SNR_AVE/SNR_MAX v.s. dBm [RF module]
FAIL_CNT v.s. dBm [RF module]
4. 测试设计
为了得到上述方案的数据图表,以及实际使用环境对性能优劣的对比,需要考虑以下几个场景。
测试设备如下:
- 飞控
- 眼镜/图传
- RC遥控器
- Tx发射机
- 动态信号衰减器(常规90dBm衰减器)
- 固定信号衰减器
- 频谱仪(信号功率计)
- USB串口板
- 测试电脑
- 配套线缆(飞控USB线/信号转接线等)
- ELRS接收机发射功率最小值为50mW,相当于10xlg(50mW/1mW) = 17dBm。
- SX1280接收灵敏度-132dBm;SX1276接收灵敏度-148dBm。
- 假设:一个接口3dB损耗,IPX1到PA电路算3dB损耗。
发射到接收信号范围:17dBm - (- 148dBm) = 165dBm
衰减器可配置范围:(90dB + 3dB) + (30dB + 3dB) x 2 + 10dB + 3dB + 3dB = 175dB
注:以上是大概的估算,实际根据实验测试情况,动态调整衰减线路上的衰减器配置。
4.1 校准测试
目的:
- 接收信号强度校准
RSSI/RSSI_AVE v.s. dBm [test fixture]
- 发射功率是否恒定
PWR v.s. dBm [RF module]
注意:
- 上述数据图表需要通过终端分别接信号功率计和Rx接收机来测试获取数据。
- 为保证数据可比性,请务必测试时,馈线,接头等信号链路上的测试设备顺序一致。
- 记录并标记本次测试信号链路信号衰减器,馈线,接头的顺序,以便后续对比测试。
4.2 实验室测试
目的:
- 初步RF性能指标分析
LQ v.s. dBm [RF module]
SNR v.s. dBm [RF module]
- 高阶稳定性指标分析
SNR_AVE/SNR_MAX v.s. dBm [RF module]
FAIL_CNT v.s. dBm [RF module]
注意:保持与校准时一致的信号衰减链路顺序,以及链路上的硬件编号。
4.3 拉距测试
鉴于上述测试是在链路无干扰,隔离情况下进行的测试,理论上应该性能会更好。而实际情况往往比较复杂,受到发射/接收天线性能,各种外界电磁波干扰,大功率设备启动,大面积遮挡屏蔽,WiFi信号,ISM设备的影响等等。
可以根据实际情况进行可视拉距测试(常用标准T型天线):
- 使用一个多旋翼(具备稳定的PosHold模式) + ELRS接收机 + 串口日志记录器
- 进行50mW/17dBm拉距测试
- 在其他所有条件不变的前提下,更高的发射功率肯定是越远。鉴于实验条件,不一定能做此类长距离测试。
目的:
- 拉距性能指标分析
dBm v.s. meters
LQ v.s. meters
SNR v.s. meters
SNR_AVE/SNR_MAX v.s. meters
FAIL_CNT v.s. meters
- 初步RF性能指标分析
LQ v.s. dBm [RF module]
SNR v.s. dBm [RF module]
- 高阶稳定性指标分析
SNR_AVE/SNR_MAX v.s. dBm [RF module]
FAIL_CNT v.s. dBm [RF module]
注:理论Estimating Wireless Range估算,LoRaWAN-Range-calculator。
4.4 遮挡测试
实际穿越机经常在障碍物之间穿行,而遮挡对于高频信号的衰减是非常显著的。因此,可以采用类似拉距测试的方法进行测试。
目的:
- 拉距性能指标分析
dBm v.s. meters(postion)
LQ v.s. meters(postion)
SNR v.s. meters(postion)
SNR_AVE/SNR_MAX v.s. meters(postion)
FAIL_CNT v.s. meters(postion)
- 初步RF性能指标分析
LQ v.s. dBm [RF module]
SNR v.s. dBm [RF module]
- 高阶稳定性指标分析
SNR_AVE/SNR_MAX v.s. dBm [RF module]
FAIL_CNT v.s. dBm [RF module]
注意:该测试需要保留飞行轨迹,以便进行距离的位置标记。
5. 总结
基于上述测试场景,日志将会提供大量的RC链路相关的RF性能数据。
当上述数据进行横向对比时,可以分析出硬件模块设计方面的优劣:
比如:
- RF性能
- 抗干扰性能
- 天线性能
- 天线部署位置合理性
- 等等
通常来说:
- 天线增益提高6dBi,距离将增加一倍
- 发射功率增加4倍,距离也将增加一倍
注:目前是一个初步的测试计划或者方案,后续如果能够拿到更多的数据,我们将结合数据给大家展示下相关内容,以便更加直观的了解。
6. 参考资料
【1】ExpressLRS开源之接收机固件编译烧录步骤
【2】Estimating Wireless Range
【3】LoRaWAN-Range-calculator
相关文章:

ExpressLRS开源之RC链路性能测试
ExpressLRS开源之RC链路性能测试 1. 源由2. 分析3. 测试方案4. 测试设计4.1 校准测试4.2 实验室测试4.3 拉距测试4.4 遮挡测试 5. 总结6. 参考资料 1. 源由 基于ExpressLRS开源基本调试验证方法,对RC链路性能进行简单的性能测试。 修改设计总能够满足合理的需求&a…...

el-form表单el-form-item prop一次验证两个值
1.表单添加两个框,prop写上 <el-form :model"ruleForm" :rules"rules" ref"ruleForm" label-width"100px" > <el-form-item type"type" label"时间" prop"dateSectOne"><di…...

HTTP 代理原理及 Python 简单实现
HTTP 代理是一种网络代理服务器(Proxy Server),它能够作为客户端与 HTTP 服务器之间的中介,它的工作原理是: 当客户端向 HTTP 代理发送 HTTP 请求时,HTTP 代理会收到请求。 HTTP 代理会将请求转发给目标 HTTP 服务器。 目标 HTTP 服务器处理请求并生成响应。 HTTP 代理将…...

数据结构--队列与循环队列
队列 队列是什么,先联想一下队,排队先来的人排前面先出,后来的人排后面后出;队列的性质也一样,先进队列的数据先出,后进队列的后出;就像图一的样子: 图1 如图1,1号元素是…...

八路参考文献:[八一新书]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑工业出版社,2022.
八路参考文献:[八一新书]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑工业出版社,2022....

版本控制 Git工具的使用
版本控制的概念: 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单来说就是用于管理多人协同开发…...

GNS3 在 Linux 上的安装指南
文章目录 GNS3 在 Linux 上的安装指南1. 基于 Ubuntu 的发行版安装 GNS32. 基于 Debian 的安装3. 基于 ArchLinux 的安装4. 从 Pypi 安装 GNS35. 启动 GNS3 服务端GNS3 在 Linux 上的安装指南 大家好,今天我们来聊聊如何在 Linux 上安装 GNS3。GNS3 是一个非常受欢迎的网络模…...

Mybatis中 list.size() = 1 但显示 All elements are null
一、Bug展示 二、原因分析 2.1.情形一:Mybatis的XML中返回类型映射错误 <select id"selectByDesc" parameterType"com.task.bean.OrderInfo"resultType"com.task.bean.OrderInfo">select MER_ID,SETTLE_DATE,ICE_NAME,ORDER_S…...

Soul的社交元宇宙之路,还有多远?
在元宇宙概念爆火的当下,以互联网为依托的虚拟社交逐步为用户承载起其空缺的精神交流与寄托,而在这其中,以“跟随灵魂找到你”为Slogan,主打年轻人社交元宇宙平台的APP--Soul则在这条赛道上凭借着独特的风格,逐步突出重…...

如何解决Memcached缓存击穿和雪崩问题
原文 Memcached是一种快速、高性能的分布式内存对象缓存系统,广泛应用于Web应用的缓存中。然而,Memcached也存在一些常见的问题,如缓存击穿和缓存雪崩。本文将介绍什么是缓存击穿和缓存雪崩,并提供一些解决这些问题的方法&#x…...

uniapp 开发之仿抖音,上下滑动切换视频、点击小爱心效果
效果图: 功能描述: 上下滑动视频,双击暂停,然后第一个视频再往上滑显示”已经滑到顶了“ 开始代码: 首先视频接口使用的公开的视频测试接口 开放API-2.0 官网展示 Swagger UI 接口文档 一…...

【C++设计模式】依赖倒转原则
2023年8月30日,周三上午 目录 概述含义举个简单的例子传统做法使用依赖倒转原则代码说明再举一个具体的例子以生活为例 概述 依赖倒转原则(Dependency Inversion Principle,DIP)是面向对象设计中的一个基本原则。 含义 高层模块不应该依赖低层模块,两者都应该依…...

浙江首例!金华银行基于完全国产自研数据库构建新一代核心系统
6 月 12 日,金华银行举行“星辉工程”核心项目群上线发布会,新一代核心系统部署在国产分布式数据库 OceanBase 上,实现系统的高可用、高性能、国产升级。据悉,这是浙江省首例基于完全国产自研数据库落地的银行核心系统。 金华银行…...

ASP.NET Core 中的 静态文件
Static Files Static Files 包括 HTML,CSS,图片,JavaScript,以及其他静态资源文件。 即网站本身的内容。 Static Files 服务 Static Files 保存在项目的 Web Root 目录,即 wwwroot 文件夹中。 而wwwroot目录是Conte…...

2023年天府杯——C 题:码头停靠问题
问题背景: 某个港口有多个不同类型的码头,可以停靠不同种类的船只。每 艘船只需要一定的时间来完成装卸货物等任务,并且每个码头有容量 限制和停靠时间限制。港口需要在保证收益的情况下,尽可能地提高 运营效率和降低成本。同…...

集丰照明|汽车美容店设计,装修色彩灯光搭配方法
正确处理好店面的空间设计。 店铺各个功能区设计要合理,衔接合理,这样既能提高员工的工作效率也能提高顾客的满意度。合理安排店铺的空间分配, 要给顾客一种舒适度,既不能让顾客感觉到过于拥挤,又不能浪费店铺的有限空…...

性能提升3-4倍!贝壳基于Flink + OceanBase的实时维表服务
作者介绍:肖赞,贝壳找房(北京)科技有限公司 OLAP 平台负责人,基础研发线大数据平台部架构师。 贝壳找房是中国最大的居住服务平台。作为居住产业数字化服务平台,贝壳致力于推进居住服务的产业数字化、智能…...

取数组中每个元素的最高位
1 题目 /*程序将一维数组a中N个元素的最高位取出,保存在一维数组b的对应位置。 程序运行结果为: a:82 756 71629 5 2034 b: 8 7 7 5 2 */ 2 思考 简单来说就是取一个数据的最高位。 一开始的笨方法没有办法判断数据的长度,后来…...

Docker一键部署Nacos
官方参考文档: https://nacos.io/zh-cn/docs/quick-start-docker.html 本人实践 一、创建数据库&数据表 使用sql脚本创建:https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql 二、新建文件夹并赋权…...

【数学建模】-- 模糊综合评价
模糊综合评价(Fuzzy Comprehensive Evaluation)是一种用于处理不确定性和模糊性信息的决策分析方法。它通常用于解决复杂的多指标决策问题,其中各指标之间可能存在交叉影响和模糊性的情况。模糊综合评价通过将不确定性和模糊性量化࿰…...

Java 数据库改了一个字段, 前端传值后端接收为null问题解决
前端传值后端为null的原因可能有很多种,我遇到一个问题是,数据库修改了一个字段,前端传值了,但是后台一直接收为null值, 原因排查: 1、字段没有匹配上,数据库字段和前端字段传值不一致 2、大…...

lnmp架构-mysql1
1.MySQL数据库编译 make完之后是这样的 mysql 初始化 所有这种默认不在系统环境中的路径里 就这样加 这样就可以直接调用 不用输入路径调用 2.初始化 重置密码 3.mysql主从复制 配置master 配置slave 当master 端中还没有插入数据时 在server2 上配slave 此时master 还没进…...

Threadlocal在项目中的应用
ThreadLocal为每一线程提供一份单独的存储空间,具有线程隔离的作用 PageHelper.startPage()方法使用ThreadLocal来保存分页参数,保证线程安全性。PageHelper通过集成MyBatis的拦截器机制来实现对SQL语句的拦截和修改 项目中使用了ThreadLocal保存每个线程…...

个性化定制你的AI助手,AI指令提示词专家
『个性化定制你的AI助手』围观不如下场!需要学习AI指令提升能力的,精准输出想要内容的,快来订阅 javastarboy『AI指令保姆级拆解』合集! ▶️你是否尚未挖掘到 AI 的潜力? ▶️你是否经常遇到“答非所问”的“人工智障…...

mongodb聚合排序的一个巨坑
现象: mongodb cpu动不动要100%,如下图 分析原因: 查看慢日志发现,很多条这样的查询,一直未执行行完成,占用大量的CPU [{$match: {"tags.taskId": "64dae0a9deb52d2f9a1bd71e",grnty: …...

无涯教程-分类算法 - 随机森林
随机森林是一种监督学习算法,可用于分类和回归,但是,它主要用于分类问题,众所周知,森林由树木组成,更多树木意味着更坚固的森林。同样,随机森林算法在数据样本上创建决策树,然后从每…...

c#常见的排序算法
在C#中,常见的排序算法包括以下几种: 1. 冒泡排序(Bubble Sort):比较相邻的元素,如果顺序不对就交换它们,重复多次直到排序完成。 2. 插入排序(Insertion Sort)…...

Redis 持久化和发布订阅
一、持久化 Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能! 1.1、RDB(Redis DataBase) 1.1.1 …...

k8s使用ECK(2.4)形式部署elasticsearch+kibana-http协议
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、准备elasticsearch-cluster.yaml二、部署并测试总结 前言 之前写了eck2.4部署eskibana,默认的话是https协议的,这里写一个使用http…...

[maven]关于pom文件中的<relativePath>标签
关于pom文件中的<relativePath>标签 为什么子工程要使用relativePath准确的找到父工程pom.xml.因为本质继承就是pom的继承。父工程pom文件被子工程复用了标签。(可以说只要我在父工程定义了标签,子工程就可以没有,因为他继承过来了&…...