盧光躍,蘇可可,王宏剛,劉志朋,裴沛東
(西安郵電大學(xué) 陜西省信息通信網(wǎng)絡(luò)及安全重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710121)
射頻識別(Radio Frequency Identification,RFID)是一種非接觸式無線通信技術(shù)[1],其可通過射頻信號實(shí)現(xiàn)對不同目標(biāo)的識別與管理。RFID系統(tǒng)主要由電子標(biāo)簽和讀寫器兩部分構(gòu)成,其中標(biāo)簽按照供電方式的不同可分為無源電子標(biāo)簽、半有源電子標(biāo)簽和有源電子標(biāo)簽[2]。有源電子標(biāo)簽不依賴讀寫器進(jìn)行供電且與讀寫器之間的通信距離可達(dá)上百米,因此,其廣泛應(yīng)用于資產(chǎn)管理、倉儲和車輛管理等遠(yuǎn)距離實(shí)際場景[3]??紤]有源電子標(biāo)簽的電池能量有限且更換困難,如何降低功耗以提高電池工作壽命成為有源電子標(biāo)簽相關(guān)研究的核心內(nèi)容。
考慮成本與功耗的限制,有源電子標(biāo)簽通常在同一信道中進(jìn)行通信,使得不同標(biāo)簽在傳輸信息時(shí)會發(fā)生碰撞且造成更多的能量消耗[4]。為解決這一問題,不少研究者提出了防碰撞算法[5-8]。文獻(xiàn)[4]提出了多種標(biāo)簽防碰撞算法,包括純ALOHA(Pure ALOHA)算法和時(shí)隙ALOHA(Slot ALOHA)算法等。結(jié)果表明,相比于純ALOHA算法,時(shí)隙ALOHA算法可實(shí)現(xiàn)更高的吞吐量和數(shù)據(jù)平均交換量,但是當(dāng)標(biāo)簽數(shù)量增加時(shí),該算法的效率會顯著下降并進(jìn)一步導(dǎo)致能效下降。文獻(xiàn)[6-8]分別提出了改進(jìn)的動(dòng)態(tài)幀時(shí)隙ALOHA算法、改進(jìn)的二進(jìn)制防碰撞算法和可并行識別的分組動(dòng)態(tài)幀時(shí)隙ALOHA算法,進(jìn)一步改善系統(tǒng)性能。上述算法盡管緩解了標(biāo)簽之間的碰撞問題,但是仍存在算法復(fù)雜度高和耗時(shí)長等不足,未能有效的在效率和耗能之間取得平衡。
針對上述問題,將選擇幀時(shí)隙ALOHA防碰撞算法與適用于遠(yuǎn)距離傳輸?shù)腖oRa協(xié)議[9-11]相結(jié)合,擬設(shè)計(jì)一種低功耗有源電子標(biāo)簽系統(tǒng)。通過對硬件結(jié)構(gòu)、軟件工作模式及預(yù)喚醒機(jī)制等方面的聯(lián)合優(yōu)化相結(jié)合,以降低有源電子標(biāo)簽的功耗,延長有源電子標(biāo)簽的電池能量壽命。
標(biāo)簽主要由天線、射頻模塊、微處理器模塊、電源模塊及擴(kuò)展接口構(gòu)成??紤]到功耗低及性能穩(wěn)定的要求,微處理器模塊采用超低功耗單片機(jī)STM32F103RCT6。此外,射頻模塊采用SX1262,并通過串行外設(shè)接口(Serial Peripheral Interface,SPI)方式與微處理器進(jìn)行通信。標(biāo)簽的硬件結(jié)構(gòu)如圖1所示。
圖1 標(biāo)簽的硬件結(jié)構(gòu)
STM32F103RCT6芯片是ST公司開發(fā)的一款嵌入式-微處理器集成電路,采用Cortex-M3內(nèi)核、中央處理器(Central Processing Unit,CPU)最高速度達(dá)72 MHz,內(nèi)置的Flash程序存儲器容量為256 kb,隨機(jī)存取存儲器(Random Access Memory,RAM)量為48 kb[12]。值得注意的是,該芯片處于睡眠、停機(jī)和待機(jī)模式時(shí)可實(shí)現(xiàn)低功耗效果,其中待機(jī)模式下的功耗最低。
SX1262芯片是Semtech公司推出的一款sub-GHz無線收發(fā)器。為延長電池的工作壽命,該芯片的有效接收電流最低,可小于4.2 mA[13]。相較于前代的芯片SX1276/8,SX1262芯片的最大發(fā)射功率與最大空中速率可分別達(dá)到22 dBm和62.5 kb/s。為滿足不同實(shí)際應(yīng)用的需求,SX1262提供了兩種調(diào)制方式,即傳統(tǒng)的(G)FSK調(diào)制和滿足遠(yuǎn)距離通信的LoRa調(diào)制。LoRa調(diào)制采用了擴(kuò)頻調(diào)制技術(shù)[14],與傳統(tǒng)的頻移鍵控(Frequency Shift Keying,F(xiàn)SK)、通斷鍵控(On-Off Keying,OOK)調(diào)制技術(shù)相比,LoRa調(diào)制技術(shù)擴(kuò)大了無線通訊鏈路的覆蓋范圍,提高了鏈路的魯棒性[15]。綜上可知,SX1262芯片具備遠(yuǎn)距離通信與低功耗等特點(diǎn),因此,其適用于智能儀表、資產(chǎn)追蹤及智慧城市等多種應(yīng)用。
以Keil 5作為軟件開發(fā)環(huán)境,并在該環(huán)境下對標(biāo)簽及讀寫器進(jìn)行軟、硬件參數(shù)的配置。設(shè)計(jì)的軟件系統(tǒng)流程圖如圖2所示。
圖2 軟件系統(tǒng)流程圖
如圖2的軟件系統(tǒng)流程圖所示,標(biāo)簽初始在FSK信道進(jìn)行預(yù)喚醒階段的周期性休眠(狀態(tài)1)與偵聽(狀態(tài)2),接收來自讀寫器的預(yù)喚醒命令后,標(biāo)簽開始喚醒階段的周期性休眠(狀態(tài)3)與偵聽(狀態(tài)4),讀寫器隨后發(fā)送喚醒命令,標(biāo)簽在接收到該命令后切換到LoRa信道并進(jìn)行偵聽(狀態(tài)5),讀寫器發(fā)送Query命令,判斷標(biāo)簽是否能夠接收到Query命令(狀態(tài)6),若標(biāo)簽?zāi)軌蚪邮誕uery命令(狀態(tài)7),則隨機(jī)選擇時(shí)隙0,…,L-1,其中,L表示時(shí)隙個(gè)數(shù)(狀態(tài)8)并發(fā)送TagID(狀態(tài)9),TagID發(fā)送后,標(biāo)簽偵聽是否能接收到讀寫器回復(fù)的ACK命令(狀態(tài)10),若TagID發(fā)送成功(狀態(tài)11),讀寫器回復(fù)ACK命令且標(biāo)簽接收到ACK命令后不再響應(yīng)Query,命令若TagID發(fā)送不成功(狀態(tài)12),即標(biāo)簽接收ACK命令超時(shí),標(biāo)簽返回FSK信道重新開始。
在傳統(tǒng)RFID系統(tǒng)中,標(biāo)簽的準(zhǔn)備模式僅包含喚醒周期且分為休眠階段和偵聽階段。在休眠階段中,標(biāo)簽的微控制單元(Microcontroller Unit,MCU)處于休眠狀態(tài),消耗較少的能量。然而,在偵聽階段中,數(shù)據(jù)幀攜帶大量的數(shù)據(jù)信息,偵聽時(shí)間較長且能量消耗較多。為改善上述功耗問題,在標(biāo)簽中引入了預(yù)喚醒命令。在引入預(yù)喚醒命令后,標(biāo)簽的準(zhǔn)備模式包括預(yù)喚醒周期和喚醒周期,其中預(yù)喚醒、喚醒周期均分為休眠階段和偵聽階段。標(biāo)簽的MCU在預(yù)喚醒周期的休眠階段中處于待機(jī)狀態(tài),而在喚醒周期的休眠階段中處于休眠狀態(tài)。相較于后者,標(biāo)簽的MCU在前者中的功耗更低。此外,考慮預(yù)喚醒周期中的數(shù)據(jù)幀不攜帶多余的數(shù)據(jù),故相應(yīng)的偵聽時(shí)間較短。綜上所述,相比于傳統(tǒng)RFID系統(tǒng),標(biāo)簽在引入預(yù)喚醒命令后功耗更小。
具體而言,在一個(gè)周期內(nèi),標(biāo)簽的總能耗等于準(zhǔn)備模式與活動(dòng)模式的能耗之和[16],計(jì)算表達(dá)式為
E=Ep+Ea
(1)
考慮能耗可以表示為功率與時(shí)間之積,為描述不同狀態(tài)的能耗,需要知道每個(gè)狀態(tài)的電壓、電流以及每個(gè)狀態(tài)的時(shí)長。由于不同狀態(tài)標(biāo)簽的電壓U為常數(shù)(U=3.3 V),圖3給出的時(shí)隙圖表征了標(biāo)簽不同狀態(tài)的描述、時(shí)隙時(shí)長表示和該狀態(tài)的電流表示等信息,其中準(zhǔn)備模式包括標(biāo)簽的狀態(tài)1到狀態(tài)5,活動(dòng)模式包括標(biāo)簽的狀態(tài)6到狀態(tài)12。
圖3 不同狀態(tài)的描述、時(shí)隙及電流表示情況
Ep的具體表達(dá)式為
Ep=Pps(Tps+Tpl)+Ps(Ts+Tl)
(2)
其中:Pps和Ps分別表示標(biāo)簽在預(yù)喚醒周期與喚醒周期的功率;Tps和Ts分別表示標(biāo)簽在預(yù)喚醒休眠模式與喚醒休眠模式下的時(shí)間;Tpl和Tl分別表示標(biāo)簽在預(yù)喚醒偵聽階段與喚醒偵聽階段下的時(shí)間。
Ea的具體表達(dá)式為
Ea=Ew+EwQ+ErQ+Ews+Et+EwA+ErA+Eto=
UIwTw+UIwQTwQ+UIrQTrQ+UIwsTws+UItTt+
UIwATwA+UIrATrA+UItoTto
(3)
其中:Iw與Tw分別表示喚醒電流與時(shí)間;IwQ與TwQ分別表示等待Query命令的電流與時(shí)間;IrQ與TrQ分別表示接收Query命令的電流與時(shí)間;Iws與Tws分別表示等待自身時(shí)隙的電流與時(shí)間;It與Tt分別表示發(fā)送TagID的電流與時(shí)間;IwA與TwA分別表示等待ACK的電流與時(shí)間;IrA與TrA分別表示接收ACK的電流與時(shí)間;Ito與Tto分別表示接收超時(shí)的電流與時(shí)間。
值得注意的是,Tt表示前導(dǎo)碼持續(xù)時(shí)間Tpr與有效載荷持續(xù)時(shí)間Tpa之和[9]。Tpr與Tpt的表達(dá)式分別為
Tpr=(4.25+Np)Tsy
(4)
(5)
Tpa=NpaTsy
(6)
其中:Np表示已設(shè)定的前導(dǎo)碼長度(取值可參考文獻(xiàn)[13]);Tsy表示符號周期;SF表示擴(kuò)頻因子;B表示帶寬;Npa表示有效載荷符號數(shù)。
對于給定的有效負(fù)載PL、擴(kuò)頻因子SF及編碼率CR,Npa可以表示為
(7)
其中,ceil(·)表示上取整函數(shù);H表示是否啟用LoRa物理層幀格式報(bào)頭,當(dāng)啟用報(bào)頭時(shí),H=1,關(guān)閉報(bào)頭時(shí),H=0;DE表示是否啟用低數(shù)據(jù)速率優(yōu)化,當(dāng)啟用低數(shù)據(jù)速率優(yōu)化時(shí),DE=1,在其他情況下,DE=0。
結(jié)合式(4)-式(7),Tt可以表示為
作為讀寫器管理標(biāo)簽集的基本操作方式,盤點(diǎn)主要完成整個(gè)系統(tǒng)工作流程的測試工作。在單次盤點(diǎn)中,標(biāo)簽在數(shù)據(jù)傳輸成功時(shí)的活動(dòng)能耗可以表示為
Es=Ew+EwQ+ErQ+Ews+Et+EwA+ErA
(8)
此外,當(dāng)數(shù)據(jù)傳輸失敗時(shí),標(biāo)簽的活動(dòng)能耗可以表示為
Er=Ew+EwQ+ErQ+
Ews+Et+EwA+Eto
(9)
穩(wěn)態(tài)情況下系統(tǒng)MAC層的效率決定重傳次數(shù),應(yīng)用幀時(shí)隙ALOHA算法解決標(biāo)簽碰撞問題。單個(gè)標(biāo)簽在一輪盤點(diǎn)中的平均活動(dòng)能耗可以表示為
Eav=Esρs+(1-ρs)ErNav
(10)
其中:Es表示一幀中標(biāo)簽傳輸成功的活動(dòng)能耗;ρs表示標(biāo)簽在一幀中傳輸成功的概率;Er表示標(biāo)簽一次重傳的活動(dòng)能耗;Nav表示單個(gè)標(biāo)簽的平均重傳次數(shù)。
標(biāo)簽在一幀中傳輸成功的概率可以表示為
(11)
其中;L表示時(shí)隙個(gè)數(shù);n表示標(biāo)簽數(shù)量。根據(jù)式(11),單個(gè)標(biāo)簽在第k個(gè)幀中傳輸成功的概率可表示為
(12)
由式(12)可知,在k個(gè)幀中,單個(gè)標(biāo)簽進(jìn)行重傳的平均次數(shù)可表示為
(13)
將式(8)-式(9)、式(11)及式(13)代入式(10),單個(gè)標(biāo)簽在一輪盤點(diǎn)中的平均活動(dòng)能耗可以表示為
(14)
因此,單個(gè)標(biāo)簽在一輪盤點(diǎn)中的平均活動(dòng)消耗時(shí)間可表示為
(15)
Tsu=Tw+TwQ+TrQ+TwsL/2+Tt+TwA+TrA
Tr=Tw+TwQ+TrQ+TwsL/2+Tt+TwA+Tto
其中,傳輸成功時(shí)間Tsu和傳輸失敗時(shí)間Tr均為平均傳輸時(shí)間。
在硬件的實(shí)際調(diào)試中,預(yù)喚醒命令的物理層數(shù)據(jù)幀為5個(gè)字節(jié),其中包括2個(gè)前導(dǎo)字節(jié)、1個(gè)同步字節(jié)、1個(gè)循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check,CRC)字節(jié)以及1個(gè)介質(zhì)訪問控制(Medium Access Control,MAC)數(shù)據(jù)字節(jié)。根據(jù)LoRa協(xié)議,F(xiàn)SK信道的數(shù)據(jù)速率可設(shè)置為38.4 kb/s。預(yù)喚醒命令的具體步驟為標(biāo)簽首先對SX1262進(jìn)行多條SPI操作,SX1262隨后需要等待晶振響應(yīng)并準(zhǔn)備鎖相環(huán)。由文獻(xiàn)[13]可知,預(yù)喚醒的空中時(shí)間是FSK數(shù)據(jù)幀長度與之比約為1.04 ms。SPI操作大約需要50 μs,等待晶振響應(yīng)的TS_OSC大致為250 μs,準(zhǔn)備鎖相環(huán)的TS_FS大致為60 μs,因此,預(yù)喚醒休眠的耗時(shí)大約為1.4 ms。考慮到讀寫器的發(fā)送數(shù)據(jù)幀間隔為4 ms,預(yù)喚醒偵聽的持續(xù)時(shí)間應(yīng)至少為4 ms。
此外,由式(14)-式(15)可知,時(shí)隙數(shù)與標(biāo)簽數(shù)會影響標(biāo)簽活動(dòng)狀態(tài)的功耗,因此,選擇合適的時(shí)隙可以降低標(biāo)簽的重傳概率。
在滿足硬件要求的前提下,經(jīng)過反復(fù)的實(shí)驗(yàn)調(diào)試,最終的測試參數(shù)為LoRa帶寬B=20.8 kHz,擴(kuò)頻因子SF=10,時(shí)隙個(gè)數(shù)L=3,編碼率CR=4/5?;谏鲜鰠?shù),測量得到的各狀態(tài)持續(xù)時(shí)間及相應(yīng)電流測試值如表1所示。
表1 各狀態(tài)的時(shí)間及電流測試值
根據(jù)功耗模型以及測試結(jié)果,可計(jì)算盤點(diǎn)一輪時(shí)標(biāo)簽的平均功耗。由文獻(xiàn)[5]可知,標(biāo)簽數(shù)與時(shí)隙數(shù)相等時(shí)識別效率達(dá)到最高。在標(biāo)簽數(shù)等于時(shí)隙個(gè)數(shù)時(shí)標(biāo)簽消耗能量與標(biāo)簽個(gè)數(shù)的關(guān)系,如圖4所示。當(dāng)標(biāo)簽數(shù)目增多時(shí),標(biāo)簽之間更容易發(fā)生碰撞,這使得標(biāo)簽的重發(fā)次數(shù)增加并消耗更多的能量。從圖4中可以看出,隨著標(biāo)簽數(shù)量的增加,單個(gè)標(biāo)簽的能量消耗也隨之增大。
圖4 標(biāo)簽數(shù)等于時(shí)隙數(shù)時(shí)單個(gè)標(biāo)簽平均功耗
根據(jù)測試結(jié)果,可以計(jì)算標(biāo)簽的平均功耗并進(jìn)一步驗(yàn)證所提功耗模型。
圖5給出了單個(gè)標(biāo)簽平均功耗值隨標(biāo)簽數(shù)量變化的曲線,其中設(shè)計(jì)模型的理論數(shù)值為標(biāo)簽盤點(diǎn)100次的平均功耗。從圖5可以看出,理論曲線與實(shí)測曲線基本擬合。在時(shí)隙數(shù)與標(biāo)簽數(shù)都等于8時(shí),實(shí)測數(shù)值與設(shè)計(jì)模型的理論數(shù)值幾乎完全擬合,因此,壽命分析中選擇L=n=8分析電池壽命。式(15)的理論平均傳輸時(shí)間與標(biāo)簽數(shù)目有直接關(guān)系,進(jìn)而導(dǎo)致功耗計(jì)算出現(xiàn)誤差。因此,相對于理論功耗值,實(shí)測功耗值在標(biāo)簽數(shù)目較小時(shí)整體偏高,在標(biāo)簽數(shù)目較大時(shí)較低。
圖5 單個(gè)標(biāo)簽平均功耗模型驗(yàn)證
根據(jù)測試結(jié)果,可計(jì)算標(biāo)簽的平均時(shí)間并進(jìn)一步驗(yàn)證所提功耗模型。圖6給出了單個(gè)標(biāo)簽平均傳輸時(shí)間值隨標(biāo)簽數(shù)量變化的曲線,其中設(shè)計(jì)模型的理論數(shù)值等于標(biāo)簽盤點(diǎn)100次的平均時(shí)耗。圖6的結(jié)果與圖5基本保持一致,在時(shí)隙數(shù)與標(biāo)簽數(shù)均等于8時(shí),實(shí)測數(shù)值與設(shè)計(jì)模型的理論數(shù)值幾乎完全擬合。從圖6中可以看出,相對于理論功耗值,實(shí)測功耗值在標(biāo)簽數(shù)目較小時(shí)整體偏高,而在標(biāo)簽數(shù)目較大時(shí)較低,表明所建立的功耗模型是較為準(zhǔn)確的。
由式(1)-式(3)可知,標(biāo)簽功耗與預(yù)喚醒周期、喚醒周期以及活動(dòng)周期相關(guān),則標(biāo)簽每天盤點(diǎn)一次的功耗為
Ed=U(hms-Tav-Tsl-Tl)(TpsIpsTplIpl)+
U(TsIs+TlIl)+Eav
(16)
其中:h表示每天的小時(shí)數(shù);m表示每小時(shí)的分鐘數(shù);s表示每分鐘的秒數(shù)。盤點(diǎn)一輪后,當(dāng)SF=10,B=20.8,L=8,n=8時(shí),單個(gè)標(biāo)簽的平均活動(dòng)功耗Eav=4.9 J。此外,當(dāng)SF=10,B=20.8,L=8,n=8時(shí),單個(gè)標(biāo)簽盤點(diǎn)一輪的平均時(shí)長Tav≈37 s。所采用的電池容量為8 000 mAh,在計(jì)算過程中暫不考慮電池的效率和自放電參數(shù)。根據(jù)式(16)能計(jì)算出標(biāo)簽一天的耗能,進(jìn)而得出電池為標(biāo)簽供能的時(shí)間。
不同預(yù)喚醒周期的標(biāo)簽壽命對比情況如圖7所示,從圖7可以看出,加入預(yù)喚醒命令后單個(gè)標(biāo)簽工作壽命隨預(yù)喚醒偵聽時(shí)間變化的曲線,預(yù)喚醒的休眠偵聽總周期范圍為1~60 s。預(yù)喚醒的整體休眠偵聽周期越長、偵聽時(shí)間越短,標(biāo)簽的工作壽命就越長。
圖8給出了有無預(yù)喚醒命令的標(biāo)簽工作壽命對比情況,加入預(yù)喚醒命令后,在預(yù)喚醒命令為4 ms時(shí),單個(gè)標(biāo)簽有預(yù)喚醒命令與無預(yù)喚醒命令的壽命對比。從圖8可以看出,相比于無預(yù)喚醒命令的標(biāo)簽,標(biāo)簽在加入預(yù)喚醒命令后的工作壽命大幅度提高。
圖8 有無預(yù)喚醒命令的標(biāo)簽工作壽命對比
在預(yù)喚醒偵聽時(shí)間為4 ms的理想情況下,表2給出了不同預(yù)喚醒周期及盤點(diǎn)頻率下的電池壽命。由表2可知,當(dāng)預(yù)喚醒周期越長且盤點(diǎn)頻率越低時(shí),電池的壽命越長。然而,該趨勢可能會引發(fā)標(biāo)簽的漏檢情況。因此,在實(shí)際應(yīng)用中需要靈活選擇最佳盤點(diǎn)方案。
表2 預(yù)喚醒周期與盤點(diǎn)頻率不同時(shí)的電池壽命/年
提出了一種基于LoRa協(xié)議與幀時(shí)隙ALOHA算法的低功耗有源電子標(biāo)簽的實(shí)現(xiàn)方法。分析了各硬件組件模塊的功耗特征并建立功耗模型。以Keil 5作為平臺,完成了軟件部分的功耗優(yōu)化。加入預(yù)喚醒機(jī)制,討論了標(biāo)簽休眠周期對標(biāo)簽壽命的影響。測試實(shí)驗(yàn)表明,所提出的功耗模型及其相應(yīng)的分析方法符合實(shí)際情況。