物联网系统中Lora组网中的轮询模式实现

电子说

1.3w人已加入

描述

一 概述

LoRa技术具有远距离、低功耗、多节点、低成本和抗干扰的特点。另一方面,LoRa低速率支持较小的数据传输。

服务器、终端(内置LoRa模块)、网关(或基站)、云四部分组成了LoRa网络。如图

物联网

Lora技术可用于很多场合,例如隧道通信、电网监视、电表、水表、智能农业、智能水利、智能交通、智能社区、环境监视、工业自动化测试、水产养殖等电表的数据收集等。

二 轮询模式

轮询的优点在于其简单性和能够同时检查多个设备的能力。它不需要复杂的中断设置和管理,因此更容易实现和维护。轮询的主要缺点是它可能无法及时处理快速变化的事件或数据,因为它只在轮询周期到达时才检查设备状态。

因此,必须注意,如果数据与信号有相关的截止时间(deadlines),那么轮询时间加上响应时间必须始终小于这些截止时间。如果数据到达的速度快于轮询时间,那么数据将会丢失。这在许多应用中可能不是问题,但在某些情况下可能是致命的。

相比之下,中断处理可以立即响应设备状态的变化,因为它是由设备本身触发的。但是,中断处理需要更复杂的设置和管理,包括中断向量的配置、中断服务例程的编写和中断优先级的设置等。此外,如果多个设备同时触发中断,还需要处理中断嵌套和优先级的问题。

因此,在选择使用轮询还是中断处理时,需要根据具体的应用场景和需求进行权衡。

轮询模式:将网关设置为该模式后,连接到网络的节点模块将处于被动状态。此时,网关将根据Web设置发出前导(前导期间与唤醒期间相同),唤醒网络上的所有节点。将数据传输到节点发送数据后,当网关收到来自模块的数据响应时,会立即发送下一个数据。否则,在接收时间到期之前不发送下一个数据。

功能说明:

1.在使用此模式之前,客户必须设置与插座相关的参数。配置完成后,网关进入监视状态,节点连接到网络。网关响应网络信息,保存节点信息。如果网络节点的数目超过0或者数据库能够访问该网络,则该网关将基于设置的唤醒时间、轮询时间和周期来轮询唤醒数据并由用户设置。

2.当节点接收到数据时,节点采取适当的操作并响应相关数据来完成数据交换,然后节点进入睡眠状态,并且网关等待下一个周期中出现第二个唤醒数据。此模式最多可设置16个唤醒数据。一旦完成了对所有节点(存储在数据库中的网络节点)的唤醒数据的轮询,第二个轮询数据将被替换,并重复上述步骤直到下一个轮询周期。完成后,在轮询周期结束之前,将重新开始轮询,从数据库中保存的第一个数据开始启动。

轮询数据设置:由已发布的条目数和轮询数据组成,在被动唤醒模式下启用。

发布的条目数:确定下一轮询数据的数量。例如,如果发布的条目数为4,则仅轮询数据1~4的数据,最多对应16个命令数据,数据格式为“十六进制”,因此请严格以数据格式填写。

轮询数据:用户必须轮询发出的数据或命令。“十六进制”输入,最多64字节。请务必以十六进制格式输入。

三 使用场景

轮询模式适合设备一直在线的情况下,就像是教室里老师挨个点名,学生挨个回答一样,这样子每个人都会在点名的时候进行回答,不会冲突。

四 轮询组件的使用

1 Gitee链接地址

Demo位于amaziot_bloom_os_sdkproductsam-lora-gatewaylora_gateway

Gitee源码地址:https://gitee.com/ning./hongdou

Github源码地址:https://github.com/ayumid/hongdou

编译指令:.build.bat -l .amaziot_bloom_os_sdkproductsam-lora-gatewaylora_gateway

2 组件功能介绍

主机按照设置的间隔轮询从机,从机收到主机轮询消息后再上报。

3 代码讲解

1 dtu_lora_call_task_init

功能:该函数用于,初始化轮询任务。

参数:无

返回值:无

示例:

 

dtu_lora_call_task_init();

 

2 dtu_lora_call_task

功能:该函数用于,轮询主任务。

参数:无

返回值:无

示例:

 

status = OSATaskCreate(&dtu_lora_call_msgq_task_ref, dtu_lora_call_task_stack, DTU_LORA_CALL_TASK_STACK_SIZE, 151, "dtu_lora_call_task", dtu_lora_call_task, NULL);

 

3 dtu_lora_call_interval_timer_stop

功能:该函数用于,定时器停止。

参数:无

返回值:无

示例:

 

dtu_lora_call_task_init();

 

4 dtu_lora_call_interval_timer_start

功能:该函数用于,开始轮询定时器。

参数:无

返回值:无

示例:

 

dtu_lora_call_interval_timer_start();

 

5 dtu_lora_call_interval_timer_init

功能:该函数用于,轮询定时器初始化。

参数:无

返回值:无

示例:

 

dtu_lora_call_task_init();

 

6 dtu_lora_call_interval_timer_callback

功能:该函数用于,轮询定时器回调函数。

参数:无

返回值:无

示例:

 

OSATimerStart(st_dtu_lora.lora_call_ref, dtu_file_ctx- >lora.interval * 200, dtu_file_ctx- >lora.interval * 200 , dtu_lora_call_interval_timer_callback, 0);

 

7 dtu_lora_call_task_send_msgq

功能:该函数用于,定时器超时给主任务发送消息,驱动主任务通过lora模块发送消息。

参数:无

返回值:无

示例:

 

dtu_lora_call_task_send_msgq(&uart_send);

 

4 Demo实战

参考开源项目Lora网关

本文章源自奇迹物联开源的物联网应用知识库Cellular IoT Wiki,更多技术干货欢迎关注收藏Wiki:Cellular IoT Wiki 知识库(https://rckrv97mzx.feishu.cn/wiki/wikcnBvAC9WOkEYG5CLqGwm6PHf)

欢迎同学们走进AmazIOT知识库的世界!

这里是为物联网人构建的技术应用百科,以便帮助你更快更简单的开发物联网产品。

Cellular IoT Wiki初心:

在我们长期投身于蜂窝物联网 ODM/OEM 解决方案的实践过程中,一直被物联网技术碎片化与产业资源碎片化的问题所困扰。从产品定义、芯片选型,到软硬件研发和测试,物联网技术的碎片化以及产业资源的碎片化,始终对团队的产品开发交付质量和效率形成制约。为了减少因物联网碎片化而带来的重复开发工作,我们着手对物联网开发中高频应用的技术知识进行沉淀管理,并基于 Bloom OS 搭建了不同平台的 RTOS 应用生态。后来我们发现,很多物联网产品开发团队都面临着相似的困扰,于是,我们决定向全体物联网行业开发者开放奇迹物联内部沉淀的应用技术知识库 Wiki,期望能为更多物联网产品开发者减轻一些重复造轮子的负担。

Cellular IoT Wiki沉淀的技术内容方向如下:

物联网

奇迹物联的业务服务范围:基于自研的NB-IoT、Cat1、Cat4等物联网模组,为客户物联网ODM/OEM解决方案服务。我们的研发技术中心在石家庄,PCBA生产基地分布在深圳、石家庄、北京三个工厂,满足不同区域&不同量产规模&不同产品开发阶段的生产制造任务。跟传统PCBA工厂最大的区别是我们只服务物联网行业客户。

连接我们,和10000+物联网开发者一起降低技术和成本门槛

让蜂窝物联网应用更简单~~

哈哈你终于滑到最重要的模块了,

千万不!要!划!走!忍住冲动!~

欢迎加入飞书“开源技术交流群”,随时找到我们哦~

点击链接如何加入奇迹物联技术话题群(https://rckrv97mzx.feishu.cn/docx/Xskpd1cFQo7hu9x5EuicbsjTnTf)可以获取加入技术话题群攻略

Hey 物联网从业者,

你是否有了解过奇迹物联的官方公众号“eSIM物联工场”呢?

这里是奇迹物联的物联网应用技术开源wiki主阵地,欢迎关注公众号,不迷路~

及时获得最新物联网应用技术沉淀发布

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分