文献标识码:A
DOI:10.16157/j.issn.0258-7998.2016.03.016
中文引用格式:董坤,陈波,赵中全. 基于Contiki和有源RFID的设备管理系统的实现[J].电子技术应用,2016,42(3):57-60.
英文引用格式:Dong Kun,Chen Bo,Zhao Zhongquan. Implementation of equipment management system based on Contiki OS and active RFID[J].Application of Electronic Technique,2016,42(3):57-60.
0 引言
随着物联网技术的不断发展,物联网成为了继互联网之后网络技术发展的又一次高潮,物联网技术正在实现网络技术的最后一公里——人与物的连接、物与物的连接。在物联网发展的技术框架下又有WSN和RFID两种主要技术,并出现了许多将这两种技术融合的方式[1],通过结合两种技术的优点,可以提高融合系统在特定应用下的功能[2]。在众多应用领域中,实现人对大量物品管理和监测是非常重要的一种应用需求。本文采用WSN节点和RFID阅读器融合的方式[1]实现了一种设备管理系统,将Contiki无线传感器网络协议栈和国家军用2.45G空中接口协议[6](国军标)相融合,实现了具有RFID标签收集功能的网络节点,以及基于LWIP和Contiki操作系统的边缘路由器和基于国军标的RFID标签。
1 系统总体设计
该系统分为边缘路由器、阅读器节点、RFID标签三大部分,如图1所示。
边缘路由器有自己对外的IPv4地址和对内部网的IPv6地址,内部网络是以边缘路由器为根的簇状网络,边缘路由器负责IPv4协议到IPv6协议的转换以及数据的汇聚和传输。内部IPv6簇状网络是一个多跳网络,阅读器节点可以作为中继节点或者末端节点。阅读器节点和标签之间的通信遵循国军标。用户通过Web中间件访问本系统。
2 边缘路由器设计
2.1 硬件设计和Contiki操作系统的移植
边缘路由器硬件结构如图2所示,分为三部分:LPC4337的主处理器、以太网控制器和支持802.15.4的CC2520射频模块。本系统使用eclipse和gcc编译器搭建的开发环境,边缘路由器、阅读器节点和RFID标签三者的开发可以同时在Contiki源码目录下进行。由于LPC4337处理器并没有得到Contiki系统的支持,所以必须将Contiki系统移植到边缘路由器平台。Contiki系统组成如图3。
Contiki系统移植[4]需要准备启动文件、链接脚本、底层驱动库文件和用于工程管理的makefile文件。图4所示为移植系统的存储布局。在FLASH中,从开始依次是中断向量表、代码段、只读数据段、初始化数据段。启动程序将初始化数据段搬移到SRAM1的相应位置,SRAM1开始部分空间保留给栈,将未初始化数据段BSS的存储内容清0。所有程序段的起始地址在链接脚本中指定。
2.2 LWIP协议栈和Contiki协议栈的融合
边缘路由器的主要功能是完成IPv4到IPv6的协议转换。本系统使用LWIP协议栈接入外界网络,Contiki协议栈运行IPv6,使用代理服务器的方式完成协议转换。
图5所示为边缘路由器协议栈,右边部分为Contiki协议栈,左边部分为LWIP协议栈。Contiki协议栈的组成由下往上依次为802.15.4射频物理层、Contiki radio duty cycle层、802.15.4链路层、6LoWPAN适配层、IP层(IPv6)、TCP/UDP/ICMPv6层,最后是上层基于ICMPv6的RPL路由协议和其他应用。LWIP协议栈是支持以太网链路层的标准TCP/IP协议栈。Contiki radio duty cycle层是Contiki操作系统中为了实现节点的低功耗而加入的一层,由于边缘路由器需要较高的处理能力并且是电源供电,所以边缘路由器协议中的这一层是关闭的。6LoWPAN[5]适配层完成IPv6包头的压缩和解压以及数据包的分片和重组。
应用层的代理服务器负责协议的转换。客户与代理服务器通过TCP连接,代理服务器与网络中的节点在约定的端口上使用UDP通信。用户连接代理服务器,使用获取网络节点命令获取网络中可达节点的IP地址,随后用户可以发起对指定节点的访问。代理服务器接收用户带有指定访问节点IP地址的数据,根据目的节点地址进行数据的转发。用户与代理服务器使用本系统定义的命令格式。如图6所示命令格式,服务码字段一个字节,用来表示当前服务,不同服务期内的命令不能交叠;类型字段一个字节,表示当前的命令类型,不同的命令类型会决定在传输地址之后是否携带附加的命令;地址个数表示在命令扩展部分开始有几个地址。
2.3 边缘路由器的工作过程
边缘路由器和阅读器节点之间通过RPL协议组网,多个Contiki线程通过消息传递的方式相互协作构成边缘路由器代理服务器。使用LWIP的raw API和lwtcpserver_process线程构成代理服务器的数据接收和初步解析部分。udp_server_process构成了代理服务器的数据解析与分发部分。边缘路由器和节点之间通过udp通信,udp_server_process作为网络中唯一的udp服务器运行在边缘路由器中。工作过程如图7所示。只有当边缘路由器和节点组网完成后用户才能通过代理服务器获得关于网络节点的有效数据。当udp_server_process接收到网络汇聚到的数据包后,通过lwtcpserver_process将数据返回给访问客户端。lwip_process线程用来维持LWIP的正常工作。
3 阅读器节点的设计
阅读器节点硬件使用CC2538 SOC芯片,更方便电池供电和安装部署。Contiki提供了对CC2538的支持,所以设计节点时不需要移植Contiki系统。节点连接了无线传感器网络和RFID系统。在无线传感器网络系统中,节点作为末端节点或者中继节点,在RFID系统中,节点是RFID阅读器,所以阅读器节点设计的主要工作是将RFID协议栈和Contiki协议栈进行融合。本系统中使用的RFID国军标协议栈,由于设备管理系统中涉及的管理参数较少,系统中删减了国军标中文件传输处理部分,只保留标签盘点和基本控制参数的传输部分。RFID系统最关键的部分就是标签的盘点,本系统中在将国军标协议栈与Contiki协议栈融合的同时,在Contiki系统下实现了RFID国军标的二进制树防碰撞算法和收集算法[6]。
3.1 国军标协议栈和Contiki协议栈的融合
阅读器节点协议栈如图8所示,第二层的GJB-contikirdc层一方面将数据包传递到上层,另一方面在国军标协议没有被触发时运行Contiki的duty cycle机制以降低功耗。GJBmac层完成国军标链路层的组包和解包。GJBnetwork层根据不同类型的国军标协议包完成组包和上层多路转发。由边缘路由器发来的阅读器控制命令通过Contiki协议栈,在上层应用中解析,执行相应的国军标协议动作,唤醒标签或向已收集到的标签发送控制命令。阅读器节点命令执行的结果将会回复给边缘路由器。
图9所示为边缘路由器发给阅读器节点的请求盘点命令和盘点完成之后节点向边缘路由器返回的命令。当边缘路由器收到用户客户端指令时,客户端指令已经封装了完整的控制指令。边缘路由器只要确定目的节点地址,复制转发该盘点指令即可。当阅读器节点向边缘路由器返回盘点结果时,由于协议支持的无线数据包最大只有128字节,为避免分包,盘点结果包中规定TAGID数目不超过4个。盘点结果包会多次发送,直到剩余标签数为0。当盘点的标签ID传输结束后,边缘路由器再将整合后的结果返回给用户客户端。
3.2 阅读器节点的工作过程
阅读器节点和边缘路由器之间使用Contiki协议栈通过UDP通信。节点和边缘路由器在系统初始化时绑定指定端口,在系统通过RPL协议组网完成之后,通信就能够开始。
节点的主要工作是收到命令后执行收集标签动作,这是国军标协议的核心。节点的工作由四个线程协作完成,分别是udp_client_process(UDP客户端线程)、GJB_conframeprocess(国军标接入线程)、GJB_collectframeprocess(国军标标签收集线程)和GJB_Revprocess(国军标数据分发线程)。
如图10所示,当阅读器节点通过Contiki协议栈接收到命令数据时,向udp_client_process发送TCPIP_EVENT消息,该线程接收到消息执行指定的动作(主要功能在这里完成)。开始时的数据一定是盘点指令,此时向GJB_conframeprocess发送PROCESS_EVENT_CONNECT消息发起对标签的盘点。在盘点的过程中直接调用国军标协议栈的发送函数发送数据。国军标协议栈收到数据时向国军标分发线程发送PROCESS_EVENT_MSG消息,分发线程根据数据包的类型决定向接入线程或收集线程发送RPOCESS_EVENT_MSG消息。接入线程和收集线程就是以上述方式接收数据。通过盘点,阅读器节点获得标签信息生成标签对象。节点中有标签对象的收集队列和缓存队列,当缓存队列为空时,收集线程将收集到的标签对象同时加入到收集队列和缓存队列中,当下一次启动盘点时,若已经缓存标签则直接从缓存队列中获取标签。盘点过程结束时,收集线程向udp_client_process线程发送PROCESS_EVENT_RESPOND消息,udp服务器线程将收集队列的标签信息发送出去,并将收集队列中的标签对象刷入缓存队列中,缓存队列每十分钟清空一次。
4 标签
标签硬件使用CC2538单芯片。标签的设计是将Contiki协议栈完全替换为只有解包组包功能的一层,在其上实现国军标协议的标签状态机[6]。标签有唯一的64位ID号,该ID在部署系统前需要与所管理的设备绑定。当多个阅读器节点同时盘点标签时会出现冲突。本系统规定最多只有四个阅读器节点可以同时盘点标签,同时工作的不同阅读器节点分配不同的信道,当标签醒来监听就绪指令时,收到的就绪指令中指定标签的工作信道,标签被哪个阅读器节点唤醒就跳转到该阅读器指定的工作信道中继续工作,工作完成后恢复到原来的监听信道。
5 系统测试
在单纯的无线传感器网络中,每个节点需要周期性地传输数据以维持网络,并且传输的组网数据包都大于50字节。将RFID引入到网络末端,除了标签每秒苏醒1 ms监听,不需要周期性的传输组网信息。标签的工作取决于用户的访问,用户的访问并不是经常发生的。整个系统只有少部分节点需要组网,这就减少了一部分系统功耗。
6 结论
本文介绍了Contiki操作系统和有源RFID的融合过程,移植了Contiki系统到边缘路由器平台,重点说明了边缘路由器和阅读器节点的工作过程,最后介绍了标签和防冲突方法。所实现的系统具有拓扑结构简单,网络规模小,对节点处理能力要求低,功耗更低的特点。
参考文献
[1] 聂涛,陆阳,张鹏,等.RFID和WSN在物联网下协同机制的分析[J].计算机应用研究,2011,28(6):2006-2007.
[2] 李斌,李文峰.WSN和RFID技术的融合研究[J].计算机工程,2008,34(9):127-128.
[3] CULLER D.RPL:IPv6 routing protocol for low-power and lossy networks[S].IETF RFC6550.2012.
[4] 冀宇鑫,杨冬,秦雅娟,等.基于WSNs平台的Contiki通用移植方法研究[J].计算机技术发展,2012,22(11):135-136.
[5] SHELLY Z,BORMANN C.6LOWPAN:无线嵌入式物联网[M].北京:机械工业出版社,2015.
[6] GJB7377-2.2011.军用射频识别空中接口协议:2.45GHz参数[S].2011.