如何将 LoRaWAN 用于比赛场景

news2024/9/28 19:14:56

如何将 LoRaWAN 用于比赛场景

关键词

LoRaWAN 实时上报 下行同步 不丢包 组播

应用场景

学生/运动员比赛,射击比武,同步采集等

摘要

为了将 LoRaWAN 应用于:比赛,比武,同步采集等场景,应对下行同步和实时上报的需求,设计了:组播,下行冗余,时分频分复用技术。

班级跳绳比赛

视频中的 LoRaWAN 跳绳,支持多人同时上传,这是 2021 年协作腾讯开发的智慧体育产品,应用到全国中小学生跳绳比赛。

LoRa 跳绳视频_锐麦版权

曾经踩过的“坑”

从 2021~2023 期间,行业内至少使用了 4 种无线通信技术研发比赛,均以失败告终,如下表所示。

通信技术失败原因
LoRa 点对点容量不足,无法适应多节点同时上报。
蓝牙 mesh距离太近,无法覆盖操场或体育馆。
NB-IoT下行延时大,农村和偏远地区没信号。
LoRa 私标小公司设计 bug 多,开发 server 代价大。

列需求

抽丝剥茧,比赛场景对无线通信技术有如下 3 点核心需求。

关键技术用途
下行同步裁判员按下【开始比赛】按钮,所有节点同时启动。
实时上报为良好的用户体验,每 3 秒节点数据上报到 App 。
组播每个比赛团队分配一个组,组内要联动,组间不干扰。

LoRaWAN 整体框架

比赛场景的 LoRaWAN 网络包括下图所示的 5 个实体,数据端到端加密,安全可信。
在这里插入图片描述

下行同步,不丢包

下行不丢包是通过【冗余重传】实现,比赛场景下 SF8 通信距离足够,经过如下配置,每 1 条【比赛开始】报文 LoRa 基站会连续下发 3 条给节点,保证了接收成功率。
在这里插入图片描述
在这里插入图片描述

实时上报,不丢包

当 50 根跳绳在 3 秒内上报数据,可 SX1302 只有 8 信道,这如何【避免冲突】呢?这就得引入【频段+时分】复用技术。

如下表所示,在纵轴有 8 个信道,即 f1~f8 它可以并发接收 8 个 LoRa 报文。
在横轴有 45 个时隙,这 50 个节点随时选择其中 1 个时隙上报。

频分(8 信道)x 时分(45 时隙)= 360 那么 50 个节点的冲突概率为 50 / 360 * 100% = 14%
因为每 3 秒节点(频点 / 时隙)随时变化,这样保证了数据流畅。
在这里插入图片描述

组播

比赛场景下,ChirpStack 下挂很多单位,每个单位下挂多个比赛节点。如下图所示,构成了树状结构。
在这里插入图片描述
所幸的是 ChirpStack 支持【分组】,如下图所示。

在这里插入图片描述

组播地址 + 节点 DevEUI 可以向【指定分组】下发比赛命令。
在这里插入图片描述
考虑到 1 个节点在分组中有 4 种操作:增删改查,LoRaWAN 支持空中无线电操作

组播命令用途
增加将 1 个节点添加到指定分组
删除从指定分组中删除 1 个节点
修改将 1 个节点从 A 分组移到 B 分组
查询查询 1 个节点所属分组信息

在这里插入图片描述

扩容,适应更多节点

如果有 100 / 1000 / 10000 / … 人比赛,LoRaWAN 能支持吗?支持!

每 50 个节点配置 1 台 LoRa 基站,它们组成 1 个子网。各子网通过【频分复用】技术,彼此无线电隔离,不干扰;又因为各子网都接入同 1 个 ChirpStack 组成一个主网。实现了扩容和负载均衡,如下图所示。

在这里插入图片描述

后记

本项目在 2021~2023 长沙市近 300 家中小学校成功落地,充分检验了 LoRaWAN 应用在比赛场景的可行性。

对于一些要求更苛刻的实时场景,还有如下算法可以改进

  • 锁定信道:每个节点固定 1 个信道,通过增加 LoRa 基站扩容。
  • 锁定时隙:每个节点固定 1 个时隙,通过组播编号来绑定节点。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cURL error 1: Protocol “https“ not supported or disabled in libcurl

1、php项目composer update报错 2、curl -V检查 发现curl已经支持了https了 3、php版本检查 4、php插件检查 插件也已经含有openssl组件了 5、phpinfo检查 curl是否开启ssl 定位到问题所在,php7.4的 curl扩展不支持 https 需要重装 php7.4的curl扩展 6、curl下载 下…

Feign API模块导入的两种方式

说明:在微服务框架中,会把其他微服务用到的FeignClient统一放到一个模块里面,称为FeignAPI,其他微服务需要使用FeignClient,引入FeignClient的Maven坐标就可以使用。 但是只引入FeignAPI的坐标还不行,Feig…

【分布式】分布式唯一 ID 的 几种生成方案以及优缺点snowflake优化方案

在互联网的业务系统中,涉及到各种各样的ID,如在支付系统中就会有支付ID、退款ID等。那一般生成ID都有哪些解决方案呢?特别是在复杂的分布式系统业务场景中,我们应该采用哪种适合自己的解决方案是十分重要的。下面我们一一来列举一…

数字化新时代,VR全景拍摄与制作

导语: 随着科技的飞速发展,数字化图片正在引领新的时代潮流。在这个数字化图片的新时代,VR全景拍摄与制作技术正以其独特的特点和无限的优势,成为数字影像领域的一颗璀璨明星。让我们深入了解VR全景拍摄与制作的特点和优势&#…

PLC绝对值指令ABS()

在C语言里,ABS()指令属于基础指令,博途PLC系统也有绝对值指令。对于S7-200SMART PLC则需要自行构造,下面给出SMART PLC的绝对值指令ABS()。 1、S7-SMART PLC绝对值指令 2、STL代码 SUBROUTINE_BLOCK ABS:SBR3 TITLE=ABS()函数 VAR_INPUT x:REAL; END_VAR VAR_OUTPUT y:RE…

市值超300亿美金,SaaS独角兽Veeva如何讲好中国故事?

“全球前50的药企,有47家正在使用Veeva。” 提到Veeva Systems(以下简称“Veeva”),可能很多人并不熟悉。但是生命科学业内人士都知道,Veeva是全球头部的行业SaaS服务商。以“为生命科学行业构建行业云”为使命&#x…

网络安全(黑客)自学——从0开始

为什么学习黑客知识?有的人是为了耍酷,有的人是为了攻击,更多的人是为了防御。我觉得所有人都应该了解一些安全知识,了解基本的进攻原理。这样才可以更好的保护自己。这也是这系列文章的初衷。让大家了解基本的进攻与防御。 一、怎…

记一次有趣的debug,VS编译器上Debug和Realease的差异

之前自己写过一个imageread的函数,用了好久一直没问题。最近两天,同事让我realease一个项目给他,其中就包含了我自己写的imageread函数。 我的函数就长这样,不包含公司的code,不算泄密哈。 在realse之前,我…

一些有意思的人工智能发展状况数据

随着大型语言模型(LLM)的引入,机器学习(ML)和人工智能(AI)首次被日常开发人员所使用。这些令人感觉很神奇的应用程序,甚至是拥有数十亿研发支出的,在以前连大型科技公司几…

探索Java API学习路线:从基础到高级的全面指南

文章目录 第一阶段:入门基础1. 环境准备2. 学习Java基础 第二阶段:熟悉常用的Java API1. Java标准库2. Java API文档 第三阶段:深入学习特定领域的Java API1. Java GUI API2. Java数据库连接(JDBC)API3. Java多线程API…

企业全渠道营销终极指南

客户不再在单一的渠道购物,渠道跳跃正在成为全球流行的消费者购物行为。他们用多种渠道与品牌互动,包括社交媒体、电子邮件等,这迫使企业必须采用全渠道营销策略来满足客户不断变化的需求,为客户提供个性化的体验,提高…

客户支持工具从被动到主动的演变

在当日新月异的商业环境中,企业需要适应不断增长的客户需求,优质的客户支持变得越来越重要。客户支持工具从传统系统到尖端 AI驱动解决方案的演变具有变革性,增强了主动和无缝的支持体验。所以,使用正确的客户服务工具很重要&…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第三十九天 39/50【二分】【二叉搜索数第k个节点】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

XRCameraSubsystem浅析

在使用ARFoundtion 4.2.8版本,要获取相机图像,还是通过ARCameraManager获取的。 大概的调用流程: 1. 应用脚本获取ARCameraManager对象,默认是挂在AR Camera下,向其注册回调函数。 2. ARCameraManager里会在每次Upd…

TortoiseSVN操作使用

说明 SVN常用于程序代码版本控制,由于业务需求需将生产资料通过SVN进行管控,涉及人员众多,权限分支管理需要细化,特此记录SVN的学习操作. 前言 版本控制是管理信息修改的艺术,它一直是程序员最重要的工具,程序员经常会花时间作出小的修改, 然…

干货 | 电路设计中如何减少ESD?

干货 | 电路设计中如何减少ESD? 今天给大家分享的是:在电路设计和PCB设计如何防止ESD损坏设备。 在电子行业中,保护设备免受ESD损坏是必须要注意的。静电放电(ESD)是一种非常高的电压尖峰,很容易损坏集成电…

【C++】STL中stack,queue容器适配器的模拟实现(使用deque容器)

文章目录 前言一、deque的一些基本知识相比vector:相比list:3为什么选择deque作为stack和queue的底层默认容器 二、stack模拟实现三、queue的模拟实现 前言 STL标准库中stack和queue的底层结构 :虽然stack和queue中也可以存放元素&#xff0c…

vue的组件化编程的详细讲解加代码演示

😀前言 本片文章是vue系列第5篇整理了vue的组件化编程的详细讲解加代码演示 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力&am…

leetcode 53. 最大子数组和

2023.7.28 要求找最大和的 连续子数组, 我的思路是用一个temp记录局部最优值,用ans记录全局最优值。 然后在每次for循环进行一个判断:当前遍历元素temp值 是否大于当前遍历元素的值,如果大于,说明temp值是帮了正忙的&a…

第12章 Linux 实操篇-Linux磁盘分区、挂载

12.1 Linux 分区 12.1.1 原理介绍 (1) Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构, Linux中每个分区都是用来组成整个文件系统的一部分。 (2) Linux采用了一种叫“载入”的处理方法,…