3 无线传感网络接入互联网络的网关模式分析
本文所提出的无线传感网络接入Internet网的网关接入模式的基本构架如图2所示。
在此基本结构模式中,我们主要对数据从ZigBee进入网关以及数据从网关到互联网进行分析。在此,数据由ZigBee进入网关采用串行传输的通信方式。ZigBee各个节点把收集的数据送到协调器,在经由协调器交给应用层,应用层通过调用串口API发到网关。网关将Internet发送来的数据进行解封装通过串口交给协调器,协调器再将数据封装,加上ZigBee的短地址发送出去。这样就实现了从ZigBee到网关的双向数据传输。网关到互联网的传输在此文中采用了以太网口传输,客户端与服务器模式的网络通信结构,并用Windows Socket网络编程实现,这样就完成了从网关到互联网的数据传输。因此,在这里我们通过此网关把基于ZigBee的无线传感网络与互联网连接起来,从而使得可以通过互联网时时控制物理世界,可以根据我们的需要对所有的节点进行控制及管理。
图2 ZigBee无线传感器网络与Internet互联结构模型
3.1 ZigBee模块与互联网关的通信模式
对于星形的ZigBee网络拓扑结构,所有的节点都跟协调器交互,因此要实现ZigBee网络与网关的通信,可以通过协调器跟网关通信。在本文中采用了协调器与网关通过串口进行连接。串口通信具有成本低、传输质量可靠、全双工等特点,满足嵌入式简化设备的需求,因此网关的ZigBee网络通信模块采用串口实现。
在协调器和网关之间我们采用异步串口通信方式,并且双方采用中断方式进行数据的发送和接收。由发送端向接收端发送请求是否可以发送数据命令,之后接收端收到请求命令后给发送端返回一个命令数据,发送端根据接收端发回的命令进行判断是否可以现在就开始传输数据。在每一次数据传输完毕之后,发送端都要进行新一轮的上述过程进行下一个数据包的传输,知道所有的数据传输完毕即可。
ZigBee协调器接收到其他节点发来的数据之后,就会产生一个事件,告知应用层,应用层调用相关函数进行接收,该函数返回一个类型的结构体。该结构体包括了源地址、网络地址、地址类型等相关信息。这样,在传输过程采用中断方式,当接收到一个字节后就会进入中断,从而调用接收函数进行所有数据的接收工作。而当网关接收到因特网传来的数据之后就按照所需数据的格式进行打包,保存在事先设置好的变量里。当检测到此变量非空的时候,就会跟协调器交互后发送数据。当协调器中的任务检测到有数据来的时候,就会和协调器交互后以判断对方是否真的要发送数据,然后就进行数据的接收。这样就简单的完成了协调器和网关之间的通信,完成了数据的交换,实现了从ZigBee的无线传感器网络到网关的通信。
3.2 物联网与Internet的网关接入方式
本研究报告主要采用以太网口,客户端与服务器结构的网络通信,并把网关作为服务器。采用Windows Socket编程来实现此网络传输。在此我们使用套接字I/O模型的Select模型,这样有利于对应用程序通过异步方式同时对一个或多个套接字通信加以管理。如图3所示,描述了Select模型的工作方式。在调用recv()函数接收数据之前,先调用select()函数,如果此时没有可读数据,select()函数就先阻塞在这里。当系统有了可读数据,该函数返回。这个时候应用程序就可以调用recv()函数接收数据了。网络编程选择好后就在下面具体分析客户端与服务器的相连接。
图3 Select模型
如图4所示表示了服务器与客户端的通信模型。首先分析下套接字的可读可写性。
图4 服务器与客户端通信模型
首先要初始化套接字集合,然后将套接字分配给参与操作的套接字集合之后通过调用select函数等待函数的返回,若成功返回后则对每个套接字集合进行检查,若是宏值为ture则说明此套接字可读,最后就可以通过Socket API进行数据接收和发送。接下来分析下网关(服务器)上应用流程。Select函数监听套接字是否在可读集合中,若存在,则说明客户端有连接请求,调用accept()函数接受该客户端的请求,并将新建接受套接字加入服务器套接字集合然后便利服务器套接字集合分别判断每个套接字是否可读可写。若可读,则调用输入函数读入数据,若可写,则调用输出函数发送数据。对于客户端,首先要判断是否可写套接字,若是存在就调用connect()函数请求连接,之后检查每一个套接字的可读可写性。若可读,则调用输入函数读入数据,若可写,则调用输出函数发送数据。这样就在服务器客户端两端分别完成了数据的传输,用此模式的网络编程实现了网关与PC的有效数据传输。也就是实现了网关到Internet的传输。通过此网关可以实现ZigBee无线传感器网络与因特网的互联,实现物联网系统在更广泛领域里的拓展应用。