高海韜,李丹寧
(1.貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽(yáng) 550025;2.貴州科學(xué)院,貴州 貴陽(yáng) 550001)
射頻識(shí)別(radio frequency identification,RFID)是實(shí)現(xiàn)物聯(lián)網(wǎng)概念的關(guān)鍵無(wú)線技術(shù)之一,能夠成功地保證物體的可追溯性和物品監(jiān)控[1-2]。作為一種潛力巨大的自動(dòng)識(shí)別技術(shù),RFID被廣泛用于食品安全、倉(cāng)儲(chǔ)物流、商品防偽、交通等領(lǐng)域[3-5],對(duì)改善人們的生活質(zhì)量、提高產(chǎn)業(yè)經(jīng)濟(jì)效益和社會(huì)信息化水平有著重要影響。
國(guó)內(nèi)對(duì)于RFID終端讀寫器的研究設(shè)計(jì)大部分是基于單片機(jī)芯片開發(fā),針對(duì)不同的應(yīng)用場(chǎng)景需求進(jìn)行功能設(shè)計(jì)。如桑海偉等人[6]通過(guò)RFID技術(shù)和STM32芯片聯(lián)動(dòng)控制攝像頭,采用自修復(fù)機(jī)制改進(jìn)的RFID定位算法自動(dòng)定位牲畜活動(dòng)區(qū)域,采集牲畜活動(dòng)信息,并將采集的數(shù)據(jù)上傳至服務(wù)器,從而降低畜產(chǎn)品溯源系統(tǒng)的實(shí)際應(yīng)用成本。洪琪璐[7]同樣將STM32作為系統(tǒng)的主控芯片,設(shè)計(jì)了一種面向文物管理的超高頻RFID閱讀器系統(tǒng)。將標(biāo)簽與文物綁定,通過(guò)RFID技術(shù)實(shí)現(xiàn)文物的信息輸入、信息查詢、信息修改等功能,快速、準(zhǔn)確地獲取博物館中的文物信息。
RFID技術(shù)最早可以追溯到第二次世界大戰(zhàn)時(shí)無(wú)線雷達(dá)的出現(xiàn),20世紀(jì)60年代至90年代是RFID發(fā)展史上最為重要的時(shí)期。RFID技術(shù)在國(guó)外發(fā)展較早也較快,尤其是在發(fā)達(dá)國(guó)家,如美國(guó)、德國(guó)、日本等國(guó)都較早地開始推進(jìn)RFID應(yīng)用,具有較為先進(jìn)而且成熟的RFID系統(tǒng)。美國(guó)的Symbol、TI公司,德國(guó)的西門子等國(guó)外廠商基本壟斷了RFID芯片市場(chǎng),占據(jù)了RFID系統(tǒng)集成研究的有利位置。相比于國(guó)外,國(guó)內(nèi)在行業(yè)發(fā)展核心的前期階段沒(méi)有掌握技術(shù)和產(chǎn)權(quán)優(yōu)勢(shì),在很長(zhǎng)的一段時(shí)間里RFID行業(yè)發(fā)展主要依靠引入國(guó)外集成產(chǎn)品和解決方案。近幾年,隨著國(guó)內(nèi)RFID產(chǎn)品市場(chǎng)需求的不斷增大,RFID技術(shù)的發(fā)展速度越來(lái)越快,RFID產(chǎn)品逐漸“國(guó)產(chǎn)化”。國(guó)內(nèi)眾多芯片廠商研制出了自己的UHF RFID芯片,讀寫設(shè)備的集成度也變得越來(lái)越高。另一方面,隨著RFID識(shí)讀算法的改進(jìn),RFID讀寫器芯片和RFID標(biāo)簽的有效識(shí)讀距離也在逐步提高[8]。
雖然射頻識(shí)別技術(shù)的不斷突破讓RFID讀寫設(shè)備的性能得到進(jìn)一步提升,并且降低了RFID產(chǎn)品的開發(fā)成本和技術(shù)門檻,但由于國(guó)內(nèi)RFID技術(shù)起步晚,目前市場(chǎng)上的UHF RFID讀寫設(shè)備主要還是以傳統(tǒng)的手持讀寫器為主,這種讀寫器由繁多的硬件堆疊而成,開發(fā)成本高、體積偏大,不利于使用人員操作。這些問(wèn)題對(duì)RFID技術(shù)在食品溯源等普通民用領(lǐng)域的快速普及和應(yīng)用造成了極大阻礙。目前市場(chǎng)上的RFID讀寫終端機(jī)價(jià)格大多在3 000元至10 000元區(qū)間,產(chǎn)品單價(jià)長(zhǎng)期居高不下,市面上價(jià)格適中且能和手機(jī)搭配使用的RFID讀寫器只占極少數(shù)。
食品安全一直是國(guó)家公共安全防控管理的重點(diǎn)。此次新冠肺炎疫情中病毒隨食品冷鏈供應(yīng)流通至消費(fèi)者導(dǎo)致多起病例,更是凸顯出食品安全保障措施的重要性?;ヂ?lián)互通、快速流動(dòng)的食品供應(yīng)網(wǎng)絡(luò)帶來(lái)的不只是經(jīng)濟(jì)效益的提高,同時(shí)也意味著食品安全問(wèn)題風(fēng)險(xiǎn)進(jìn)一步加大。錯(cuò)綜復(fù)雜的食品流通環(huán)節(jié)使得食品流通時(shí)的各種相關(guān)信息呈爆炸式增長(zhǎng),食品管理鏈對(duì)于RFID產(chǎn)品的需求量已經(jīng)十分龐大。
Fu等人[9]應(yīng)用博弈論分析了零售商、制造商和供應(yīng)商組成的生鮮食品供應(yīng)鏈的RFID投資決策。他們的研究結(jié)果證明了RFID技術(shù)在食品行業(yè)管理應(yīng)用中的高效性。RFID的應(yīng)用可為管理者及時(shí)提供食品供應(yīng)鏈中的關(guān)鍵信息,包括轉(zhuǎn)運(yùn)、存儲(chǔ)及銷售情況,管理者可由此快速識(shí)別并糾正低效率運(yùn)作情況,因而從財(cái)務(wù)、運(yùn)營(yíng)效率及食品安全方面都能提供最佳回報(bào)的解決方案,實(shí)現(xiàn)快速供貨并最大限度地減少儲(chǔ)存成本,這對(duì)于鮮果蔬菜和肉類等存儲(chǔ)成本高的食品尤為重要。
從農(nóng)田到餐桌,食品在整個(gè)供應(yīng)網(wǎng)絡(luò)流通過(guò)程中步驟繁多,情況復(fù)雜,傳統(tǒng)的食品供應(yīng)鏈管理模式很難掌握食品在生產(chǎn)、加工、運(yùn)輸?shù)雀鱾€(gè)步驟中的信息,包括原材料來(lái)源是否安全,食物的儲(chǔ)存狀態(tài),供應(yīng)鏈中是否有潛在危險(xiǎn)食品在流通等,而RFID技術(shù)正是解決這一問(wèn)題的關(guān)鍵[10]。如圖1所示,在食品出產(chǎn)地給食品植入電子標(biāo)簽建立身份信息。食品供應(yīng)過(guò)程中,工作人員通過(guò)RFID終端機(jī)掃描食品上的標(biāo)簽進(jìn)行身份識(shí)別,完成信息的讀取和錄入,實(shí)時(shí)掌握每一件食品的流通情況。在食品安全問(wèn)題發(fā)生后也能通過(guò)RFID電子標(biāo)簽中的信息,快速找到問(wèn)題的源頭,保障食品安全。
圖1 RFID在食品供應(yīng)鏈中的應(yīng)用
食品供應(yīng)鏈管理所需的RFID產(chǎn)品數(shù)量龐大,但是傳統(tǒng)讀寫器用于食品供應(yīng)鏈管理不僅笨重難用而且價(jià)格昂貴,市場(chǎng)的需求決定了未來(lái)RFID產(chǎn)品的發(fā)展趨勢(shì)朝向必然是輕量化、小型化和低成本化。因此,文中設(shè)計(jì)了一種便攜式UHF RFID讀寫器,將傳統(tǒng)RFID技術(shù)和當(dāng)前正飛速發(fā)展的智能手機(jī)技術(shù)相結(jié)合,以小型RFID讀寫芯片和智能手機(jī)為硬件基礎(chǔ),設(shè)計(jì)開發(fā)手機(jī)應(yīng)用程序下發(fā)指令控制RFID模塊進(jìn)行信息讀取和寫入。
系統(tǒng)的總體設(shè)計(jì)如圖2所示,工作人員的手機(jī)與RFID讀寫模塊建立無(wú)線通信后可以使用手機(jī)上的APP遠(yuǎn)程控制RFID讀寫模塊和一個(gè)或多個(gè)電子標(biāo)簽進(jìn)行數(shù)據(jù)讀寫,手機(jī)APP讀取到的數(shù)據(jù)通過(guò)互聯(lián)網(wǎng)自動(dòng)上傳至后臺(tái)云服務(wù)器。利用這些數(shù)據(jù)信息進(jìn)行數(shù)據(jù)分析有利于管理人員做出合理的運(yùn)輸銷售決策,實(shí)現(xiàn)智慧化、信息化供應(yīng)鏈管理。
圖2 RFID系統(tǒng)總體設(shè)計(jì)框圖
通用的RFID系統(tǒng)由固定在其識(shí)別對(duì)象上的RFID閱讀器、電子標(biāo)簽和軟件應(yīng)用組成。RFID閱讀器向標(biāo)簽發(fā)送一個(gè)無(wú)線電信號(hào),標(biāo)簽在接收到信號(hào)后響應(yīng)一個(gè)包含標(biāo)簽標(biāo)識(shí)符和其他有關(guān)識(shí)別對(duì)象數(shù)據(jù)的信號(hào)[11]。閱讀器是RFID系統(tǒng)中的核心元素,每個(gè)RFID標(biāo)簽包含一個(gè)集成電路和一個(gè)射頻天線。電子標(biāo)簽的數(shù)據(jù)存儲(chǔ)區(qū)中的用戶區(qū)專用于保存用戶自定義的數(shù)據(jù),食品在供應(yīng)鏈流通過(guò)程中,用戶將食品的產(chǎn)地、存儲(chǔ)狀態(tài)、物流等信息存儲(chǔ)在用戶區(qū),需要時(shí)再讀取。RFID系統(tǒng)這種可以識(shí)別某一類實(shí)體元素和歸屬大量身份類別的能力共同構(gòu)成了它的概念優(yōu)勢(shì)。
根據(jù)標(biāo)簽是否含有電源的不同,標(biāo)簽可以分為無(wú)源電子標(biāo)簽和有源電子標(biāo)簽。無(wú)源標(biāo)簽沒(méi)有電源,而是通過(guò)將接收到的讀寫器信號(hào)功率轉(zhuǎn)換為電流進(jìn)行工作。無(wú)源標(biāo)簽成本低且使用周期長(zhǎng),所以在產(chǎn)品供應(yīng)鏈管理中一般選用無(wú)源標(biāo)簽。無(wú)源RFID標(biāo)簽內(nèi)部電路見(jiàn)圖3。
圖3 無(wú)源RFID標(biāo)簽內(nèi)部電路
文中采用RFID R200模塊作為讀寫器的核心超高頻讀寫模塊,它的工作頻率在840 MHz~960 MHz,多功率可調(diào),讀寫距離最遠(yuǎn)達(dá)20 m,具有低功耗、小尺寸、遠(yuǎn)距離的特點(diǎn),滿足本次系統(tǒng)開發(fā)低成本、小體積的設(shè)計(jì)理念。同時(shí)支持C/C++、JAVA等多種開發(fā)語(yǔ)言。
目前RFID主要的工作頻段有四種:分別為低頻(125~135 kHz)、高頻(13.56 MHz)、超高頻(860 M~928 MHz)和微波(2.4~5.8 GHz)。無(wú)線通信系統(tǒng)在不同頻段上的讀取范圍和特點(diǎn)都有所不同,不同頻段的RFID應(yīng)用領(lǐng)域自然也大不相同。文中設(shè)計(jì)的讀卡器頻段為超高頻(UHF),超高頻頻段可以在10米左右的距離內(nèi)進(jìn)行高速通信,常用于對(duì)各種物品進(jìn)行跟蹤、定位和控制[12-13],如智能卡、供應(yīng)鏈管理等應(yīng)用領(lǐng)域。
R200模塊本身不含無(wú)線通信模塊,但可以通過(guò)接口上的TTL管腳用串口線外接藍(lán)牙(WIFI)無(wú)線模塊,十分簡(jiǎn)便。R200讀寫模塊和藍(lán)牙模塊的電路見(jiàn)圖4,其中ANT為天線管腳,模塊的射頻輸出端??梢愿鶕?jù)不同的應(yīng)用場(chǎng)景的讀卡距離需求匹配不同增益、不同接口的超高頻天線,控制讀寫器和標(biāo)簽的識(shí)讀距離;TTL_RXD、TTL_TXD分別為模塊串口接收和發(fā)送管腳,與無(wú)線通信模塊的UART接口連接,RFID讀寫模塊可以通過(guò)藍(lán)牙模塊與手機(jī)建立通信連接。文中選用國(guó)產(chǎn)的DX-BT04-E藍(lán)牙模塊作為RFID讀寫模塊的拓展無(wú)線通信模塊,該模塊成本低、體積小、收發(fā)靈敏度高,契合讀寫器設(shè)計(jì)需求。
圖4 UHF RFID讀寫模塊電路
R200模塊支持EPCglobal UHF Class 1 Gen 2 / ISO 18000-6C協(xié)議,在進(jìn)行應(yīng)用程序設(shè)計(jì)前先對(duì)核心讀寫模塊的通信協(xié)議進(jìn)行分析,掌握其固件指令格式。根據(jù)官方手冊(cè)介紹,R200讀寫模塊的指令幀格式如表1所示。其中指令幀類型有三種:
表1 指令幀格式
(1)0x00 命令幀:由上位機(jī)發(fā)送給RFID芯片。讀寫器與標(biāo)簽通信的關(guān)鍵步驟有三步,分別對(duì)應(yīng)三個(gè)核心操作命令: 選擇(Select)命令、盤存(Inventory)命令和訪問(wèn)(Access)命令。
(2)0x01 響應(yīng)幀:由RFID芯片發(fā)回給上位機(jī)。每一條指令幀都有對(duì)應(yīng)的響應(yīng)幀,響應(yīng)幀表示指令是否已經(jīng)被執(zhí)行了。
(3)0x02 通知幀:由RFID芯片發(fā)回給上位機(jī)。讀寫器向標(biāo)簽發(fā)送輪詢指令時(shí)有對(duì)應(yīng)的通知幀,通知幀的個(gè)數(shù)由MCU根據(jù)讀取到的標(biāo)簽數(shù)決定。
指令幀發(fā)送后會(huì)有對(duì)應(yīng)的響應(yīng)幀,發(fā)送通知幀的個(gè)數(shù)由讀寫器讀取標(biāo)簽的情況決定。如果指令幀被正常接收且CRC校驗(yàn)碼準(zhǔn)確就會(huì)返回響應(yīng)的通知幀,否則返回錯(cuò)誤代碼。
表2為本次系統(tǒng)開發(fā)中超高頻模塊和標(biāo)簽通信時(shí)主要的幾個(gè)基本指令代碼和指令的具體功能描述。
表2 RFID通信操作命令
設(shè)計(jì)的UHF RFID讀寫器配套手機(jī)對(duì)象為安卓操作系統(tǒng)手機(jī),使用的Android開發(fā)工具為Android Studio(以下簡(jiǎn)稱AS),AS版本為Android sudioV3.5.2, SDK版本為Android 7.0,APP開發(fā)環(huán)境變量配置參考文獻(xiàn)[14]。手機(jī)APP主程序設(shè)計(jì)流程見(jiàn)圖5,判斷手機(jī)與RFID讀寫模塊建立連接后進(jìn)入主程序流程,監(jiān)聽事件的按鍵響應(yīng)[15]。當(dāng)用戶在APP上進(jìn)行操作時(shí),觸發(fā)對(duì)應(yīng)編碼,手機(jī)按照標(biāo)準(zhǔn)協(xié)議與RFID模塊進(jìn)行通信,完成一次通信后循環(huán),直至手機(jī)和RFID讀寫模塊斷開連接。
圖5 APP程序設(shè)計(jì)流程
按照RFID讀寫模塊的通信協(xié)議進(jìn)行程序設(shè)計(jì)[15],以讀取單個(gè)標(biāo)簽的數(shù)據(jù)存儲(chǔ)區(qū)為例(其他操作指令的程序設(shè)計(jì)與此相近),通過(guò)APP下發(fā)“讀取標(biāo)簽中的數(shù)據(jù)存儲(chǔ)區(qū)”指令在AS中的JAVA代碼[16]實(shí)現(xiàn)見(jiàn)圖6。
圖6 JAVA程序段:“讀取標(biāo)簽中的數(shù)據(jù)存儲(chǔ)區(qū)”
新建一個(gè)“readID MemBank”按鈕,用于讀取標(biāo)簽數(shù)據(jù)存儲(chǔ)區(qū),將該按鍵設(shè)置為一個(gè)事件,監(jiān)聽該事件。根據(jù)表1和表2,定義一個(gè)數(shù)組data3,寫入?yún)f(xié)議規(guī)定的字符數(shù)據(jù):“0xBB 0x00 0x39 0x00 0x09 0x03 0x45 0x7E”。當(dāng)檢測(cè)到“讀取標(biāo)簽中的數(shù)據(jù)存儲(chǔ)區(qū)”事件時(shí),該數(shù)組傳入至writeDataToSerial函數(shù)。RFID模塊讀取到標(biāo)簽后將返回響應(yīng)消息,經(jīng)過(guò)TTL 串口轉(zhuǎn)藍(lán)牙模塊將該消息通知傳入手機(jī),顯示至APP操作頁(yè)面。
如果命令幀執(zhí)行失敗,則R200芯片向上位機(jī)發(fā)送執(zhí)行失敗的響應(yīng)幀。執(zhí)行失敗的響應(yīng)幀共用指令代碼:0xFF。如果在執(zhí)行失敗之前沒(méi)有得到標(biāo)簽的EPC,則指令參數(shù)固定為1個(gè)byte的錯(cuò)誤代碼。如果在執(zhí)行失敗前得到了標(biāo)簽的EPC,則響應(yīng)幀參數(shù)為1個(gè)byte 的錯(cuò)誤代碼再加上標(biāo)簽的PC+EPC數(shù)據(jù)。
如果命令幀執(zhí)行成功,R200正確讀到指定區(qū)域數(shù)據(jù),標(biāo)簽會(huì)返回如下響應(yīng)幀:
0xBB,0x01,0x39,0x0013,0x0E,0x3400,0x30751FEB70, 0x12345678,0xB0
其中,“0x0E”表示標(biāo)簽的PC和EPC碼總長(zhǎng)度為14,“0x3400”為標(biāo)簽PC碼,“0x30751FEB70”為標(biāo)簽的EPC碼,“0x12345678”表示返回的標(biāo)簽存儲(chǔ)數(shù)據(jù),“0xB0”為校驗(yàn)位,是從幀類型(Type)到最后一個(gè)指令參數(shù)(Parameter)的最低一個(gè)字節(jié)的累加和。
將編譯成功的AS項(xiàng)目打包為APK文件,發(fā)送至安卓手機(jī)上進(jìn)行功能測(cè)試。首先,系統(tǒng)程序進(jìn)行判斷:安卓手機(jī)是否已經(jīng)正常連接讀寫卡器,即RFID讀寫模塊是否已經(jīng)通過(guò)外接藍(lán)牙模塊與手機(jī)建立連接。點(diǎn)擊“藍(lán)牙掃描”按鈕掃描藍(lán)牙,打開藍(lán)牙功能后點(diǎn)擊名稱進(jìn)行連接,設(shè)備連接成功后才能在APP頁(yè)面進(jìn)行相關(guān)操作,控制RFID讀寫模塊與標(biāo)簽通信。程序開始監(jiān)聽APP頁(yè)面上各個(gè)控制按鍵的事件,在用戶觸發(fā)按鍵后根據(jù)所觸發(fā)的按鍵對(duì)應(yīng)的編碼向底層硬件發(fā)送特定的字符串,從而完成與超高頻RFID芯片通信的功能。如圖7所示,可以在“標(biāo)簽”頁(yè)面點(diǎn)擊“EPC”按鈕識(shí)別標(biāo)簽的EPC區(qū)域,識(shí)別到的數(shù)據(jù)顯示為“24位的EPC號(hào)”同時(shí)顯示總讀取次數(shù)和標(biāo)簽識(shí)別的個(gè)數(shù)。
圖7 Android手機(jī)應(yīng)用程序界面
標(biāo)簽讀寫操作功能可以在“訪問(wèn)”頁(yè)進(jìn)行,以識(shí)別到標(biāo)簽號(hào)為:“E211 3343 5565 7789 9722 1133”的標(biāo)簽為例,對(duì)標(biāo)簽的EPC區(qū)進(jìn)行寫入操作:長(zhǎng)按需要寫入的標(biāo)簽號(hào)進(jìn)行選擇,程序自動(dòng)切換到“訪問(wèn)”界面。點(diǎn)擊“訪問(wèn)”按鈕,數(shù)據(jù)框顯示出選擇的標(biāo)簽號(hào)。然后可以對(duì)標(biāo)簽進(jìn)行讀取或?qū)懭氩僮鳌_x擇對(duì)標(biāo)簽號(hào)進(jìn)行“寫”操作,選擇需要寫入的區(qū)域:EPC,寫入:“E211 3343 5565 7789 9722 6666”,寫入成功后系統(tǒng)顯示“寫入成功”消息提示,再次訪問(wèn)寫入后的標(biāo)簽,標(biāo)簽EPC已經(jīng)變?yōu)閷懭氲臄?shù)據(jù),見(jiàn)圖8。
圖8 RFID讀寫器系統(tǒng)功能測(cè)試
R200模塊支持功率可調(diào),因此在應(yīng)用程序中加入了配置RFID通信頻率、功率等參數(shù)的功能選項(xiàng)。安卓應(yīng)用程序的真機(jī)測(cè)試結(jié)果表明,設(shè)計(jì)的UHF RIFD讀寫器系統(tǒng)達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo),基本滿足食品供應(yīng)鏈管理的功能需求。
食品供應(yīng)鏈管理所需的RFID產(chǎn)品數(shù)量龐大,但是傳統(tǒng)讀寫器不滿足食品供應(yīng)鏈的實(shí)際應(yīng)用需求。設(shè)計(jì)了一種便攜式超高頻RFID讀寫器,并在安卓手機(jī)上完成了功能測(cè)試實(shí)驗(yàn)。這種讀寫器采用UFH RFID R200模塊作為核心讀寫模塊,外接無(wú)線藍(lán)牙模塊DX-BT04-E。食品在供應(yīng)鏈流通時(shí),用戶可以通過(guò)手機(jī)應(yīng)用程序控制RFID讀寫模塊對(duì)食品上的電子標(biāo)簽信息進(jìn)行讀寫,完成信息交換,實(shí)時(shí)掌握食品在供應(yīng)鏈中的流通狀況,智慧化、信息化食品供應(yīng)鏈,提高管理效率,保障食品安全。在接下來(lái)的設(shè)計(jì)工作中,可以根據(jù)R200芯片的硬件底層驅(qū)動(dòng)接口庫(kù)擴(kuò)展超高頻RFID讀寫器功能,和手機(jī)進(jìn)行交互測(cè)試,從系統(tǒng)架構(gòu)和應(yīng)用需求方面進(jìn)一步完善讀寫器功能設(shè)計(jì),優(yōu)化手機(jī)APP的UI設(shè)計(jì),使得操作界面更加美觀、易用。