[分享] 基于LORA的无线广域物联网应用系统设计

毛球大大   2021-12-20 19:37 楼主
本文采用LORA点对点通信及相应的软件设计,用汇聚节点+通信模块上云的方式替代LORA基站的方案设计广域无线物联网应用,设计了终端节点、汇聚节点及服务器平台软件,实现了节点数较少的无线广域物联网应用的经济实用方案。


 

1 总体设计
典型的基于LORA的物联网应用系统是通过LORA终端向LORA基站发送数据,再由LORA基站通过网关将数据上云[3][4],本文设计的应用系统采用LORA终端点对点通信方式,在担任汇聚节点的终端中添加Wi-Fi通信模块,通过Wi-Fi模块完成数据的上云工作,这样做成本更低,部署更简单。我们再通过设计自己的服务器平台通过云平台的API接口获取监测数据,系统架构图1所示。
 

 

2 硬件系统设计
 
2.1 LORA终端节点硬件设计

 

终端节点由MCU、传感器单元、电源模块、LORA通信模块、SWD调试模块等构成,MCU采用STM32F103系列的芯片,该芯片应用广泛,成本较低。Lo Ra通信单元主要采用Semtech公司的SX1278射频芯片实现Lo Ra数据的传输。整体构造如图2所示。
 

 

2.2 LORA汇聚节点硬件设计

 

LORA汇聚节点担负收集传感数据和将数据上传到云端的功能,在硬件结构上比终端节点多了一个WIFI模块(或者4G模块),其他结构和终端节点一样,这里不在赘述。
 

 

3 软件系统设计
 

 

软件系统包括:终端节点软件和汇聚节点软件,汇聚节点通过通讯模块连接到云平台(机智云物联网云平台[5]),依赖云平台快速开发出系统的WEB应用端。
 

 

3.1 终端节点、汇聚节点软件设计
 

 

终端节点采集传感器数据,并将采集的数据通过点对点的方式发送到汇聚节点,在终端节点发送给汇聚节点的数据报文中包含终端节点的编号、传感器类型等信息。汇聚节点在接收到终端节点发送的报文后,检查报文中的节点编号、传感器类型等信息分别通过通信模块上报的物联网云平台。终端节点和汇聚节点的软件流程图如图3、图4。
 

 

由于所有的终端节点和汇聚节点都是采用点对点通信,因此必须设计一套终端节点和汇聚节点之间的通信协议,以便汇聚节点能够识别各个终端节点发送的数据。我们设计了一个简单的协议格式。该协议的数据格式如表1。
 

 

图一:系统总体结构图
 
 

 

图二 :终端节点硬件结构图
 

 

为了提高数据通信的可靠性,2个字节的地址编码我们只采用了如表2的地址。
 

 

即除了汇聚节点外,每个终端节点的地址编码只能是2n,可以容纳16个终端节点,通过冗余便于节点检查地址编码传输是否出错。这样做的代价较大,可以通过实际部署环境的实际通信状况修改地址编码的方法,提高通信的效率。传感器类型的编码可以参考地址编码的方法,这样就可以部署8种不同类型的传感器,如果需要部署的传感器类型超过8个,可以根据实际的通信状况改变传感器类型编码方法或者增加传感器类型字段的长度。数据校验码我们采用数据+数据字段长度的算术和。在系统的部署测试中,我们设计的这套简单通信协议能够支持系统的稳定运行。


 

3.2 服务器平台设计
 

 

我们将设备接入了机智云Aiot开发平台,基于机智云的Open API接口,我们设计了系统的服务器平台。我们的服务器平台基于Springboot[6]设计,平台模块包括:用户管理模块、设备管理模块、数据呈现模块。该平台的功能可以继续扩展。
 

 

(1)   用户管理模块在本服务器上实现用户的注册、登录、修改、删除等功能,使用shiro框架进行权限管理,通过调用机智云的用户管理API完成机智云用户的创建、登录等功能。
(2)   设备管理模块通过调用机智云的绑定管理API实现设备的绑定、解绑等功能。

 

(3)   数据呈现模块设置了定时任务,定时任务会定时从机智云获取设备的状态、传感器数据等信息保存到本地数据库,并通过Echarts可视化库将数据呈现在Web端。
 


 

4 结语

 

LORA基站目前的价格普遍在几百元至上千元之间,本研究采用LORA汇聚节点匹配相应的软件设计替代LORA基站实现远距离无线通信,在监测节点数量较少(10个以下)的应用中可以显著减少硬件成本,是一种经济实用的LORA应用方案。
 

 

表1:协议的数据格式
 

 

表2:2个字节的地址编码
 

 

图3终端节点程序流程图
 


 

图4:汇聚节点程序流程图

回复评论 (2)

表和图都看不到

点赞  2021-12-21 07:31

点赞  2023-5-16 10:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复