机器人

一种无线传感器网络自组网协议的研究与实现

1、引言 

无线传感器网络是由一些功耗低、体积小的传感器节点,以无线通讯方式自组成一个网络。这些分散的节点能够协作地实施监测、感知和采集各种环境对象的信息,具有非常广阔的应用前景[1]。近年来,无线传感器网络的研究进展十分迅速,取得了较为丰富的研究成果。自组织算法是无线传感器网络的核心技术之一,通过自组织算法自动生成的良好的网络拓扑结构,能够提高路由协议和MAC协议的效率,可为数据融合、时间同步和目标定位等很多方面奠定基础,也有利于节省节点的能量以延长网络的生存期。国内外研究者们从ad hoc网络借鉴了宝贵经验,提出了形式多样、侧重点不同的自组织算法。

文献[2]给出一种传统的洪泛算法(Flooding),也是最早、最简单的路由协议。节点以广播的形式发送消息,接收到消息的节点再以广播形式转发数据包给所有的邻节点,这个过程重复执行,直到数据包到达目的地或者达到预先设定的最大跳数。文献[3]提出了最具代表性的层次型自组织算法(LEACH,low energy adaptive clustering hierarchy)。LEACH是MIT的Heinzelman等人为无线传感器网络设计的低功耗自适应聚类路由算法。主要通过随机选择聚类首领,平均分摊中继通信业务来实现。文献[4]给出以数据为中心的自组织算法SPIN(Sensor Protocols for Information Via Negotiation)。它的主要思想是通过高层的描述方式——元数据来命名传感数据。在发送真实的数据之前,传感器节点广播采集数据的描述信息元数据,当有相应的请求时,才有目的地发送数据信息。这些研究均在无线传感器网络的自组织算法上取得进展,但是,Flooding存在消息“内爆”和“重叠”的缺陷。LEACH的动态分簇带来了拓扑变换和大量广播这样的额外开销。SPIN中的元数据没有统一的形式,SPIN的拓扑变化是局部性的,因此不适用于需要高可靠性的应用。还有很多相关算法停留在理论研究阶段。这些研究均在无线传感器网络的自组织算法上取得进展,但没有考虑实际应用的诸多因素,如不易实现,算法的收敛性,如何减小外界因素对通讯的干扰,以及节点失效后如何追加等。

针对目前无线传感器网络中自组织算法的研究现状,本文首先提出一种简单易实现的自组织协议,选用MSP430F149单片机作为处理器,设计了微型传感器节点,并实现了一种低功耗无线网络。节点使用提出的协议能自动生成多级网状网,同时按能量优先的原则确定数据的传输路径并包含多条备用路径。开发的上位机处理软件可自动显示网络的拓扑结构,反映传感器节点的状态突变,并实时显示网络数据传输的路径,还可远程控制网络内传感器节点。当网络拓扑结构发生变化,上位机软件也会及时反映出来。采用智能控制策略大大降低了系统功耗。

2、自组织协议

在协议中,通过定义数据包的格式和关键字来实现节点的自组织。数据包中包含一个关键字和多个字节的数据,只要根据数据包的格式填入相应信息,就可实现自组织功能。多个字节中包括了节点自身信息、数据包跳数、数据路由等信息;关键字表示不同性质的包,区分各种情况的数据,提升网络的通讯能力。只需要改变数据包中的标志位,就可以对信息进行加密。

2.1 协议格式

自组织协议格式如下表示。

其中Pre表示前导码,这些字符杂波不容易产生,通过测试和试验发现,噪声中不容易产生像0x55和0xAA非常有规律的信号;Key表示关键字,来区分各种情况下的数据,接收节点会根据这些关键字分别进入不同的数据处理单元;From表示源地址,是发送数据的节点自身信息;Final表示数据的目标地址;Data表示有效数据,这些数据随着字符Key的不同采用不同的格式,可携带不同的信息;Check表示检验位,可避免接收错误的数据包;Flag表示数据包的结束标志位。

根据协议格式中的Key可以将节点通讯时捎带的数据包分为自组网信息、环境突变信息、上位机的控制命令、广播信息等。例如下给出了节点在发送状态突变时的数据包格式。

其中0x55和0xAA为数据前导码,0xFF为传感器节点在感测到其状态突变时向外发送数据的关键字,0x11表示发送节点的地址,0x00为数据包要到达的目标地址,0x01表示数据包在网络传输中的跳数,接着的0x01表示节点在当前网络中的级别,0x15表示节点当时采集的温度,0x20表示节点当时采集的电源电压值,0x03表示节点的状态量, 0x00…0x00为1