如何将 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 个时隙,通过组播编号来绑定节点。