无线传感器网络WSN(Wireless Sensor Networks)是由大量传感器节点通过无线通信技术组成的自组织网络。WSN具有成本低、功耗低、灵活性高、可扩展等优点[1],在民用和军事领域都具有广泛的应用前景。特别是WSN接入到Internet已成为全新的研究热点。如果能够将WSN与Internet互联起来,则可以通过Internet远程访问和控制WSN,而且WSN也可以将信息传输给远端感兴趣的用户,不仅实现了网络远程监控、诊断和系统升级的功能,而且也促进了用户端共享更多的网络信息资源。而这也将进一步促进WSN在环境监测、医疗监护、城市交通管理、仓储管理、军事侦察等领域的应用。
1 无线传感器网络与Internet的互联方案分析
无线传感器网络具有以下特点:节点可供开发片上资源(如内存等)不多;部分应用情形下节点数量众多;节点可以静止也可以移动等。因此WSN与Internet的互联技术较之一般的设备连接Internet技术有更多的难点。随着技术的发展,提出了越来越多的方案,这些方案在不同的场合有不同的应用。综合起来可以分为以下几种。
(1)通过IPv6进行互联
在某些应用中,无线传感器网络应用中所需的节点数量非常多,如果每一个节点都分配一个IP地址,则需要的IP地址数量众多[2]。但实际应用中没有足够的IP资源可用。而IPv6是下一代网络协议,具有地址资源丰富,可以自动配置IP地址等优点,可以满足无线传感器网络节点对IP地址数量大的需求,所以在WSN互联Internet技术中使用IPv6协议成为一个研究方向。但是由于Internet还是基于IPv4的TCP/IP协议,所以采用IPv6的WSN与Internet互联需要进行地址转换[3],并且目前使用IPv6的WSN还处于实验网阶段。
(2)通过GSM/CDMA网络进行互联
许多WSN网络应用在偏远区域,那里除了移动通信网络设施外没有其他的通信基础设施,因此在这类区域中WSN互联Internet必须借助于移动通信网。移动通信网覆盖范围广,并且已过渡到3G CDMA网络,都已经能够连接到Internet。因此WSN通过移动通信网很容易连接到Internet。但通过移动通信网互联,要求WSN节点有较强的无线射频发射和接收功率,这将使WSN节点能耗大大增加,需要增加额外的射频硬件或发射天线。且须支持无线通信接口的相关协议。
(3)代理服务器结构
由于传感器节点片上资源太少,无法在传感器上完整实施与Internet互联的TCP/IP协议,因此在传感器网络与TCP/IP网络之间设置一个代理服务器是比较常用的方法。使用代理服务器的WSN与Internet互联网结构如图1所示。
代理服务器结构的缺点是,如果代理服务器失效,则整个传感器网络都无法接入到Internet。为了避免发生这种情况,可以再使用一个备份代理网关。
(4)直接实施TCP/IP协议
在传感器网络节点上实施TCP/IP协议,并与Internet直接互联是一种比较理想的方案。网络结构如图2所示。这种方案的优点是不需要通过代理网关就能够实现与Internet无缝连接,减少传输时延。但是考虑到传感器节点自身因素,这种方法大规模实施起来难度很大[5]。主要原因有:
①因为TCP/IP协议簇庞大,在传感器无法直接使用TCP/IP协议,只能根据网络互联要求实施实现互联功能的主要部分协议,这要求程序设计人开发出一套简化的TCP/IP协议组件。
②部分传感器网络应用于离城市较远的偏僻地区,这些地区没有连接到Internet的基础设施,因此即使传感器网络各节点实施了简化的TCP/IP协议组件,仍没有可连接的Internet接入点。
③对于数量众多的WSN网络,每个WSN节点都分配一个IP地址,则地址数量过于庞大,目前的IPv4无法满足要求。
④TCP协议是根据有线网络设计的,有线网络极少出现网络差错,数据包的丢失主要是由于网络发生拥塞。而无线网络与有线网络的最大不同是,无线网络极易发生高比特率错误,即由于无线链路的原因可能导致数据包连续丢失,这种情况会使TCP协议无法工作。因此TCP协议直接应用于无线网络,其效率极其低下。
由于上述原因,这种WSN网络与Internet的直接互联目前处于研究起步阶段,诸多问题还有待解决。
2 本系统采用的方案及设计
比较分析上述各种WSN与Internet互联的方案,考虑到传感器的硬件特点,结合目前技术发展的成熟度,本项目采用代理服务器结构来连接Internet,如图1所示。本结构的关键是代理服务器或网关完成的功能及系统设计。本系统中的代理网关主要完成两个功能。一是在传感器网络和Internet之间起协议转换作用。传感器网络中的节点并不直接和外部Internet的主机进行通信,所有节点和外部主机的通信都通过代理网关进行,同时外部主机想要查找某个传感器节点上的数据时,也是首先连接到代理网关,由代理网关进行后续处理。代理网关的另一个功能是作为传感器网络的特殊节点, 它可以周期性地主动访问并接收其他传感器节点的数据信息,并将这些信息存储起来。当外部客户端想要获得传感器网络中某个特定传感器节点的数据信息时,可以立即从代理网关中存储的信息中查找得到,从而加快获得信息的响应时间。很明显,WSN的内部各节点数据通信方法可以自由选择,完全可以采用已经成熟的Ad-hoc网络的各种路由技术。
代理网关节点设计如图3所示。传感器、无线收发器、单片机组成普通的WSN节点模块(图3的方框内部分)。AVR ATmegal128L单片机[6]是WSN节点的主控芯片,是节点数据通信的处理器。传感器起数据采集作用,采集数据经A/D转换连接到单片机。WSN节点之间的通信通过无线收发器nRF905进行。考虑到传感器节点通信过程的数据处理量较大,所以外接一个存储器来存储或暂存自己采集的或需要转发的其他节点传输过来的数据。WSN与Internet互联的代理网关则是在普通的WSN节点模块基础上,增加CS8900A以太网络控制器,可以连接到局域网,从而与Internet互联。同时代理网关节点通过MAX232连接到计算机。由于代理网关的数据通信处理量比普通的WSN节点要大得多,所以可以再增加一个RAM存储器。
3 互联协议实现
TCP/IP协议簇是使Internet中的计算机能互联通信的一组协议。这些协议协同工作,各自完成不同的功能,能够为用户提供多达几十种网络应用。在高级应用场合,操作系统中一般需要支持完整的TCP/IP协议簇,但在相对单一应用的场所,只需要实现某一种功能的工业应用领域,完整实现TCP/IP协议簇显得没有必要。首先是因为工业应用芯片没有足够多的硬件资源,其次是过多的不需要的功能会减慢系统响应速度。对于本项目的传感器网络与Internet的互联,管理人员仅需要传感器网络节点监测到的相关数据,一般通过交互式Web服务器就可以得到,所以只需要应用层实现HTTP协议就可以了,其他应用层程序都可以舍弃不予实现。
目前国际上许多嵌入式产品供应商都根据嵌入式产品所实现功能的需要,在TCP/IP协议套件的基础上进行简化,根据具体的应用提供不同的协议模块,保留基本的网络通信功能,在可移植性方面做了各具特色的改进。本项目对TCP/IP协议的精简参考了他们的做法[7],在协议程序代码的实现过程中,主要考虑了以下两点:
(1)精简代码。根据传感器网络互联Internet的应用要求,尽量简化TCP/IP协议簇,只实现基本的、必要的功能,使生成的二进制代码尽量精简,这样做能够显著提高系统与传感器网络的交互能力,能够适应传感器节点上有限的内存空间以及芯片处理速度。如图4所示,本系统实现的互联协议如图中的灰色方框中的协议所示,实现的是TCP/IP协议簇的一部分协议。
(2)强移植性。传感器的类型和型号众多。精简后的协议程序应尽量能够应用于不同类型的传感器元件。如果精简后的程序在一种类型的传感器上运行良好,而在另一种类型的传感上无法实现互联,需要重新进行复杂的软件开发工作,则大大增加开发的工作量。因此精简后代码的可移植性是非常重要的。这样,在对传感器节点进行升级或者更换时,除了与硬件直接相关的部分代码需要重新开发外,不需要对整个互联协议进行大的修改。
本项目精简后的互联协议组件称为sip,意义为一个小型(small)TCP/IP协议组件。在本文第4节的代理网关主处理程序中出现的sip就是本系统开发的简化互联协议组件。
4 代理网关主处理程序
代理网关实际上相当于一个协议转换程序。它能够接收WSN网络节点传输过来的数据信息,并将其按照TCP/IP协议的要求转换成合适的数据格式。如果得到返回给WSN网络节点的数据,则按照WSN的要求将其转换成适合于传感器节点传输的数据格式。代理网关的功能相对复杂,其硬件和软件设计在前面两节中已讨论过,这里只给出代理网关的主处理程序。
主处理程序的主要功能是通过简化的互联协议,实现与传感器节点、Ethernet网络接口的数据交互。因此在主处理程序的开始部分,首先对定时器、串口接口、Ethernet接口初始化。硬件初始化成功以后,开始启动简化的TCP/IP互联协议,接着对arp协议和应用程序进行初始化。初始化完成后,主处理程序将不停地进行查询,如果接收到新的数据包则发送给eth_send()函数进行处理,如果没有新数据包到达,则由sip_periodic()函数处理定时事件。主处理程序的部分程序代码如下。
void main(void)
{init _timer ; //用户自定义定时器初始化程序
init_serial ; //用户自定义串口初始化程序
init_8900a(); //Enternet接口初始化,需用户定义
sip_init(); //对简化的互联协议sip初始化
init_httpd ; //定义web应用程序
sip_arp_init();
while(1)
{sip_len=eth_reve;
if(sip_len==0) //无数据接收,开始定时轮询
{for(i=0;i
{sip_periodic(i);
if(sip_len>0)
{sip_arp_out();
eth_send();
}
}
}
else if(sip_len>0) //接收并处理数据
{sip_arp_ipin();
sip_len=sizeof(struct sip_eth_hdr);
sip_input();
if(sip_len>0)
{uip_arp_out();
eth_send();
}
}
}
简化后的互联协议栈的链路层部分由网络控制器CS8900A完成,网络层和传输层由单片机来处理。应用层则根据需要可以在单片机内完成,也可以由单片机转给用户或终端设备完成。除了WEB服务之外,尽管其他应用层服务像SMTP协议支持功能也可以根据需要编写相应的代码[8],但一般不需要添加额外太多的应用层服务。
本项目设计的无线传感器网络与Internet的互联系统,在实际中得到了成功应用。笔者下一步工作重点是在系统中增加支持通过无线局域网互联到Internet的功能,以使本系统能够应用于那些通过无线局域网互联到Internet的环境。