物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊(cè)

基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)

作者:董 坤,陳 波,趙中全
來(lái)源:電子技術(shù)應(yīng)用
日期:2016-09-02 13:50:18
摘要:系統(tǒng)基于Contiki實(shí)現(xiàn)了一種有源RFID閱讀器節(jié)點(diǎn),同時(shí)實(shí)現(xiàn)了一種邊緣路由器,通過(guò)邊緣路由器與閱讀器節(jié)點(diǎn)可以組成無(wú)線傳感器網(wǎng)絡(luò)。用戶通過(guò)網(wǎng)絡(luò)控制閱讀器節(jié)點(diǎn)收集和管理RFID標(biāo)簽,實(shí)現(xiàn)對(duì)設(shè)備的管理。本系統(tǒng)保持了無(wú)線傳感器網(wǎng)絡(luò)部署范圍廣的優(yōu)點(diǎn),通過(guò)融合有源RFID技術(shù)減小了網(wǎng)絡(luò)的復(fù)雜性并降低了系統(tǒng)功耗。該系統(tǒng)工作穩(wěn)定,適用于在較大范圍內(nèi)對(duì)設(shè)備進(jìn)行管理。

  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],通過(guò)結(jié)合兩種技術(shù)的優(yōu)點(diǎn),可以提高融合系統(tǒng)在特定應(yīng)用下的功能[2]。在眾多應(yīng)用領(lǐng)域中,實(shí)現(xiàn)人對(duì)大量物品管理和監(jiān)測(cè)是非常重要的一種應(yīng)用需求。本文采用WSN節(jié)點(diǎn)和RFID閱讀器融合的方式[1]實(shí)現(xiàn)了一種設(shè)備管理系統(tǒng),將Contiki無(wú)線傳感器網(wǎng)絡(luò)協(xié)議棧和國(guó)家軍用2.45G空中接口協(xié)議[6](國(guó)軍標(biāo))相融合,實(shí)現(xiàn)了具有RFID標(biāo)簽收集功能的網(wǎng)絡(luò)節(jié)點(diǎn),以及基于LWIP和Contiki操作系統(tǒng)的邊緣路由器和基于國(guó)軍標(biāo)的RFID標(biāo)簽。

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

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

基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)

  邊緣路由器有自己對(duì)外的IPv4地址和對(duì)內(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)簽之間的通信遵循國(guó)軍標(biāo)。用戶通過(guò)Web中間件訪問(wèn)本系統(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編譯器搭建的開(kāi)發(fā)環(huán)境,邊緣路由器、閱讀器節(jié)點(diǎn)和RFID標(biāo)簽三者的開(kāi)發(fā)可以同時(shí)在Contiki源碼目錄下進(jìn)行。由于LPC4337處理器并沒(méi)有得到Contiki系統(tǒng)的支持,所以必須將Contiki系統(tǒng)移植到邊緣路由器平臺(tái)。Contiki系統(tǒng)組成如圖3。

基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)

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

基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)

  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é)議棧,左邊部分為L(zhǎng)WIP協(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ù)包的分片和重組。

基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)

  應(yīng)用層的代理服務(wù)器負(fù)責(zé)協(xié)議的轉(zhuǎn)換??蛻襞c代理服務(wù)器通過(guò)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ā)起對(duì)指定節(jié)點(diǎn)的訪問(wèn)。代理服務(wù)器接收用戶帶有指定訪問(wèn)節(jié)點(diǎn)IP地址的數(shù)據(jù),根據(jù)目的節(jié)點(diǎn)地址進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)。用戶與代理服務(wù)器使用本系統(tǒng)定義的命令格式。如圖6所示命令格式,服務(wù)碼字段一個(gè)字節(jié),用來(lái)表示當(dāng)前服務(wù),不同服務(wù)期內(nèi)的命令不能交疊;類型字段一個(gè)字節(jié),表示當(dāng)前的命令類型,不同的命令類型會(huì)決定在傳輸?shù)刂分笫欠駭y帶附加的命令;地址個(gè)數(shù)表示在命令擴(kuò)展部分開(kāi)始有幾個(gè)地址。

基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)

  2.3 邊緣路由器的工作過(guò)程

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

基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)

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

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

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

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

基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)

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

基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)

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

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

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

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

基于Contiki和有源RFID的設(shè)備管理系統(tǒng)的實(shí)現(xiàn)

  4 標(biāo)簽

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

  5 系統(tǒng)測(cè)試

  在單純的無(wú)線傳感器網(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)聽(tīng),不需要周期性的傳輸組網(wǎng)信息。標(biāo)簽的工作取決于用戶的訪問(wèn),用戶的訪問(wèn)并不是經(jīng)常發(fā)生的。整個(gè)系統(tǒng)只有少部分節(jié)點(diǎn)需要組網(wǎng),這就減少了一部分系統(tǒng)功耗。

  6 結(jié)論

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

  參考文獻(xiàn)

  [1] 聶濤,陸陽(yáng),張鵬,等.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平臺(tái)的Contiki通用移植方法研究[J].計(jì)算機(jī)技術(shù)發(fā)展,2012,22(11):135-136.

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

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