分享好友 最新资讯首页 最新资讯分类 切换频道
LoRa自组网络设计 6
2024-12-20 04:15

LoRaWAN采用星型无线拓扑
End Nodes 节点
Gateway 网关
Network Server 网络服务器
Application Server 应用服务器

LoRa自组网络设计 6

LoRa联盟是2015年3月Semtech牵头成立的一个开放的、非盈利的组织,发起成员还有法国Actility,中国AUGTEK和荷兰皇家电信kpn等企业。至2016年4月,联盟已经发展成员公司290余家,其中不乏IBM、思科、法国Orange等重量级产商

128AES加密功能

节点与server之间的加密通信
HAL驱动SPI驱动物理层phy,物理层通过lora或者fsk协议再与网关通信,网关可以通过spi或usb与网关模块通信
网关也可以通过3Gwifi与我们网络服务器通讯

zigbee属于mesh

1.4.1 LoRaWAN网关SX1301

1.4.2 LoRaWAN终端Class A

LoRaWAN Server选择最佳Gateway下行通信,都是通过LoRaServer选择
开启两个接收窗口,平时处于休眠模式,当他需要工作的时候才会去发送数据包,功耗最低,实时性不高,比如1小时才能发送1次信息,控制不太合适,采集信息用classA最合适

1.4.3 LoRaWAN终端Class B

解决classA实时性不高(当需要节点去响应实时性问题的时候,首先网关会发送一个信标,告诉节点要加快通讯,快速工作,节点收到信标之后,会在128秒内去打开多个事件窗口,每个窗口在3-160ms,在128秒内可以实时对节点进行监控

1.4.4 LoRaWAN终端Class C 

既保持实时性,也保证了数据收发,一直会打开接收窗口,缺点能耗高

1.5.1 LoRaWAN服务器框架

与ABCclass建立了Star通讯
网络服务器与网关建立通讯
控制网络服务器协议算法是通过控制服务器做得,服务器如何决定通过那个网关进行通讯
应用服务器根据行业需求,布置不同应用,使用接口比较单一
客户服务器 二次开发,人机交互等在此开发

1.5.2 不同server的通信

 tcp udp
客户服务网、应用服务器、网络服务器、控制服务器都是通过TCP进行通讯,可靠性
网关、节点和网络服务器是通过UDP,保证实时性

1.5.3 LoRaWAN服务器通信协议 

TCP、UDP、网关通过JSON字符串进行交互的

思考 如何设计Class C终端进行私有组网

1.只能联网内才开发loraWan
2.loraWan网关成本高
3.要具备Sever开发能力

类似交通信号灯,无线信道只有1个,不设计会产生冲突
解决信号冲突的问题
尽可能地节省电能
保证通信的健壮和稳定性

设计要基于3种协议 

用时间片的思想,多任务。(在一定的事件内去分配时间槽,每个时间槽分给一个节点,使节点在这个时间槽里通信,如果不在这个时间槽是不能通信的。和电脑CPU的时间片是一个道理

时分多路复用是将时间划分为一段段等长的时分复用帧(TDM帧,每个用户在每个TDM帧中占用固定序号的时隙。
每个用户所占用的时隙是周期性出现(其周期就是TDM帧的长度)。
时分复用的所有用户是在不同的时间占用相同的频带宽度。 

1301 芯片

(CPU是多核,多任务同时进行:不同频率的通信可以同时进行

SF扩频,SF不同,进行不同的通信

LoRa 中的码分复用通过以下方式实现

  1. 唯一的扩频因子(Spreading Factor 在 LoRa 中,每个终端设备使用唯一的扩频因子,这个扩频因子决定了数据信号的频带扩展程度。不同的扩频因子对应着不同的码片序列。每个终端设备在发送数据时,使用其唯一的扩频因子进行调制,因此即使在相同的频率上,不同的终端设备也可以同时发送数据而不会相互干扰。

  2. 自适应数据速率(Adaptive Data Rate,ADR LoRa 网络可以根据终端设备的距离和环境条件动态调整扩频因子和发送功率,以最大程度地提高通信的可靠性和覆盖范围。

  3. 碰撞避免技术 LoRa 中还采用了碰撞避免技术,通过随机选取发送时间和采用随机退避算法来减少终端设备之间的碰撞,进一步提高了网络的性能。

总的来说,LoRa 中的码分复用技术使得多个终端设备可以在同一时间和频率上进行通信,从而实现了低功耗、远距离和大规模连接的物联网应用场景。

modbus只有一个主机,节点可以是1-247,只允许主机发送,从机应答。实时性差 

时间 随机访问,竞争入网
信号(协调器
节点1 发送收到
节点2 先判断网络是否冲突,再延时发送 接收
节点3 先判断网络是否冲突,再延时发送 接收

时间槽分配、或者时间片,在规定时间内进行收发rx、tx,从而实现整个网络的通信
同时设置冗余、revered slot和空闲任务used idle 

2.7.1 LoRa自组网协调器设计

串口:我们需要牧场监控内的信息,控制器要与协调器进行数据通信
无线数据:入网没完成等待,是否有新节点加入,断电是否有旧节点加入
解决时钟飘移缺点,时钟同步

 2.7.2 LoRa自组网节点设计

思考 基于时分复用MAC协议如何开发协调器与节点程序

入网请求

从机->入网请求名称字节数描述举例帧头10x3C0x3C长度1最长126字节长度范围内不检测包头;计算整个帧长度0x0c网络类型1字符<J>代表入网请求J网络标识符2PANID,用于网络区分,只有PANID一样才可以组网通信0x0102设备地址2设备唯一地址标识0x1235CRC8校验1数据包校验,整个数据包,除校验位0x08主机->入网应答名称字节数描述举例帧头10x3C0x3C长度1最长126字节;长度范围内不检测包头;计算整个帧长度0x0c网络类型1字符<A>代表入网成功A网络标识符2PANID,用于网络区分,只有PANID一样才可以组网通信0x0102设备地址2设备唯一地址标识0x1235设备序号1设备是第几个入网1CRC8校验1数据包校验,整个数据包,除校验位0x08

        设备标识符 PANID和zigbee组网一样,相同才能在一个网通信 

时间同步

网络数据包

网络数据包名称字节数描述举例帧头1字符<N>代表网络数据包N网络标识符2PANID,用于网络区分,只有PANID一样才可以组网通信0x0102数据包包头10x210x21包长1数据包长度,代表数据域数据长度1数据类型10x00:数据、0x01:命令0x00设备地址2设备标识符0x0001传感器类型10x01:温湿度、0x02:三轴、0x03:风机、0x04:水表、0x05:地磁 0x06:灌溉0x01数据4每种传感器数值用一个字节标识,比如温湿度占两个字节0x01298113CRC8校验1数据包校验,整个数据包,除校验位0x08

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7|GPIO_PIN_15, GPIO_PIN_SET); 

3.2.1 Cubmx RTC外设配置

修改RTC时钟源为外部高速时钟
配置RTC分频系数
初始化日期和时间
配置Alarm参数
使能RTC全局中断

1s为单位.rtc时钟为250hz

3.2.2 Cubmx 定时器外设配置

配置TIM2分频系数
使能TIM2定时器中断 

1s为单位 

3.2.3 Cubmx 串口和ADC外设配置

把main函数的功能移到task文件夹下,数据解析、网络解析、协议等 

如果是从机增加一个ADC,用于生成随机数

配置ADC为连续采集
配置DMA通道
配置ADC标签

3.2.4 RTC任务

主要任务:RTC 提供实时时钟,用于时钟同步,开启闹钟中断

sTime的初值和sAlarm的初值都为0

 

闹钟事件回调函数,触发事件用于处理任务

协调器(主机
        同步时钟标志(因为每加入的设备都需要同步时钟
        获取时间,设置下次闹钟时间+5小时
节点(从机
        发送更新数据标志
        闹钟发送数据的时间赋值,使能闹钟中断

毫秒单位转换为时分秒

 

 时分秒转换函数 

 

 3.2.5 定时器任务

定时器 用来节点超时的判断

定时器初始化

开启定时器中断

 
 

定时器定时事件任务

定时器中断溢出,要在里面做一些处理,判断节点是否入网超时

 

3.2.5 CRC校验码及通信协议宏定义

protocol.c
1生成crc8校验码
2判断crc8校验码是否正确

 
 

3.2.6 数据处理任务

dataprocess.c

主机

从机 

3.2.6.1 串口数据获取并无线发出去
 

接收数据包计数、发送数据包计数

 
3.2.6.2 读取无线射频数据
 

根据radio.h process的不同枚举类型进行业务处理

 
3.2.6.3 主机协议解析
 

入网协议解析(新设备添加入网表

 

网络数据包解析

 
3.2.6.4 从机协议解析
 

从机协议解析

 
3.2.6.5 从机数据上传 
 

3.2.7 网络处理任务

netprocess.c

主机

从机

 netprocess.h

 

netprocess.c

 
 3.2.7.1 主机等待从机入网完成
 
 3.2.7.2 主机发送同步时钟
 

 3.2.7.3 生成随机数
 

库函数 放到时间数里面,循环读10次,转换为uint8 ,最大是2550,返回(0-2.5s) 

3.2.7.4 从机加入网络
 
3.2.7.5 从机获取时间片
 

3.2.8  获取数据发送时长

lora获取时间片的同时需要考虑数据发送的时长

 

 

3.2.8 主程序

主机:

等待入网
是否是新节点,如是改变节点入网状态未完成
是否旧节点,如是改变节点入网状态未完成
时钟同步时间是否到,到了时钟同步

从机

节点都已经在上面部分实现,只需要等待接收数据,数据解析
判断是否到达定时发送时间,发送数据,并清空标志位。

1.adc读取,返回随机时间
2.打印地址
3.发送完后收到应答包,加入完成
4.时间片是0,因为第一个
5.一分钟一个rtc闹钟
6网络同步
7收到同步包
8设置了时间
9 1分钟传一个数据,上传一次数据
10 还有另一个设备发送的,节点也会收到。


最新文章
轻松打造免费的crm1688技术精髓-探索数字化营销新境界:开启高效管理新模式!
在当今数字化商业环境中,各种管理工具层出不穷,而CRM(客户关系管理)系统作为推动企业成长的重要工具,正逐渐成为不可或缺的
MongoDB文档-进阶使用-MongoDB索引-createindex()与dropindex()-在MongoDB中使用正则表达式来查找
 阿丹:         之前研究了MongoDB的基础增删改查。在学会基础的数据库增删改查肯定是不够的。这个时候就涉及到了数
新闻发稿新浪
  下面关于猫之印媒介自助发稿平台的发稿投稿教程,希望对广大朋友们有所帮助,如果觉得靠谱希望得到你的点赞转发。  第一步
速递|刚刚,OpenAI 官宣完成 66 亿美元融资!最新估值 1570 亿美元;核心技术人员曝光,研究副总裁计划 AI 创业
10 月 2 日,OpenAI 官宣已筹集到 66 亿美元新一轮资金,融资后估值达到 1570 亿美元,这笔资金将加快推动其进程,继续巩固在
全站搜索,全站搜索网页
全站搜索的重要性全站搜索对于任何网站来说都是至关重要的,它不仅提高了用户体验,也增强了网站的功能性。用户依赖搜索功能来快
三款同阶天花板车型的智能语音对比,有点东西在身上
张张嘴就能控制空调+1度或者-1度;上一句歌词没听清,马上让智能语音助手倒退三秒进度;车窗要开13%才是与阳光共舞的黄金角度?
阿里游戏林永颂:应用商店也要像手淘一样向千人千面演变
  阿里游戏总裁林永颂接受新浪科技等媒体采访时表示,阿里游戏之前大部分的精力是在做国内的,实际上在国际上也做了很多的事,
这几个网站太好用了,建议收藏!
4.开发网站的时候,在关键的地方加点精致的动画会让网站显得更高级。今天推荐一本介绍CSS动画的开源电子书:《css-animation-101
AI智能文案生成工具:一键自动创作,解决多场景文案需求与高效写作难题
在数字化时代内容创作已成为企业和个人塑造的要紧手。高效且高品质的文案创作往往耗时耗力让多创作者陷入困境。智能文案生成工具
探索Midjourney中文绘画的无限潜力
在当今数字创作的时代,拥有一款强大的绘图工具无疑是每位艺术创作者的梦想。那么如何能够轻松获取这款工具呢?我最近发现了一