嵌入式 > 嵌入式开发 > 详情

CC1101的远距离无线数据传输协议设计

发布时间:2020-06-22 发布时间:
|

摘要:本文设计了一种基于CC1101的远距离无线传输协议,通过构筑网络拓扑结构实现了对节点的分层管理,确保数据在多层节点间有序准确的传输,使传输距离最远可达到100km以上,节点数量可以增加到6万个,实现远距离、多节点的数据传输。

关键词:CC1101芯片;无线传输协议;网络拓扑

引言

随着通信技术的不断发展和完善,无线通信技术已经广泛应用于很多领域。目前应用较为广泛的是蓝牙、ZigBee和WiFi等短距离无线传输技术,但是它们的传输距离短,无法满足工农业与监控等领域对传输距离和覆盖范围的需求,因此本文设计一种基于CC1101芯片的远距离无线传输协议CC1101芯片,具有低成本、低功耗、小体积、使用简单、操作灵活等特点,其传输距离一般为400~800 m,具有很好的数据包处理机制和充足的发射/接收缓冲区,适用于无线远程数据传输系统。

物联网细分为5层结构:感知层、接入层、网络层、支撑层和应用层。本文基于CC1101无线收发芯片,设计一种无线传输协议,完成物联网5层体系构架中从感知层到网络层的数据交换,是相对远距离的数据传输在接入层的一种新的传输方式。本文通过设计基于CC1101芯片的无线传输协议,扩大物联网感知层到网络层的传输距离,丰富接入层无线传输的方式,弥补了CC1101芯片针对远距离无线传输协议的不足。

1 协议的整体架构

本文将物理节点划分为3种类型:中心节点、路由节点和终端节点。中心节点是整个网络协议的汇聚中心,负责形成和维护整个传输系统的路由结构,实现对终端节点的检测与控制,完成对采集数据的处理和存储。路由节点是整个网络协议的传输系统,负责完成整个系统命令的下达和数据的传输,是整个协议数据传输的运输枢纽。终端节点作为中心节点命令的执行者,是最底层节点,可与传感器相连,负责数据的采集。3种节点间的关系如图1所示。


从整体上看,中心节点负责维护所有路由节点,而路由节点管理其范围内的终端节点,终端节点通过解析中心节点的命令,将执行命令后产生的数据通过路由节点上交给中心节点处理。因此,三者各司其职,共同完成整个系统的任务。

根据3种节点的关系可构建“一全多局”路由表,路由表负责记录整个系统的网络拓扑结构,控制数据帧传输的路线,并据此提出一种二次携带信息广播协议,来提高回应节点的完整性。本文基于TCP/IP协议分层的设计思想,综合CC1101无线收发芯片的特征,按照传输协议数据帧传输的流程,将传输协议结构细分为5层结构,完成一全多局”路由表的组建和数据在节点间的相互传输。

为了实现远距离和多节点的数据采集,本文在8位地址滤波接收模式的CC1101无线收发芯片中添加接收/发送放大器,最远可以传输800 m,最多可以带255个节点,通过芯片节点的3种划分方式,以CC1101发送和接收距离500 m为单位,传输距离最远可达到100 km以上,节点数量可以增加到6万个。

2 协议路由

2.1 路由表

本文设计一种“一全多局”的路由信息表。“一全”指中心节点拥有全局拓扑网络路由节点的路径信息,即所有路由节点与其相邻节点的层次结构关系;“多局”指路由节点存储与其相邻的路由节点的信息。路由信息表结构如表1所列,该表有两个优点:第一是占用空间小,第二是可快速检索一条最短路径。


2.2 路由表构建

本文基于路由表的结构,采用一从多主的方式构建路由表信息。即一个从节点(中心节点)用于随时接收路由节点发送的路由信息,多个主节点(路由节点)用于定时向中心节点发送其相邻的路由信息。所有的路由节点启动一个随机定时器,每隔随机的时间就会发送一次广播,获得其相邻节点的信息,然后发送给中心节点,中心节点收到信息帧之后,构建路由表。这种方法构建的路由表信息更新速度更快,应用更灵活。

2.3 数据传输路径

根据“一全多局”路由表,以一种组网方式为例,截取部分全局路由表信息如表2所列。例如从中心节点传递数据给路由节点4(1到4),首先可以快速定位到 ID等于4的位置,并获得其父链表中的一个父节点ID为2,再定位到ID等于2的位置,并获得其父链表中一个父节点ID为6,然后定位到ID等于6的位置,得到其父节点1,1为中心节点,所以其路径为1—6—2—4。由于定位在数组中,省略遍历路由表的时间,加快路径确定的速度。另外,从表2中可以看出,4节点所在的层次为3,说明1—6—2—4为最短跳变,从而证明全局路由表设计的准确性。

2.4 二次携带信息广播协议

路由表负责记录整个系统的网络拓扑结构,控制数据帧传输的路线,因此路由表的完整性和准确性关系到数据传输速度和协议运行的效率。而广播作为路由表的生成基础,直接影响路由表的完整性和准确性。

本文提出一种二次携带信息广播协议,来提高回应节点的完整性。

二次携带信息广播:源节点首先发送一次广播命令并启动一个广播定时器,收到广播命令的节点,按照防碰撞算法进行广播命令的回应源节点在广播定时器超时之后,将收到的回应信息节点地址放入到第二次广播命令帧中,进行第二次携带信息广播,收到该广播命令的目标节点首先在广播命令帧中查找自己的地址,如果找到,则不进行广播回应,否则按照防碰撞算法进行广播回应。二次携带信息广播的过程如图2所示。


按照二次携带信息广播的过程,其广播命令帧的格式如下:


根据二次携带信息广播的原理和过程,设计如图3所示的流程。因为广播处在协议层次中的链路层,因此,此图的左半部分表示链路层程序流程,右半部分为二次携带信息广播的程序流程。


3 协议层次结构

协议划分的5层从底层到高层依次是物理层、链路层、网络层、解析层和应用层。每层负责解析自身层次数据帧,对其他层的数据格式不可见。各层的层次说明如表3所列。


根据以上5层结构中各层不同的功能,协议数据传输的过程如图4所示,可以得出,在源节点到目标节点数据流过5层,然而在中间路由节点,只需要经过协议的底3层,即中间路由节点对传输的数据是不可见的。


各个协议层的功能如下:

①物理层是协议层中的最底层,负责数据传输之前监测信道是否空闲,防止数据碰撞的发生,以便保证点对点数据传输的准确性。

②链路层主要在相邻节点间实现数据准确无误的传输,使上层不用担心帧丢失、干扰和错误等问题,向上层提供准确的数据包。

③协议网络层主要提供数据传输的路径,使数据能够按照最短路径完成传输,并向上层提供简单灵活、无连接、尽最大努力交付的数据服务。网络层服务质量关系到数据包传输的速度和网络的稳健性,是分层传递的关键技术。

当处理节点不可达信息回传时,可能会出现死循环现象,因此本文规定:如果数据帧向下层节点传输的过程中出现不可达节点,则把节点不可达信息返回给中心节点,以便中心节点为完成数据帧传输做出进一步处理;但是,如果数据帧向上层节点传输的过程中出现不可达信息,则直接丢弃数据帧,等待中心节点超时,中心节点超时没有收到回应信息,就会重传,重传超时会更新路由表或选择其他线路完成数据的传输。

④解析层主要为应用层提供一个统一的接口,应用层可以通过该接口,完成命令帧的封装和发送。除此之外,解析层将整个网络拓扑结构放在Linux内核内存空间,为了快速响应应用层对拓扑网络的请求命令,为应用层访问路由表信息提供一组路由相关的命令接口。

⑤应用层相当于用户在协议的基础上,通过调用解析层提供的接口,完成对终端节点的检测和控制。开发人员只要了解相关的接口和需要实现的功能,即使不懂协议,也可以完成程序开发。

4 系统测试

全局路由表是整个协议的核心内容,它的准确性是整个系统是否能够正常、快速运行的关键。因此,可以通过部署不同网络结构、比较网络结构与路由表记录的结构,进而验证协议路由表映射的准确性。本文设计单层、双层交叉网络结构,对协议全局路由表进行层次性测试,通过开发板输出的全局路由表结构与实际路由节点部署对比,验证各种层次结构路由协议运行的准确性。

路由表单层测试结构设计如图5(a)所示,单层模式下开发板输出全局路由表测试结果如图5(b)所示。从输出结果可以看出,ID为01的节点层次为0,父节点为-1,说明该节点是中心节点,其余节点层次都为1且父节点都只有01,从而可以证明,全局拓扑网络为以01节点为中心的单层结构。此结论与图 5(a)中的单层结构图相符,证明了协议单层结构中运行的准确性和全局路由表的完整性。


在实际环境部署节点的过程中,节点路径不可能都是简单的无交叉分支结构,其分支必定存在一定程度的交叉。因此,本文设计了双父节点双层结构测试模式,其整体节点部署如图6(a)所示,图6(b)为该模式下节点组网完成后的全局路由表。从输出的结果可以看出,第二次路由节点包括09、0C和0D,09有两个父节点0B和0E,0C和0D分别是0B和0E的子节点,0B和0E位于第一层,其父节点为01。其结果显示与实际路由分布一致,从而证明,在双父节点双层结构模式下协议运行正确。


结语

本文通过设计一种远距离无线传输协议,实现了基于CC1101无线芯片的远距离、大面积范围的数据传输。首先构建了协议的整体构架,然后设计了记录网络结构的路由信息表并根据数据传输过程对协议进行层次划分,最后详细分析了协议在各个协议层间的工作过程及协议原理。此协议弥补了CC1101芯片针对远距离无线传输协议的不足,可应用于工农业现场数据的采集以及监控等领域。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
定时器CTC模式的测试