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