《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 微波|射頻 > 設(shè)計(jì)應(yīng)用 > 基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)
基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)
2016年電子技術(shù)應(yīng)用第3期
董 坤,陳 波,趙中全
電子科技大學(xué) 電子科學(xué)技術(shù)研究院,四川 成都611731
摘要: 系統(tǒng)基于Contiki實(shí)現(xiàn)了一種有源RFID閱讀器節(jié)點(diǎn),同時(shí)實(shí)現(xiàn)了一種邊緣路由器,通過邊緣路由器與閱讀器節(jié)點(diǎn)可以組成無線傳感器網(wǎng)絡(luò)。用戶通過網(wǎng)絡(luò)控制閱讀器節(jié)點(diǎn)收集和管理RFID標(biāo)簽,實(shí)現(xiàn)對設(shè)備的管理。本系統(tǒng)保持了無線傳感器網(wǎng)絡(luò)部署范圍廣的優(yōu)點(diǎn),通過融合有源RFID技術(shù)減小了網(wǎng)絡(luò)的復(fù)雜性并降低了系統(tǒng)功耗。該系統(tǒng)工作穩(wěn)定,適用于在較大范圍內(nèi)對設(shè)備進(jìn)行管理。
中圖分類號: TP311.5
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.016
中文引用格式: 董坤,陳波,趙中全. 基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,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.
Implementation of equipment management system based on Contiki OS and active RFID
Dong Kun,Chen Bo,Zhao Zhongquan
Research Institute of Electronic Science and Technology,University of Electronic Science and Technology,Chengdu 611731,China
Abstract: In this equipment management system,we designed a kind of active RFID reader node and edge router that could form a wireless sensor network. Users could order the reader nodes collect and manage the RFID tags attached to the equipment. The scale of deployment of this system is as large as the same WSN. Because of the RFID reader nodes,the system could be less complicated and have low power consumption. The system is suitable for managing equipment.
Key words : Contiki;active RFID;WSN;embedded system;edge router

0 引言

    隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,物聯(lián)網(wǎng)成為了繼互聯(lián)網(wǎng)之后網(wǎng)絡(luò)技術(shù)發(fā)展的又一次高潮,物聯(lián)網(wǎng)技術(shù)正在實(shí)現(xiàn)網(wǎng)絡(luò)技術(shù)的最后一公里——人與物的連接、物與物的連接。在物聯(lián)網(wǎng)發(fā)展的技術(shù)框架下又有WSN和RFID兩種主要技術(shù),并出現(xiàn)了許多將這兩種技術(shù)融合的方式[1],通過結(jié)合兩種技術(shù)的優(yōu)點(diǎn),可以提高融合系統(tǒng)在特定應(yīng)用下的功能[2]。在眾多應(yīng)用領(lǐng)域中,實(shí)現(xiàn)人對大量物品管理和監(jiān)測是非常重要的一種應(yīng)用需求。本文采用WSN節(jié)點(diǎn)和RFID閱讀器融合的方式[1]實(shí)現(xiàn)了一種設(shè)備管理系統(tǒng),將Contiki無線傳感器網(wǎng)絡(luò)協(xié)議棧和國家軍用2.45G空中接口協(xié)議[6](國軍標(biāo))相融合,實(shí)現(xiàn)了具有RFID標(biāo)簽收集功能的網(wǎng)絡(luò)節(jié)點(diǎn),以及基于LWIP和Contiki操作系統(tǒng)的邊緣路由器和基于國軍標(biāo)的RFID標(biāo)簽。

1 系統(tǒng)總體設(shè)計(jì)

    該系統(tǒng)分為邊緣路由器、閱讀器節(jié)點(diǎn)、RFID標(biāo)簽三大部分,如圖1所示。

qrs3-t1.gif

    邊緣路由器有自己對外的IPv4地址和對內(nèi)部網(wǎng)的IPv6地址,內(nèi)部網(wǎng)絡(luò)是以邊緣路由器為根的簇狀網(wǎng)絡(luò),邊緣路由器負(fù)責(zé)IPv4協(xié)議到IPv6協(xié)議的轉(zhuǎn)換以及數(shù)據(jù)的匯聚和傳輸。內(nèi)部IPv6簇狀網(wǎng)絡(luò)是一個(gè)多跳網(wǎng)絡(luò),閱讀器節(jié)點(diǎn)可以作為中繼節(jié)點(diǎn)或者末端節(jié)點(diǎn)。閱讀器節(jié)點(diǎn)和標(biāo)簽之間的通信遵循國軍標(biāo)。用戶通過Web中間件訪問本系統(tǒng)。

2 邊緣路由器設(shè)計(jì)

2.1 硬件設(shè)計(jì)和Contiki操作系統(tǒng)的移植

    邊緣路由器硬件結(jié)構(gòu)如圖2所示,分為三部分:LPC4337的主處理器、以太網(wǎng)控制器和支持802.15.4的CC2520射頻模塊。本系統(tǒng)使用eclipse和gcc編譯器搭建的開發(fā)環(huán)境,邊緣路由器、閱讀器節(jié)點(diǎn)和RFID標(biāo)簽三者的開發(fā)可以同時(shí)在Contiki源碼目錄下進(jìn)行。由于LPC4337處理器并沒有得到Contiki系統(tǒng)的支持,所以必須將Contiki系統(tǒng)移植到邊緣路由器平臺。Contiki系統(tǒng)組成如圖3。

qrs3-t2.gif

qrs3-t3.gif

    Contiki系統(tǒng)移植[4]需要準(zhǔn)備啟動文件、鏈接腳本、底層驅(qū)動庫文件和用于工程管理的makefile文件。圖4所示為移植系統(tǒng)的存儲布局。在FLASH中,從開始依次是中斷向量表、代碼段、只讀數(shù)據(jù)段、初始化數(shù)據(jù)段。啟動程序?qū)⒊跏蓟瘮?shù)據(jù)段搬移到SRAM1的相應(yīng)位置,SRAM1開始部分空間保留給棧,將未初始化數(shù)據(jù)段BSS的存儲內(nèi)容清0。所有程序段的起始地址在鏈接腳本中指定。

qrs3-t4.gif

2.2 LWIP協(xié)議棧和Contiki協(xié)議棧的融合

    邊緣路由器的主要功能是完成IPv4到IPv6的協(xié)議轉(zhuǎn)換。本系統(tǒng)使用LWIP協(xié)議棧接入外界網(wǎng)絡(luò),Contiki協(xié)議棧運(yùn)行IPv6,使用代理服務(wù)器的方式完成協(xié)議轉(zhuǎn)換。

    圖5所示為邊緣路由器協(xié)議棧,右邊部分為Contiki協(xié)議棧,左邊部分為LWIP協(xié)議棧。Contiki協(xié)議棧的組成由下往上依次為802.15.4射頻物理層、Contiki radio duty cycle層、802.15.4鏈路層、6LoWPAN適配層、IP層(IPv6)、TCP/UDP/ICMPv6層,最后是上層基于ICMPv6的RPL路由協(xié)議和其他應(yīng)用。LWIP協(xié)議棧是支持以太網(wǎng)鏈路層的標(biāo)準(zhǔn)TCP/IP協(xié)議棧。Contiki radio duty cycle層是Contiki操作系統(tǒng)中為了實(shí)現(xiàn)節(jié)點(diǎn)的低功耗而加入的一層,由于邊緣路由器需要較高的處理能力并且是電源供電,所以邊緣路由器協(xié)議中的這一層是關(guān)閉的。6LoWPAN[5]適配層完成IPv6包頭的壓縮和解壓以及數(shù)據(jù)包的分片和重組。

qrs3-t5.gif

    應(yīng)用層的代理服務(wù)器負(fù)責(zé)協(xié)議的轉(zhuǎn)換。客戶與代理服務(wù)器通過TCP連接,代理服務(wù)器與網(wǎng)絡(luò)中的節(jié)點(diǎn)在約定的端口上使用UDP通信。用戶連接代理服務(wù)器,使用獲取網(wǎng)絡(luò)節(jié)點(diǎn)命令獲取網(wǎng)絡(luò)中可達(dá)節(jié)點(diǎn)的IP地址,隨后用戶可以發(fā)起對指定節(jié)點(diǎn)的訪問。代理服務(wù)器接收用戶帶有指定訪問節(jié)點(diǎn)IP地址的數(shù)據(jù),根據(jù)目的節(jié)點(diǎn)地址進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)。用戶與代理服務(wù)器使用本系統(tǒng)定義的命令格式。如圖6所示命令格式,服務(wù)碼字段一個(gè)字節(jié),用來表示當(dāng)前服務(wù),不同服務(wù)期內(nèi)的命令不能交疊;類型字段一個(gè)字節(jié),表示當(dāng)前的命令類型,不同的命令類型會決定在傳輸?shù)刂分笫欠駭y帶附加的命令;地址個(gè)數(shù)表示在命令擴(kuò)展部分開始有幾個(gè)地址。

qrs3-t6.gif

2.3 邊緣路由器的工作過程

    邊緣路由器和閱讀器節(jié)點(diǎn)之間通過RPL協(xié)議組網(wǎng),多個(gè)Contiki線程通過消息傳遞的方式相互協(xié)作構(gòu)成邊緣路由器代理服務(wù)器。使用LWIP的raw API和lwtcpserver_process線程構(gòu)成代理服務(wù)器的數(shù)據(jù)接收和初步解析部分。udp_server_process構(gòu)成了代理服務(wù)器的數(shù)據(jù)解析與分發(fā)部分。邊緣路由器和節(jié)點(diǎn)之間通過udp通信,udp_server_process作為網(wǎng)絡(luò)中唯一的udp服務(wù)器運(yùn)行在邊緣路由器中。工作過程如圖7所示。只有當(dāng)邊緣路由器和節(jié)點(diǎn)組網(wǎng)完成后用戶才能通過代理服務(wù)器獲得關(guān)于網(wǎng)絡(luò)節(jié)點(diǎn)的有效數(shù)據(jù)。當(dāng)udp_server_process接收到網(wǎng)絡(luò)匯聚到的數(shù)據(jù)包后,通過lwtcpserver_process將數(shù)據(jù)返回給訪問客戶端。lwip_process線程用來維持LWIP的正常工作。

qrs3-t7.gif

3 閱讀器節(jié)點(diǎn)的設(shè)計(jì)

    閱讀器節(jié)點(diǎn)硬件使用CC2538 SOC芯片,更方便電池供電和安裝部署。Contiki提供了對CC2538的支持,所以設(shè)計(jì)節(jié)點(diǎn)時(shí)不需要移植Contiki系統(tǒng)。節(jié)點(diǎn)連接了無線傳感器網(wǎng)絡(luò)和RFID系統(tǒng)。在無線傳感器網(wǎng)絡(luò)系統(tǒng)中,節(jié)點(diǎn)作為末端節(jié)點(diǎn)或者中繼節(jié)點(diǎn),在RFID系統(tǒng)中,節(jié)點(diǎn)是RFID閱讀器,所以閱讀器節(jié)點(diǎn)設(shè)計(jì)的主要工作是將RFID協(xié)議棧和Contiki協(xié)議棧進(jìn)行融合。本系統(tǒng)中使用的RFID國軍標(biāo)協(xié)議棧,由于設(shè)備管理系統(tǒng)中涉及的管理參數(shù)較少,系統(tǒng)中刪減了國軍標(biāo)中文件傳輸處理部分,只保留標(biāo)簽盤點(diǎn)和基本控制參數(shù)的傳輸部分。RFID系統(tǒng)最關(guān)鍵的部分就是標(biāo)簽的盤點(diǎn),本系統(tǒng)中在將國軍標(biāo)協(xié)議棧與Contiki協(xié)議棧融合的同時(shí),在Contiki系統(tǒng)下實(shí)現(xiàn)了RFID國軍標(biāo)的二進(jìn)制樹防碰撞算法和收集算法[6]。

3.1 國軍標(biāo)協(xié)議棧和Contiki協(xié)議棧的融合

    閱讀器節(jié)點(diǎn)協(xié)議棧如圖8所示,第二層的GJB-contikirdc層一方面將數(shù)據(jù)包傳遞到上層,另一方面在國軍標(biāo)協(xié)議沒有被觸發(fā)時(shí)運(yùn)行Contiki的duty cycle機(jī)制以降低功耗。GJBmac層完成國軍標(biāo)鏈路層的組包和解包。GJBnetwork層根據(jù)不同類型的國軍標(biāo)協(xié)議包完成組包和上層多路轉(zhuǎn)發(fā)。由邊緣路由器發(fā)來的閱讀器控制命令通過Contiki協(xié)議棧,在上層應(yīng)用中解析,執(zhí)行相應(yīng)的國軍標(biāo)協(xié)議動作,喚醒標(biāo)簽或向已收集到的標(biāo)簽發(fā)送控制命令。閱讀器節(jié)點(diǎn)命令執(zhí)行的結(jié)果將會回復(fù)給邊緣路由器。

qrs3-t8.gif

    圖9所示為邊緣路由器發(fā)給閱讀器節(jié)點(diǎn)的請求盤點(diǎn)命令和盤點(diǎn)完成之后節(jié)點(diǎn)向邊緣路由器返回的命令。當(dāng)邊緣路由器收到用戶客戶端指令時(shí),客戶端指令已經(jīng)封裝了完整的控制指令。邊緣路由器只要確定目的節(jié)點(diǎn)地址,復(fù)制轉(zhuǎn)發(fā)該盤點(diǎn)指令即可。當(dāng)閱讀器節(jié)點(diǎn)向邊緣路由器返回盤點(diǎn)結(jié)果時(shí),由于協(xié)議支持的無線數(shù)據(jù)包最大只有128字節(jié),為避免分包,盤點(diǎn)結(jié)果包中規(guī)定TAGID數(shù)目不超過4個(gè)。盤點(diǎn)結(jié)果包會多次發(fā)送,直到剩余標(biāo)簽數(shù)為0。當(dāng)盤點(diǎn)的標(biāo)簽ID傳輸結(jié)束后,邊緣路由器再將整合后的結(jié)果返回給用戶客戶端。

qrs3-t9.gif

3.2 閱讀器節(jié)點(diǎn)的工作過程 

    閱讀器節(jié)點(diǎn)和邊緣路由器之間使用Contiki協(xié)議棧通過UDP通信。節(jié)點(diǎn)和邊緣路由器在系統(tǒng)初始化時(shí)綁定指定端口,在系統(tǒng)通過RPL協(xié)議組網(wǎng)完成之后,通信就能夠開始。

    節(jié)點(diǎn)的主要工作是收到命令后執(zhí)行收集標(biāo)簽動作,這是國軍標(biāo)協(xié)議的核心。節(jié)點(diǎn)的工作由四個(gè)線程協(xié)作完成,分別是udp_client_process(UDP客戶端線程)、GJB_conframeprocess(國軍標(biāo)接入線程)、GJB_collectframeprocess(國軍標(biāo)標(biāo)簽收集線程)和GJB_Revprocess(國軍標(biāo)數(shù)據(jù)分發(fā)線程)。

    如圖10所示,當(dāng)閱讀器節(jié)點(diǎn)通過Contiki協(xié)議棧接收到命令數(shù)據(jù)時(shí),向udp_client_process發(fā)送TCPIP_EVENT消息,該線程接收到消息執(zhí)行指定的動作(主要功能在這里完成)。開始時(shí)的數(shù)據(jù)一定是盤點(diǎn)指令,此時(shí)向GJB_conframeprocess發(fā)送PROCESS_EVENT_CONNECT消息發(fā)起對標(biāo)簽的盤點(diǎn)。在盤點(diǎn)的過程中直接調(diào)用國軍標(biāo)協(xié)議棧的發(fā)送函數(shù)發(fā)送數(shù)據(jù)。國軍標(biāo)協(xié)議棧收到數(shù)據(jù)時(shí)向國軍標(biāo)分發(fā)線程發(fā)送PROCESS_EVENT_MSG消息,分發(fā)線程根據(jù)數(shù)據(jù)包的類型決定向接入線程或收集線程發(fā)送RPOCESS_EVENT_MSG消息。接入線程和收集線程就是以上述方式接收數(shù)據(jù)。通過盤點(diǎn),閱讀器節(jié)點(diǎn)獲得標(biāo)簽信息生成標(biāo)簽對象。節(jié)點(diǎn)中有標(biāo)簽對象的收集隊(duì)列和緩存隊(duì)列,當(dāng)緩存隊(duì)列為空時(shí),收集線程將收集到的標(biāo)簽對象同時(shí)加入到收集隊(duì)列和緩存隊(duì)列中,當(dāng)下一次啟動盤點(diǎn)時(shí),若已經(jīng)緩存標(biāo)簽則直接從緩存隊(duì)列中獲取標(biāo)簽。盤點(diǎn)過程結(jié)束時(shí),收集線程向udp_client_process線程發(fā)送PROCESS_EVENT_RESPOND消息,udp服務(wù)器線程將收集隊(duì)列的標(biāo)簽信息發(fā)送出去,并將收集隊(duì)列中的標(biāo)簽對象刷入緩存隊(duì)列中,緩存隊(duì)列每十分鐘清空一次。

qrs3-t10.gif

4 標(biāo)簽

    標(biāo)簽硬件使用CC2538單芯片。標(biāo)簽的設(shè)計(jì)是將Contiki協(xié)議棧完全替換為只有解包組包功能的一層,在其上實(shí)現(xiàn)國軍標(biāo)協(xié)議的標(biāo)簽狀態(tài)機(jī)[6]。標(biāo)簽有唯一的64位ID號,該ID在部署系統(tǒng)前需要與所管理的設(shè)備綁定。當(dāng)多個(gè)閱讀器節(jié)點(diǎn)同時(shí)盤點(diǎn)標(biāo)簽時(shí)會出現(xiàn)沖突。本系統(tǒng)規(guī)定最多只有四個(gè)閱讀器節(jié)點(diǎn)可以同時(shí)盤點(diǎn)標(biāo)簽,同時(shí)工作的不同閱讀器節(jié)點(diǎn)分配不同的信道,當(dāng)標(biāo)簽醒來監(jiān)聽就緒指令時(shí),收到的就緒指令中指定標(biāo)簽的工作信道,標(biāo)簽被哪個(gè)閱讀器節(jié)點(diǎn)喚醒就跳轉(zhuǎn)到該閱讀器指定的工作信道中繼續(xù)工作,工作完成后恢復(fù)到原來的監(jiān)聽信道。

5 系統(tǒng)測試

    在單純的無線傳感器網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)需要周期性地傳輸數(shù)據(jù)以維持網(wǎng)絡(luò),并且傳輸?shù)慕M網(wǎng)數(shù)據(jù)包都大于50字節(jié)。將RFID引入到網(wǎng)絡(luò)末端,除了標(biāo)簽每秒蘇醒1 ms監(jiān)聽,不需要周期性的傳輸組網(wǎng)信息。標(biāo)簽的工作取決于用戶的訪問,用戶的訪問并不是經(jīng)常發(fā)生的。整個(gè)系統(tǒng)只有少部分節(jié)點(diǎn)需要組網(wǎng),這就減少了一部分系統(tǒng)功耗。

6 結(jié)論

    本文介紹了Contiki操作系統(tǒng)和有源RFID的融合過程,移植了Contiki系統(tǒng)到邊緣路由器平臺,重點(diǎn)說明了邊緣路由器和閱讀器節(jié)點(diǎn)的工作過程,最后介紹了標(biāo)簽和防沖突方法。所實(shí)現(xiàn)的系統(tǒng)具有拓?fù)浣Y(jié)構(gòu)簡單,網(wǎng)絡(luò)規(guī)模小,對節(jié)點(diǎn)處理能力要求低,功耗更低的特點(diǎn)。

參考文獻(xiàn)

[1] 聶濤,陸陽,張鵬,等.RFID和WSN在物聯(lián)網(wǎng)下協(xié)同機(jī)制的分析[J].計(jì)算機(jī)應(yīng)用研究,2011,28(6):2006-2007.

[2] 李斌,李文峰.WSN和RFID技術(shù)的融合研究[J].計(jì)算機(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].計(jì)算機(jī)技術(shù)發(fā)展,2012,22(11):135-136.

[5] SHELLY Z,BORMANN C.6LOWPAN:無線嵌入式物聯(lián)網(wǎng)[M].北京:機(jī)械工業(yè)出版社,2015.

[6] GJB7377-2.2011.軍用射頻識別空中接口協(xié)議:2.45GHz參數(shù)[S].2011.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。