CN102791012B - 一种无线自组网多跳数据收发系统 - Google Patents
一种无线自组网多跳数据收发系统 Download PDFInfo
- Publication number
- CN102791012B CN102791012B CN201210246511.2A CN201210246511A CN102791012B CN 102791012 B CN102791012 B CN 102791012B CN 201210246511 A CN201210246511 A CN 201210246511A CN 102791012 B CN102791012 B CN 102791012B
- Authority
- CN
- China
- Prior art keywords
- node
- message
- sequence number
- data
- broadcasting packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明涉及一种无线数据收发系统,属于无线通讯领域。特别涉及到一种无线自组网多跳数据收发系统。该系统包括无线网络节点以及运行在节点上的路由协议。无线网络节点通过合理的体系结构设计具有使用简单、携带方便的优点;路由协议与传统的按需路由不同,该路由协议中每个节点都具有路由功能,是一种先验式路由,并且动态地维护所有信息,传输距离远,通过增加中继节点可实现通讯距离的无限延伸,在办公、医疗以及智能家居方面具有较强的实用价值。
Description
技术领域
本发明涉及一种无线数据收发系统,属于无线通讯领域。特别涉及到一种无线自组网多跳数据收发系统。
背景技术
传统的PC机一般是通过串口或并口等有线的方式与外部受控设备进行通讯的,其缺点尤为突出,需要额外电缆进行连接。
尽管当前市场上无线控制逐渐取代了有线控制,但大部分的无线传输技术的传输距离短、支持设备单一这些缺点阻碍了无线设备的应用。
综上所述,目前市场上已有的PC与外部设备之间的通讯系统存在如下几点的缺点:
1)通过串口与并口等有线连接的通讯系统缺点日益突出。
2)已有的无线技术存在传输距离短、设备控制单一等缺点。
本发明设计提出的“无线自组网多跳数据收发系统”利用即插即用以及无线自组网等技术很好地解决布线困难、传输距离短、不支持多设备通讯等突出问题。
在申请号为201020667452.2的设计《一种自动触发式无线传感网络自组网节点》中,只涉及到一种自组网的节点设计,而缺乏与之对应的与PC间的通讯方式,本发明不仅实现了一种具有与之不同的体系结构的网络节点,还实现了一种运行在该传输节点上的路由协议;在申请号为201010233965.7的发明专利《USB无线拓展系统》中,涉及到一种USB无线拓展通讯系统,但缺乏多跳与自组织等内容,传输距离最大也只有30米,本发明则在USB无线通讯系统的基础上实现了多跳自组网络,通过增加中继节点可实现通讯距离的无限延伸。
发明内容
本发明旨在解决PC与外设构成的传统通讯系统中存在的布线困难、传输距离短、不支持多设备通讯等技术问题。
本发明实现了一种网络节点和一种路由协议。网络节点具有低功耗、低成本、多信道传输、体积小以及配备接口等特性,适合大量部署;路由协议为一种先验式路由,能够实现多跳、远距离通讯。
本发明采用的解决方案如下:
包括无线网络节点和运行在节点上的多跳路由协议两大部分。
网络节点包括通讯接口、处理器和射频模块。
所述的通讯接口是与PC间采用USB HID方式进行通讯的接口,通过接口获取电源,为节点供电;
处理器运行多跳路由协议,控制射频模块,同时通过通讯接口,接收PC机上的数据或向PC发送数据;
射频模块负责接收或者发送数据,是在ISM频段工作。
所述的多跳路由协议的核心内容如下:
1)实时维护与整个网络中其他节点有关的路由表项。每个节点都能动态更新路由表:当在网络中发现新的节点时,相应的路由表项会被添加到路由表中;当某节点退出网络或者出现故障不能正常通信时,对应的路由表项也会从路由表中删除。
2)定时发送广播报文,其作用是告知网络中其他节点自己的存在。报文分为广播报文(用以广播)和数据报文(用以数据传输),两种报文都包含源节点地址、目标节点地址、中继节点地址、TTL等重要报文表项。
3)发送数据报文时,动态搜索到达目标节点的最优的下一跳,并更新对应路由表项。
本发明无线自组织多跳数据收发系统具有如下优点:
1)通过通讯接口,使得本发明使用简单、携带方便,实施简洁。
2)传输距离远,通过增加中继节点可实现通讯距离的无限延伸。
3)支持多设备通讯。
附图说明
图1 节点的体系结构图
图2 STM32F103C8T6与nRF24L01的接口电路图
图3 协议的工作状态图
具体实施方式
以下结合技术方案和附图详细叙述本发明的具体实施方法。
实施例1,如图1,为本发明中网络节点的体系结构:
(1)通讯接口模块
USB接口电压为5V,采用ME6206芯片,将5V的接口电压转化为3.3V电压,给微处理器STM32以及射频芯片nRF24L01供电,使其能够正常工作。另外USB接口的2、3脚分别直连到微处理器STM32的PA11和PA12端口,以实现微处理器STM32与USB接口的数据交换。
(2).处理器模块
处理器选用ST公司的STM32系列的STM32F103C8T6。STM32系列32位闪存微控制器基于突破性的ARM Cortex-M3内核。它提供了一个完整的32位产品系列,在结合了高性能、低功耗和低电压特性的同时保持了高度的集成性能和简易的开发特性。本设计中,利用STM32F103C8T6完整的USB驱动模块,省去了传统设计中的电路转换,降低了设计的复杂度;同时利用内部的倍频电路以及提供的外部晶振,STM32F103C8T6能够达到72MHz的处理速度,提高了数据处理能力。另外,STM32F103C8T6还负责对LED指示模块等其他功能模块的控制。
(3)射频模块
无线射频芯片选用nRF24L01,该芯片工作于2.4GHz 全球开放的ISM频段,最大发射功率0 dBm,最高传输速率达2Mbps。内置硬件CRC(循环冗余校验)和点对多点通信地址控制,集成了频率合成器、晶体振荡器和调制解调器,外围元件极少。嵌入的链路层控制降低了MCU的复杂性和成本,并且提高了数据传输的可靠性。nRF24L01没有复杂的通信协议,完全对用户透明,通过一个标准的SPI接口与外围控制器连接,同种产品之间可以自由通信。
STM32F103C8T6与nRF24L01的接口电路图参见图2,将STM32F103C8T6的PA8,PB11,PB12,PB13,PB14,PB15六个I/O口分别与nRF24L01的CE,IRQ,CSN,SCK,MISO,MOSI六个口互联,用以模拟SPI以实现对无线射频芯片nRF24L01的控制。
多跳路由协议设计如下,参见图3:
DATALENGTHMAX 表示数据包中数据的最大长度byte;
ORIGINATOR_INTERVAL表示广播报文间隔ms;
PURGE_TIMEOUT_BATNRF表示清除无效路由间隔ms;
RECV_INTERVAL表示接收包间隔ms;
BROADCAST 表示标识报文类型为广播报文;
DATA表示标识报文类型为数据报文;
WINDOWSIZE表示滑动窗口大小;
源节点表示针对当前节点收到的广播报文的起始节点;
目的节点表示报文发送的目标节点。
节点上电后首先进行系统初始化,包括时钟、FLASH、中断向量以及IO口等;然后通过模拟SPI对nRF24L01进行初始化,包括射频芯片的初始工作模式、信道、发送接收地址以及数据传输率等;接着节点完成了必要的初始化,进入工作状态。系统通过STM32F103C8T6的SysTick时钟计时,来为整个系统提供统一的时间,系统不断查询当前的统一时间,与最近一次工作状态(广播、清除无效路由、接收包等)的时间对比,求出当前的时间间隔,若此间隔大于或等于设定时间间隔(ORIGINATOR_INTERVAL、RECV_INTERVAL等),则系统触发进入该工作状态。
(1)每次间隔ORIGINATOR_INTERVAL大小的时间,定时器触发系统进入“广播”状态,将广播报文广播出去。下表1是协议报文的格式:
名字 | 大小(byte) | 功能描述 |
msgVerType | 1 | 指示出该报文的类型 |
TTL | 2 | Time to live |
seqNbr | 1 | 报文的序列号 |
addrOrg | 1 | 报文的源地址 |
addrTrans | 1 | 发送该报文的上一跳地址 |
Dest | 1 | 报文的目的地址 |
deteLen | 1 | 发送数据的长度 |
Dete | DATALENGTHMAX | 报文中包含的数据 |
表1
广播报文的主要作用是告知网络中其他节点本节点的存在,其中包含了本节点的地址、上一跳节点地址等信息;
(2)每隔间隔RECV_INTERVAL,节点检查空气中是否存在报文,当节点接收到报文时,节点触发进入“处理包”状态;首先根据报文格式中的msgVerType项确定报文的类型,然后根据类型的不同分别进行广播报文的处理或者数据报文的处理;
当报文为广播报文时,节点进入“广播包”状态;此时主要有两个功能函数:
updateRouteInfo();用以更新路由信息
rebroadBatnRFPacket();用以将接收到的广播包广播出去
当报文为数据报文时,节点进入“数据包”状态;此时节点首先根据报文格式中的Dest字段,判断该包是否是发给本节点的:若是,则进行必要的格式转换,并将数据发送给PC机;若不是,则更改报文中的TTL以及addrTrans字段,将报文转发给目的节点;在这个过程中主要包含以下的功能函数:
getUserData();将报文中的数据发送给PC机;
changeAddrTransAndBroad();更改相应字段将报文广播出去;
本协议中路由信息是由一个二维链表维护的:首先对于当前节点的每个邻居节点维护一个链表,每个链表节点的定义如下:
由上可以看到该一维链表中的每个节点维护了一个邻居节点的信息,对于该邻居节点又维护了另外一个链表routeEntryList rEL,此链表的目的在于维护通过该邻居节点收到的广播报文信息,第二维链表的节点定义如下:
序列号机制:本协议是面向序列号的,源节点产生的每个广播报文都有一个序列号(curSeqNbr),这些序列号是连续的并且增量为1。序列号的变动幅度并不是无限的,它被限制在0…2^16-1的范围内。当序列号到达最大值,这么该序列号会再次从0开始。
时间戳机制:对于每个源节点,每当收到一个新的广播报文,相应的timeStamp必须被更新。清除无效路由时,查看链表中已有的条目,若当前最新的timeStamp减去该条目的timeStamp所得值大于阈值,则清除当前路由。
滑动窗口机制:对于每个源节点,本协议利用滑动窗口来保存最近收到的广播包的序列号,该滑动窗口机制将收到广播包的序列号分为窗内序列号和窗外序列号。协议将保存收到的具有窗内序列号的报文的计数信息,利用该信息进行路由表的更新;若收到的广播报文序列号为窗外序列号,则该报文将被认为是过时的信息,而不被存储;若收到的广播报文序列号大于当前最新的序列号,则将最新序列号赋值为收到的序列号,滑动窗口将向前移动。
如上所述,每次在选择目的节点的最优下一跳时,对邻居节点链表中保存的与该目的节点相应的窗内序列号的计数进行降序排序,排序结果第一的邻居节点被认为通过该邻居节点最有希望到达目的节点而被选为最优下一跳。
本协议利用上述的二维链表,特别是利用序列号、滑动窗口、时间戳等机制来选择最优下一跳以及发现新路由和清除无效路由。
(3)每次间隔PURGE_TIMEOUT_BATNRF大小的时间,节点进入“清除无效路由”状态,此时节点会查看当前维护的路由表中每个路由表项的时间戳,若当前时间与时间戳之间的时间间隔大于PURGE_TIMEOUT_BATNRF,则删除该路由表项。
(4)当有数据需要发送(从USB接口检测到发送数据),节点触发进入数据发送状态,在该状态中完成打包、发送等一系列操作。所有状态结束都回到工作状态。
由上可见,本发明具有实施简单、通讯距离远以及支持多设备通讯等多方面的优点。
Claims (1)
1.一种无线自组网多跳数据收发系统,其特征在于,该系统包括无线网络节点,节点上运行多跳路由协议;
网络节点包括通讯接口、处理器和射频模块;
所述的通讯接口是与PC间采用USB HID方式进行通讯的接口,通过USB接口获取电源,为节点供电;
处理器运行多跳路由协议,控制射频模块,同时通过通讯接口,接收PC机上的数据或向PC发送数据;
射频模块负责接收或者发送数据;
所述的多跳路由协议的核心内容如下:
DATALENGTHMAX表示数据报文中数据的最大长度byte;
ORIGINATOR_INTERVAL表示广播报文间隔ms;
PURGE_TIMEOUT_BATNRF表示清除无效路由间隔ms;
RECV_INTERVAL表示接收包间隔ms;
BROADCAST表示标识报文类型为广播报文;
DATA表示标识报文类型为数据报文;
WINDOWSIZE表示滑动窗口大小;
源节点表示针对当前节点收到的广播报文的起始节点;
目的节点表示报文发送的目标节点;
节点上电后首先进行系统初始化,系统通过STM32F103C8T6的SysTick时钟计时,来为整个系统提供统一的时间,系统不断查询当前的统一时间,与最近一次工作状态的时间对比,求出当前的时间间隔,若此间隔大于或等于设定时间间隔,则系统触发进入该工作状态;
(1)每次间隔ORIGINATOR_INTERVAL大小的时间,定时器触发系统进 入“广播”状态,将广播报文广播出去;下表1是协议报文的格式:
表1
(2)每隔间隔RECV_INTERVAL,节点检查空气中是否存在报文,当节点接收到报文时,节点触发进入“处理包”状态;首先根据报文格式中的msgVerType项确定报文的类型,然后根据类型的不同分别进行广播报文的处理或者数据报文的处理;
当报文为广播报文时,节点进入“广播报文”状态;此时主要有两个功能函数:
updateRouteInfo();用以更新路由信息;
rebroadBatnRFPacket();用以将接收到的广播报文广播出去;
当报文为数据报文时,节点进入“数据报文”状态;此时节点首先根据报文格式中的Dest字段,判断该数据报文是否是发给本节点的:若是,则进行必要的格式转换,并将数据发送给PC机;若不是,则更改报文中的TTL以及addrTrans字段,将数据报文转发给目的节点;在这个过程中主要包含以下的功能函数:
getUserData();将数据报文中的数据发送给PC机;
changeAddrTransAndBroad();更改相应字段将数据报文广播出去;
路由信息是由一个二维链表维护的:首先对于当前节点的每个邻居节点维护一个链表,每个链表节点的定义如下:
typedef struct neighNode{
u8 addrNeigh;//该邻居节点地址
u8 entryCnt;//该邻居节点下的条目计数
routeEntryList rEL;//该邻居节点下的路由条目链表
struct neighNode*nextNeigh;//指向下一个邻居链表节点
}neighNodeList;
第二维链表的节点定义如下:
typedef struct routeEntryNode{
u8 addrDst;//源节点地址
u8 cnt;//收到的源节点包计数
u16 curSeqNbr;//最新包的序列号,见下文的序列号机制
u32 timeStamp;//时间戳,见下文时间戳机制
u16 slideWindow[WINDOWSIZE];//模拟滑动窗口,见下文滑动窗口机制
struct routeEntryNode*nextEntry;//指向下一个源节点链表
}routeEntryList;
序列号机制:面向序列号的,源节点产生的每个广播报文都有一个序列号curSeqNbr,这些序列号是连续的并且增量为1;序列号的变动幅度并不是无限的,它被限制的0…2^16-1的范围内;当序列号到达最大值,那么序列号会再次从0开始;
时间戳机制:对于每个源节点,每当收到一个新的广播报文,相应的timeStamp必须被更新;清除无效路由时,查看链表中已有的条目,若当前最新的timeStamp减去该条目的timeStamp所得值大于阈值,则清除当前路由;
滑动窗口机制:对于每个源节点,利用滑动窗口来保存最近收到的广播报文 的序列号,该滑动窗口机制将收到广播报文的序列号分为窗内序列号和窗外序列号;协议将保存收到的具有窗内序列号的广播报文的计数信息,利用该信息进行路由表的更新;若收到的广播报文序列号为窗外序列号,则该广播报文将被认为是过时的信息,而不被存储;若收到的广播报文序列号大于当前最新的序列号,则将最新序列号赋值为收到的序列号,滑动窗口将向前移动;
每次在选择目的节点的最优下一跳时,对邻居节点链表中保存的与该目的节点相应的窗内序列号的计数进行降序排序,排序结果第一的邻居节点被认为通过该邻居节点最有希望到达目的节点而被选为最优下一跳;
(3)每次间隔PURGE_TIMEOUT_BATNRF大小的时间,节点进入“清除无效路由”状态,此时节点会查看当前维护的路由表中每个路由表项的时间戳,若当前时间与时间戳之间的时间间隔大于PURGE_TIMEOUT_BATNRF,则删除该路由表项;
(4)当有数据需要发送,节点触发进入数据发送状态,在该状态中完成打包、发送一系列操作;所有状态结束都回到工作状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210246511.2A CN102791012B (zh) | 2012-07-17 | 2012-07-17 | 一种无线自组网多跳数据收发系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210246511.2A CN102791012B (zh) | 2012-07-17 | 2012-07-17 | 一种无线自组网多跳数据收发系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102791012A CN102791012A (zh) | 2012-11-21 |
CN102791012B true CN102791012B (zh) | 2015-06-24 |
Family
ID=47156291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210246511.2A Active CN102791012B (zh) | 2012-07-17 | 2012-07-17 | 一种无线自组网多跳数据收发系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102791012B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967545A (zh) * | 2015-05-26 | 2015-10-07 | 重庆房慧科技有限公司 | 多智能家居设备动态自组网构建方法 |
CN104967546A (zh) * | 2015-05-26 | 2015-10-07 | 重庆房慧科技有限公司 | 高可靠性多智能家居设备动态自组网构建方法 |
CN110139399A (zh) * | 2019-04-25 | 2019-08-16 | 中国科学院上海微系统与信息技术研究所 | 一种移动多跳自组网及其组网方法 |
US11099220B2 (en) * | 2019-10-11 | 2021-08-24 | Schweitzer Engineering Laboratories, Inc. | Intelligent electronic device control using wirelessly transmitted electrical measurements |
CN115291498B (zh) * | 2022-10-09 | 2023-01-20 | 南京国电南自维美德自动化有限公司 | 一种工业控制系统控制器的冗余切换方法及系统 |
CN116306455B (zh) * | 2022-12-23 | 2023-08-11 | 之江实验室 | 一种适用于2D-Mesh拓扑的晶上系统的高速配置管理方法 |
CN117098074B (zh) * | 2023-10-18 | 2024-01-26 | 深圳鹏龙通科技有限公司 | 自组网中信息共享方法、装置、存储介质及共享节点 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101426290A (zh) * | 2007-10-29 | 2009-05-06 | 吉林市曼博科技有限公司 | 一种通用无线传感器网络节点设备 |
-
2012
- 2012-07-17 CN CN201210246511.2A patent/CN102791012B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101426290A (zh) * | 2007-10-29 | 2009-05-06 | 吉林市曼博科技有限公司 | 一种通用无线传感器网络节点设备 |
Non-Patent Citations (1)
Title |
---|
方宇.一种超短波自组织网络网内路由协议的设计与实现.《中国优秀硕士论文全文数据库》.2007,第44页至第63页. * |
Also Published As
Publication number | Publication date |
---|---|
CN102791012A (zh) | 2012-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102791012B (zh) | 一种无线自组网多跳数据收发系统 | |
CN102055611B (zh) | 一种低功耗无线数据采集系统 | |
CN206894631U (zh) | 一种多通道Lora集中器及用该Lora集中器的IOT系统 | |
CN201673377U (zh) | 基于gps/北斗双模授时的无线校时系统 | |
CN202750239U (zh) | 基于物联网技术的智慧医疗无线网关 | |
CN101374140B (zh) | 一种无线传感器网络的通讯mac实现方法及实施该方法的无线传感器网络节点 | |
CN203219503U (zh) | 无线传感器网络系统 | |
CN202488762U (zh) | 多协议多接口无线传感网网关 | |
CN104955173A (zh) | Zigbee无线组网方法 | |
CN102625402A (zh) | 一种关于移动Ad-Hoc网络路径发现和选择的方法 | |
CN204258844U (zh) | 家庭物联网网关 | |
CN101466160B (zh) | 一种无线网状网中节点节能的方法及系统 | |
Ren et al. | Can bus network design based on bluetooth technology | |
CN102983948A (zh) | 一种无线传感网络自适应聚类传输发法及其装置 | |
CN204666186U (zh) | 基于无线网的仓储环境监测系统 | |
Mollanejad et al. | EHRP: Novel energy-aware hierarchical routing protocol in wireless sensor network | |
CN204362352U (zh) | 基于WI-FI+ZigBee通信的高效节能LED照明系统 | |
CN104348523A (zh) | 一种无线传感器节点的数据传输方法 | |
CN106856590A (zh) | 一种多频段并行实时无线仓储物流通信系统 | |
CN107124722A (zh) | 一种无线传感器网络节点自组网系统 | |
CN204102313U (zh) | 一种基于wsn用于微环境监测的主从式信息采集设备 | |
CN206698445U (zh) | 一种多源信息融合网关装置 | |
CN203165188U (zh) | 一种基于无线自组网络的无线抄表系统 | |
CN102238706A (zh) | 基于rtc的低功耗无线传感器节点 | |
CN203786552U (zh) | 基于物联网的传感器数据采集系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |