1 网络体系
LED无线传感网络的网络体系是网络层实现路由的基础,包括节点组成及网络拓扑结构。
1.1 LED路灯传感网络节点的组成
LED路灯网络由间隔均匀的若干盏路灯组成,每一盏LED路灯均为网络的一个通信节点,用来构建无线传感网络。图1所示,为构建无线传感网络LED路灯节点的组成,除了照明部分的电路外,还附加了对LED电流的采样、LED发光亮度的检测、以及对LED发光亮度的PWM控制等电路。每一盏LED路灯既是传感器节点也是网络路由节点;每一个节点包含一个微控制器(MCU,如cc2530),都具有射频通信功能,既能发送信号也能接收信号;每一个节点具有32bit(位)的唯一ID号。通过在物理层和MAC层采用IEEE 802.15.4协议标准,结合网络层与应用层的协议,所有这些节点有机地组合在一起,便构成了LED路灯无线传感网络。由于现有的一些网络层与应用层协议如Zigbee、RF4CE等并不是很适合LED路灯传感网络应用,因此,需要重新设计网络层与应用层协议。

图1 LED路灯节点的组成
1.2 网络拓扑
根据LED路灯的分布规律,每盏LED路灯作为网络节点构成无线通信网络,其拓扑结构如图2所示,(a)是信号逐点(单跳)接力传送拓扑结构图,(b)是信号隔点(双跳)接力传送拓扑结构图。为便于下文网络应用协议的设计与讨论,作出如下定义:
(1)所有节点可分为2类,即LED路灯节点(简称LED节点,如a1 a2 … an , b1 b2 … bn)和路灯控制器节点(简称控制节点,如a,b);
(2)相邻节点之间的距离均为L,每个节点的无线信号覆盖半径大于等于2L;
(3)根据节点的相对位置,节点可分为前驱节点与后继节点,离控制器近的是前趋节点,离控制器远的是后继节点。例如a1是a2前驱节点,a3是a2后继节点;同理b2是b4前驱节点,b6是b4后继节点,以此类推。

图2 网络拓扑结构示意图
(4)控制节点与LED节点之间,LED节点相互之间,只要无线信号可以覆盖到,都可以相互通信,不需要设基站或专门的路由协调装置。
(5)每个节点的32bit唯一ID号由两部分组成,分别为网络ID和节点地址(编号),均为16bit。同一路灯网络所有节点的网络ID相同;从控制节点开始,节点地址由小到大顺序编排。
2 网络协议
LED路灯传感网络协议包括协议包的定义与路由协议的定义,其设计目标是简单、实用,易实现。
2.1 网络协议包格式
LED路灯传感网络协议传输的信息包共有3种类型,分别为命令包、参数包以及应答确认包。

图3 网络协议包格式
(1)命令包
图3(a)所示,为控制器节点对LED路灯节点下发的命令包格式。命令有三种类型:针对整个网络所有LED节点的广播命令、针对部分LED节点的群组命令以及针对单个LED节点的单点命令。
命令包各字段定义如下:
包类型:为1;
目的地址:为指定LED节点的地址;
包序列号:为向指定节点发送的包编号;
接力模式:为1时,表示单跳模式;为2时,表示双跳模式偶链;为3时,表示双跳模式奇链;
命令字段的定义方法见表1,表1只列出了部分命令,实际中可以根据需要增加命令;
表1 命令包命令字段定义

命令参数字段:用来表示调光的亮度,数值越小LED发光亮度越低,耗电越少,数值为 0时表示关灯;
跳数:命令传送到目的地址所需经过的节点数,最大值为路灯网络所有LED节点的数量。传送命令包时,每经转发一次则跳数减1,当跳数值为0时,命令包不再被转发。
(2)参数包
图3(b)所示,为LED路灯网络节点上传的参数包格式。控制节点可采用定时轮询或即时查询方式获取网络内各LED节点的状态参数,如电流值、发光亮度值等,各LED节点只有在接到读取参数的命令后才会向控制节点发送参数包。参数包各字段定义如下:
包类型:为2;
源地址:为上传参数LED节点的地址;
包序列号:为上传参数LED节点发出的参数包编号;
接力模式:由于只有在节点收到读取状态参数命令后才会发送参数包,因此,参数包的接力模式由命令包的接力模式确定;
状态标志:为0,表示对应LED节点无故障;为1,表示对应节点有故障;为2,表示对应节点及后继节点有故障;
状态参数1-3:为LED节点的有关参数,如电流值、电压值以及LED的发光亮度值等。
(3)应答确认包
图3(c)所示,为应答确认包格式。为了实现可靠传输,每个节点在收到命令包或参数包后需要发送应答确认信息包。如果信息包的发送(转发)方在设定的时间内没有收到应答确认包,则会启动对该信息包的重新发送。应答确认包各字段的数值定义如下:
包类型:为3;
节点地址:发出确认应答包节点的地址。
确认类型:收到信息包的包类型;
确认号:为节点收到信息包的包序列号;
2.2 网络路由协议LED路灯传感网络路由协议的核心是各节点对信息包的转发机制。由于每一个节点的信号覆盖范围有限,其信息只能向邻近的节点发送,如要将信息送往远处节点则只能依赖中间节点的多次转发。根据前述1.2定义的条件,节点转发信息包可以分为三种模式,即单跳接力模式,双跳接力模式和变跳接力模式,各LED节点将根据信息包中接力模式字段的定义进行选择。
2.2.1 单跳接力模式
图2(a)所示,为单跳接力模式的拓扑结构图。它是一个比较简单的转发模式,要求每个节点无线信号覆盖的半径范围大于节点间距L即可,信息包只需往邻近的前驱节点或后继节点转发。在这种模式下,节点处理收到信息包的方法如下:
①节点接收一个命令包(如图3(a))后,向前驱节点发送接收确认应答包;将命令包中的跳数减1;比较节点自身地址(NA)与命令包中目标地址的大小,相等则执行包中的命令且无须转发命令包,不等则向后继节点转发该包;如果是广播命令(目标地址值为0xffff),既在本节点执行该命令同时也向后继节点转发该命令包。转发时的路由地址为:NA+1。当命令包传送到网络中的最后一个LED节点时,跳数减1后将为0,包将不再被转发。
②节点接收到参数包(如图3(b))后,只需向后继节点发送接收确认包和向前驱节点转发,转发参数包的路由地址为:NA-1。
③节点收到命令包或参数包后,必须发送接收确认包(如图3(c)),当收到命令包时,确认类型值为1,发送应答确认包的路由地址为NA-1;当收到参数包时确认类型值为2, 发送应答确认包的路由地址为NA+1。