基于ZigBee无线通信网络的指纹考勤网络设计
一、整体方案设计
(一)星型ZigBee无线通信网络方案
在指纹识别过程中,指纹终端产生的数据是很少的,通常为几十个字节,因此对通信系统的带宽要求较低。ZigBee可实现250kbps的,通信距离一般介于10—100m间,以及低成本、高容量使其成为恰当的选择。
在ZigBee无线通信网络中设备单元有3种:协调器、路由器和终端。在本文中,我们组建包括一个协调器、多个终端的小型ZigBee网络。协调器通过串口与上位机(或另一网络端)相连{zigBee终端接到指纹识别模块,并配合液晶扩展板实现对IDWD5002模块的控制。指纹考勤结果的各信息在上位机管理软件中显示。图1为系统方案。
图1 指纹考勤网络设计方案
在网络中需要使用的模块有:ZigBee无线网络模块和指纹识别模块。
Zi gBee无线通信模块选择为RF一2430。RF一2430提供SPI和UART与外部通信,其中UART可高达115.2kbps。指纹识别模块选择为IDWD5002,其通讯接口为RS232。该模块作为从设备,由主设备发送相关命令对其进行控制,可调节安全等级、指纹特征数据的读/写和1:N识别及1:l验证等。
使用ZigBee无线通信模块配套的液晶扩展板,通过RS232与指纹识别模块IDWD5002相连接。
二、指纹考勤网络方案实现
在网络软件开发中,使用的是IAR7.3OB平台,ZigBee网络协议为Ziggee2006协议栈。
在协议安装完成后,路径C:\Texas Instrument\zstack一1.4.3—1.21\P roject\zstack\utilities下有的SerialApp工程实现了简单的无线数据传输功能。全双工通信和流量控制,在数据发送超时或丢包时,具有数据重发功能。因此,在此工程基础上修改,可以实现需要的ZigBee网络。
(一)配置网络参数。
在本文中需要构建的是一个一层的星型网络, 首先是设定网络的类型。在nwk—globals.h文件中,STACK PROFILE ID 的定义就是网络的类型, 将其定义为GENERIC STAR;最大网络深度MAX NODE DEPTH改为t。网络中最大设备数是由NwK—MAX DEVICE—LIST确定的,而且通常都会留有一定的余量,将其改为需要的数量。在文件nwk~globals.C中,数组CskipRtrs和数组CskipChldrn确定网络的结构,将其改为需要的值。同时,在f8wConfig.cfg中设定信道、PAN_ID、绑定表最大记录数和单个记录绑定族ID最大数,并加入REFLECTOR编译标志。
(二)主体程序设计。
对于给定的SerialApp.c中,主体的框架已经有了基本的轮廓;同时在文件0SAL—SerialApp.c中任务初始化合事件添加都已经完成。我们通过对SerialApp.C和其头文件的添加和修改就可以完成程序。网络中的数据通信时通过命令来识别发送目的地的。’这样可以不必注意终端网络地址变动,而实现数据的通信。
1.设备绑定实现。
在ZigBee2006协议中,数据通信是基于命令绑定方式实现的。绑定允许应用层发送信息 需要带目的地址,APS层确定目的地址从它的绑定表格中,然后在信息前端加一h这个目的地址或组。在设备绑定中有多种绑定方式,如源绑定等。本文中采用的是源绑定方式, 这需要在编译选项中加入REFLECTOR。绑定过程是由用户终端发起的。首先终端向协调器发送描述符匹配请求,协调器接到描述符匹配请求后,在ZDO消息处理函数中给命令输出列表中添加输出命令,并初始化该命令对应的管理数据单元。终端接到匹配响应后完成命令绑定。接着向协调器发送带有绑定命令的数据帧到协调器,协调器接收到绑定命令数据帧后,重复上面的操作。这样就完成了终端和协调器的双向绑定,其过程如图2所示。当终端接收到描述符匹配请求后,向协调器发送数据帧并传送到上位机,通知终端加入网络。
图2终端和协调器绑定过程
2.程序实现。
在本文中阐述的网络是单层的星型数据网络,需要为每个加入网络的终端分配资源。在SerialApp.C中添加数据接收序列号数组和发送序列号数组,数据接收存储结构体和数据发送结构体,修改接收和发送族数组。
协调器从串口接收到上位机传来的数据,必须根据数据中包含的命令发送到对应的终端。根据约定的数据帧格式,从数据帧中提取命令并赋给当前发送终端参数。当数据帧接收完毕,启动OTA发送任务将接收到的数据帧以绑定的方式发送;在接收到确认消息后继续发送剩余的数据。如果上位机是连续发送数据,则还需要一个接收存储结构体,使得已经接收到的数据能完整的发送给终端。对于数据的接收就相对发送就简单得多了。指纹识别模块向ZigBee终端发送的数据通常都是很小的,为几 卜个字节。因此协调器接收到数据后,可直接通过串口发送到上位机。
相对于协调器,用户终端是一个精简的ZigBee网络单元。在指纹考勤网络中,ZigBee终端有两个主要功能。其?,完成数据的通信:其二,实现对指纹识别模块的控制。由于指纹模板比较大,这就需要对从协调器接收的数据整合成一个完整的数据包。它包括指纹识别的命令包和数据包。上位机将指纹模板分割成几个数据帧发送,这样是为了适应协调器串口接收要求。因此,在终端接收数据时,就必须将原来完整的数据恢复,然后发送到指纹模块。指纹模块实现指纹识别需要外部发送指令进行控制。在ZigBee终端的液晶扩展板上有4个按键可用于对指纹模块的控制。在终端的程序中加入对按键的响应和指纹模块响应处理就可实现对IDWD5002指纹模块的控制。最后在程序中将指纹识别模块识别结果打包发送到协调器,至此完成Zi gBee终端的程序设计。
(三)IDM)5002指纹识别模块控制。
IDWD5002指纹识别模块与zi ee终端液晶扩展板连接后,通过按下上面的按键,实现对其控制。从按键按下后,指纹采集时间约3秒,这可以通过指纹模块进行更改。在指纹采集的过程中,光学采集仪会有紫色背景光。登记手指按下后,紫光消失。这时可以在上位机上看到识别结果。
三、调试和实际测试
在调试时需要注意对上位机通信速率进行控制。虽然ZigBee在2.4G时理论上可以达到250kbps,但是协调器从串口接收数据到收到终端确认返回是需要一段时间的。因此上位机发送数据时需要给定一个间隔的。第二,上位机发送数据必须是在协调器和终端绑定完成后才能进行。
首先运行上位机管理程序,接着给协调器加上电源,最后分别给zigBee终端和指纹识别模块加上电源。在ZigBee终端绑定结束后,从上位机管理程序下载指纹模板数据到指纹识别模块。这样就可以进行指纹考勤了。实验过程和结果如图3、4所示。
图3 上位机管理程序界面:下拉列表框空位没有zigBee终端接入网络
图4指纹识别结果
对比图3和图4:在设备列表中可以看到新加入了编号为1020的ZigBee终端;指纹识别结果为学号3的出勤为是。
四、结论
通过在成都无线龙开发的ZigBee模块、液晶扩展板和艾德沃德的IDWD5002指纹识别模块的应用,基于TI的ZigBee2006协议栈zstack的程序开发,实现了无限ZigBee指纹考勤网络。它通过从上位机下载已注册的指纹模板到指纹识别模块中,再将指纹识别的结果发送到上位机,完成整个指纹考的勤。整个网络系统具有很大的使用价值。