基于二進(jìn)制防碰撞算法的RFID定位系統(tǒng)的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:設(shè)計(jì)了一種以PIC16F877A為主控芯片的RFID定位系統(tǒng),以低成本、低功耗的2.4 GHz CC2500作為射頻收發(fā)芯片。從硬件電路設(shè)計(jì)和軟件設(shè)計(jì)實(shí)現(xiàn)方面闡述了RFID定位系統(tǒng)設(shè)計(jì)的基本流程,并在CC2500的硬件功能基礎(chǔ)之上,采用二進(jìn)制搜索法有效地解決了多標(biāo)簽識(shí)別防碰撞的問題。通過接收標(biāo)簽的RSSI值,采用LANDMARC定位算法實(shí)現(xiàn)精確定位。
關(guān)鍵詞:CC2500;RSSI;RFID;LANDMARC;讀寫器;標(biāo)簽
引言
目前,有很多定位技術(shù)都可以對(duì)物體進(jìn)行定位,但在小區(qū)域(如室內(nèi))定位服務(wù)中,現(xiàn)有的定位技術(shù)存在著一定的缺陷,如GPS技術(shù)用于停車場這種小區(qū)域的定位服務(wù)中,成本太高而且定位精度不高。其他技術(shù)如超聲波技術(shù)、射頻識(shí)別(Radio Frequency Identication,RFID)技術(shù)、IEEE802.11、超寬帶(UWB)等,應(yīng)用于室內(nèi)定位服務(wù),各有優(yōu)劣。射頻識(shí)別定位技術(shù)以其非接觸、非視距、靈敏度高和成本低的優(yōu)點(diǎn),正成為定位系統(tǒng)的優(yōu)選技術(shù)。然而,在實(shí)際應(yīng)用中不可能只對(duì)一個(gè)標(biāo)簽定位,多標(biāo)簽定位必然會(huì)造成標(biāo)簽之間的碰撞,為了解決標(biāo)簽之間的碰撞問題,目前國內(nèi)外所研究的防碰撞算法如下:多址技術(shù)(SDMA、TDMA、CDMA、FDMA),ALOHA防碰撞算法,二進(jìn)制防碰撞算法。其中二進(jìn)制防碰撞算法易于實(shí)現(xiàn)且效率和精度高,近幾年得到廣泛運(yùn)用。
1 設(shè)計(jì)方案
閱讀器采用的是PIC16F877A微控制器,閱讀器與標(biāo)簽都是利用模擬SPI口與CC2500射頻模塊的數(shù)字接口進(jìn)行通信。作為閱讀器部分的PIC 16F877A則用其TXD與RXD引腳通過MAX3232實(shí)現(xiàn)電平轉(zhuǎn)換后,與PC機(jī)的串口相連以實(shí)現(xiàn)讀寫器讀取數(shù)據(jù)的功能。
讀寫器與標(biāo)簽之間的射頻信號(hào)通過空間耦合實(shí)現(xiàn)無線信息傳遞,讀寫器通過與標(biāo)簽的無線通信,獲得接收信號(hào)強(qiáng)度指示(RSSI)值,再采用LANDMAR定位算法,就可以計(jì)算出目標(biāo)的相對(duì)坐標(biāo)位置,實(shí)現(xiàn)精確定位。在大多數(shù)情況下讀寫器在識(shí)別標(biāo)簽時(shí)難免會(huì)出現(xiàn)碰撞的問題,為了解決這一問題,利用二進(jìn)制搜索法來防止多標(biāo)簽識(shí)別時(shí)發(fā)生碰撞。系統(tǒng)框圖如圖1所示。
1.1 微控制器
本系統(tǒng)讀寫器和標(biāo)簽都采用PIC16F877A作為微控制器。PIC16F877A是8位的高性價(jià)比微控制器,并且采用不同的寬度,便于實(shí)現(xiàn)全部指令的單字節(jié)化、單周期化,從而有利于提高CPU執(zhí)行指令的速度。此外,數(shù)據(jù)存儲(chǔ)空間比較大,擁有8K×14個(gè)字節(jié)Flash程序存儲(chǔ)器、368×8個(gè)字節(jié)數(shù)據(jù)存儲(chǔ)(RAM)空間、256×8個(gè)字節(jié)EEPROM數(shù)據(jù)存儲(chǔ)空間。還具有8級(jí)的硬件堆棧、內(nèi)部看門狗定時(shí)器、低功耗休眠模式、25 mA的吸入/拉出電流。外部具有3個(gè)定時(shí)器模塊。它還具有2個(gè)16位捕捉器、2個(gè)16位比較器、2個(gè)10位PWM模塊、10位多通道A/D轉(zhuǎn)換器、通用同步異步接收/發(fā)送器等功能模塊。它具有功耗低、驅(qū)動(dòng)能力強(qiáng)、外接電路簡單、尋址簡單、指令條數(shù)少等優(yōu)點(diǎn)。
微控制器PIC16F877A通過SPI接口與CC2500射頻收發(fā)芯片實(shí)現(xiàn)數(shù)據(jù)的接收與發(fā)送。PC機(jī)可以利用串口調(diào)試助手發(fā)送命令,通過RS232串口連接讀寫器,控制讀寫器與標(biāo)簽之間的一切操作。
1.2 射頻收發(fā)芯片
無線通信的通信距離、通信效率與其主芯片密切相關(guān)。CC2500是一種低成本的2.4 GHz射頻收發(fā)芯片,為低功耗無線應(yīng)用而設(shè)計(jì)。電路工作在2 400~2 483.5 Hz的ISM(工業(yè)、科學(xué)及醫(yī)學(xué))和SRD(短距離設(shè)備)頻率波段。
射頻收發(fā)芯片集成了一個(gè)數(shù)據(jù)傳輸可達(dá)500 kbps的高度可配置的調(diào)制解調(diào)器。通過開啟集成在調(diào)制解調(diào)器上的前向誤差校正選項(xiàng),使性能得到提升。CC2500為數(shù)據(jù)處理、數(shù)據(jù)緩沖、突發(fā)數(shù)據(jù)傳輸、清晰信道評(píng)估、連接質(zhì)量指示和電磁波激發(fā)提供廣泛的硬件支持。CC2500在通信中空中接口的數(shù)據(jù)是以一個(gè)固定格式傳輸,讀寫器和標(biāo)簽之間的數(shù)據(jù)傳輸必須嚴(yán)格按照這個(gè)格式進(jìn)行,否則無法通信。
導(dǎo)言、同步字與CRC校驗(yàn)在發(fā)送數(shù)據(jù)時(shí)是由CC2500硬件自動(dòng)添加,在接收時(shí)由硬件自動(dòng)去除。在信道特性較好的場合,為了提高識(shí)別速度,可設(shè)定16位的導(dǎo)言與16位的同步字。CC2500在固定長度通信模式下,可刪去長度域;在可變長度通信模式,需要8位的長度域給出除去導(dǎo)言與同步字外所有數(shù)據(jù)負(fù)載的字節(jié)數(shù)。其數(shù)據(jù)格式如圖2所示。
CC2500與MCU之間的接口通過SPI接口相連,MCU通過SPI接口向CC2500發(fā)送操作命令,配置其調(diào)制方式、工作頻率等參數(shù),通過命令配置其為接收狀態(tài)、發(fā)送狀態(tài)、空閑狀態(tài)或休眠狀態(tài)。
1.3 低功耗設(shè)計(jì)
本定位系統(tǒng)的標(biāo)簽采用電池供電,是有源標(biāo)簽。而電池是一種消耗性的電源,工作時(shí)間短。為了延長車載卡的工作時(shí)間,需要進(jìn)行電源管理,以降低功耗。當(dāng)前大多數(shù)的電源管理方法采用一種周密設(shè)計(jì)的喚醒、休眠方法。但大多數(shù)情況下,喚醒周期的大部分時(shí)間是無用的,消耗能量。本系統(tǒng)中采用一種無線觸發(fā)喚醒的電源管理方法。在這種方法中,有源標(biāo)簽進(jìn)入休眠模式后就會(huì)一直保持睡眠狀態(tài),在讀寫器沒有發(fā)送出特定頻率的無線信號(hào)時(shí),它是不會(huì)被喚醒的。當(dāng)然,這個(gè)特定頻率的無線信號(hào)會(huì)立即喚醒休眠的標(biāo)簽。這樣,就節(jié)省了在喚醒前和監(jiān)測期間的電源消耗。喚醒脈沖通過特定頻率傳送,而數(shù)據(jù)通信采用另外的無線頻率傳送。一旦讀寫器與標(biāo)簽建立通信連接后,雙方便跳到由讀寫器指定的固定頻率上工作,這樣即使車場中其他標(biāo)簽在無線通信范圍內(nèi)也不會(huì)被喚醒,避免了同頻干擾。無線觸發(fā)喚醒電路主要由無源元件構(gòu)成,其基本電路如圖3所示。
2 多標(biāo)簽的防碰撞算法
要實(shí)現(xiàn)多目標(biāo)識(shí)別,必然要解決下述問題:在一個(gè)讀寫器的范圍內(nèi)有多個(gè)電子標(biāo)簽時(shí),由于所有電子標(biāo)簽都采用同一工作頻率,故當(dāng)多個(gè)電子標(biāo)簽同時(shí)傳輸數(shù)據(jù)就會(huì)產(chǎn)生數(shù)據(jù)沖突,使各電子標(biāo)簽之間的傳輸相互干擾,進(jìn)而導(dǎo)致信息的丟失,這就是通常所說的碰撞問題。在電子標(biāo)簽和讀寫器的通信過程中一般會(huì)有3種形式的碰撞:標(biāo)簽碰撞、讀寫器干擾、標(biāo)簽干擾。本文主要研究標(biāo)簽碰撞。
二進(jìn)制搜索法又名二叉樹搜索法,所有用二進(jìn)制唯一標(biāo)簽的電子標(biāo)簽的ID號(hào)可以看成一棵完全二叉樹。在讀寫器作用范圍內(nèi),同步向讀寫器發(fā)送信號(hào)的標(biāo)簽ID號(hào)也構(gòu)成一棵二叉樹。讀寫器根據(jù)信號(hào)碰撞的情況反復(fù)對(duì)完全二叉樹的分枝進(jìn)行篩選,最終找出這棵二叉樹。在尋找的過程當(dāng)中逐一確定作用區(qū)域內(nèi)響應(yīng)的標(biāo)簽,同時(shí)也完成了它們與讀寫器之間的信息交換。
接下來將通過一個(gè)實(shí)例對(duì)二進(jìn)制搜索算法具體實(shí)現(xiàn)過程進(jìn)行詳細(xì)的說明。采用ID為8位的4個(gè)標(biāo)簽,其ID分別為10110010、10100011、101 10011、11100011。
二進(jìn)制搜索步驟如下:
①讀寫器設(shè)置篩選條件ID<11111111,向標(biāo)簽發(fā)送請(qǐng)求。
②閱讀區(qū)內(nèi)的所有標(biāo)簽均符合篩選條件,響應(yīng)讀寫器的請(qǐng)求,發(fā)送各自的ID。
③讀寫器檢測到第2、4、8位發(fā)生碰撞,即1X1X001X讀寫器將碰撞的最高位置0,其余低位置1,重新設(shè)定篩選
條件ID<10111111,向標(biāo)簽發(fā)送請(qǐng)求。
④標(biāo)簽10110010、10100011、10110011響應(yīng)讀寫器請(qǐng)求,發(fā)送各自的ID。
⑤讀寫器檢測到第4、8位發(fā)生碰撞(即101X001X),讀寫器將碰撞最高位置0,其余低位置1,重新設(shè)定篩選條件為ID<10101111,向標(biāo)簽發(fā)送請(qǐng)求。
⑥標(biāo)簽10101111響應(yīng)讀寫器的請(qǐng)求,發(fā)送ID號(hào)。
⑦讀寫器檢測到?jīng)]有碰撞發(fā)生,成功識(shí)別出標(biāo)簽10100011,然后使標(biāo)簽10100011處于休眠狀態(tài),完成對(duì)標(biāo)簽的讀寫。
⑧瀆寫器重新設(shè)定篩選條件為ID<11111111,重復(fù)識(shí)別過程,直至所有標(biāo)簽識(shí)別出來。
二進(jìn)制搜索算法的識(shí)別示意圖如圖4所示。
3 定位算法
LANDMARC定位算法是一種經(jīng)典的基于有源RFID的室內(nèi)定位算法,設(shè)計(jì)的思想是采用額外的固定參考標(biāo)簽(或稱為輔助標(biāo)簽),這些參考標(biāo)簽在該定位系統(tǒng)中作為參考點(diǎn)使用,通過參考點(diǎn)的信號(hào)強(qiáng)度值與待定位標(biāo)簽的信號(hào)強(qiáng)度值之間的比較,計(jì)算出待定位標(biāo)簽的坐標(biāo)。由于讀寫器獲得到的相鄰標(biāo)簽的RSSI也是相近的,所以LANDMARC算法通過比較閱讀器接收到的待定位標(biāo)簽與參考標(biāo)簽強(qiáng)度值的大小來求得離待定標(biāo)簽距離的幾個(gè)參考標(biāo)簽,然后根據(jù)這幾個(gè)最相鄰參考標(biāo)簽的坐標(biāo),并結(jié)合它們的權(quán)重,用經(jīng)驗(yàn)公式計(jì)算出待定位標(biāo)簽的坐標(biāo)。LANDMARC方法具有較高的定位精度,可擴(kuò)展性好,能處理比較復(fù)雜的環(huán)境,是一種經(jīng)常使用的定位方法。
LANDMARC定位算法具有3個(gè)特點(diǎn):
◆采用多個(gè)低廉的標(biāo)簽代替昂貴的讀寫器,節(jié)省了開支;
◆可以較好地適應(yīng)環(huán)境所引起的動(dòng)態(tài)因素;
◆定位信息與其他定位技術(shù)比較,更加精確、可靠。
LANDMARC定位算法支持移動(dòng)和動(dòng)態(tài)的屬性,可以更好地完成一些接近實(shí)時(shí)傳感的工作。當(dāng)然,輔助標(biāo)簽和閱讀器擺放的位置對(duì)定位的精度有一定的影響。
LANDMARC定位算法采用了一種稱為“最鄰近距離”的思想。理論上,當(dāng)某個(gè)待定位標(biāo)簽與參考標(biāo)簽的距離相臨近,那么它們?cè)谕粋€(gè)RF ID閱讀器中所獲得的信號(hào)強(qiáng)度值應(yīng)該也是相臨近的,基于這種思想以及在實(shí)驗(yàn)中得到的一些經(jīng)驗(yàn)公式,可以求解出待定位標(biāo)簽的坐標(biāo)位置。
無線信號(hào)的接收信號(hào)強(qiáng)度和信號(hào)傳輸距離的關(guān)系可以用式(1)來表示,其中RSSI是接收信號(hào)強(qiáng)度,d是收發(fā)節(jié)點(diǎn)之間的距離,n是信號(hào)傳播因子,EAF是環(huán)境因子(即實(shí)際實(shí)驗(yàn)環(huán)境對(duì)理論實(shí)驗(yàn)結(jié)果的影響因數(shù)),射頻參數(shù)A定義為距讀寫器1 m時(shí)接收到信號(hào)平均能量的絕對(duì)值。
RSSI=-(A+10nlgd)-EAF (1)
可以看出,常數(shù)A和n的值決定了接收信號(hào)強(qiáng)度和信號(hào)傳輸距離的關(guān)系。射頻參數(shù)A和n用于描述網(wǎng)絡(luò)操作環(huán)境。射頻參數(shù)A被定義為dBm表示距發(fā)射機(jī)1 m時(shí)接收到信號(hào)平均能量的絕對(duì)值,如平均接收能量是-20 dBm,那么參數(shù)A就被定義為20。射頻參數(shù)n指出了信號(hào)能量隨著收發(fā)器距離增加而衰減的速率,其數(shù)值的大小取決于無線信號(hào)傳播的環(huán)境。通過大量的驗(yàn)證,在開曠的操場上得到了環(huán)境因子EAF的大概值為13.6 dBm,A取46dBm,n取3.5 dBm。
通過中值策略取得RSSI值,依據(jù)式(1)可得到待定位標(biāo)簽到讀寫器的直線距離,3個(gè)讀寫器的位置分別是p1(x1,y1),p2(x2,y2).p3(x3,y3)。則待定位的坐標(biāo)計(jì)算如下式:
為了確定當(dāng)前實(shí)驗(yàn)環(huán)境的RSSI的情況,做了如下實(shí)驗(yàn)。在距離讀寫器0 m開始,以0.5 m為間隔一直到35 m的擺放標(biāo)簽,并分別采集各點(diǎn)的RSSI值10次,再求平均值。從結(jié)果可以看出RSSI值與距離變化的情況基本與理論符合,可以作為實(shí)驗(yàn)數(shù)據(jù)使用。RSSI隨距離的變化曲線如圖5所示。
本文用了3個(gè)讀寫器,且相互不產(chǎn)生碰撞,9個(gè)待定位標(biāo)簽進(jìn)行實(shí)際定位。9個(gè)待定位標(biāo)簽分別放在3×3的正方形區(qū)域各個(gè)點(diǎn)上,臨近的參考標(biāo)簽之間相隔2 m,具體放置的示意圖如圖6所示。
為了直觀地看出定位的誤差,將理論坐標(biāo)和實(shí)際坐標(biāo)列出定位誤差,如表1所列,求出定位時(shí)產(chǎn)生的誤差。
通過LANDMARC定位算法可以看出定位的精度效果還是很明顯的,基本保持在1 m,效果還是相當(dāng)不錯(cuò)的,實(shí)現(xiàn)了RFID的精確定位。
4 軟件設(shè)計(jì)
軟件的開發(fā)以MPLAB IDE 7.4為平臺(tái),應(yīng)用C語言進(jìn)行編寫,提高了軟件設(shè)計(jì)開發(fā)的工作效率,增強(qiáng)了程序代碼的可靠性、可讀性和可移植性。具體的軟件設(shè)計(jì)流程如圖7所示。
結(jié)語
本文主要介紹了一種基于PIC16F877A和CC2500的RFID定位設(shè)計(jì)方案,對(duì)硬件模塊和軟件模塊進(jìn)行了詳細(xì)的介紹,對(duì)二進(jìn)制搜索法防碰撞算法和LANDMARC定位算法進(jìn)行了詳細(xì)的介紹,并且利用LANDMARC定位算法保證室內(nèi)定位的精度。在實(shí)際的實(shí)驗(yàn)中采集到大量數(shù)據(jù),通過對(duì)數(shù)據(jù)分析驗(yàn)證了定位系統(tǒng)的可行性和準(zhǔn)確性。