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