CC2431的無(wú)線(xiàn)定位引擎及其應用改進(jìn)
引 言
本文引用地址:http://dyxdggzs.com/article/82487.htmCC2431是TI公司推出的帶硬件定位引擎的片上系統(SoC)解決方案,能滿(mǎn)足低功耗ZigBee/IEEE 802.15.4無(wú)線(xiàn)傳感器網(wǎng)絡(luò )的應用需要。CC2431定位引擎基于RS-SI(Received Signal Strength Indicator,接收信號強度指示)技術(shù),根據接收信號強度與已知參考節點(diǎn)位置準確計算出有關(guān)節點(diǎn)位置,然后將位置信息發(fā)送給接收端。相比于集中型定位系統,RSSI功能降低了網(wǎng)絡(luò )流量與通信延遲,在典型應用中可實(shí)現3~5 m定位精度和0.25 m的分辨率。本文在簡(jiǎn)述基于RSSI定位技術(shù)的基礎上,詳細介紹CC2431無(wú)線(xiàn)定位引擎的功能、特點(diǎn)及使用方法,并且針對CC2431無(wú)線(xiàn)定位引擎定位范圍小和只能進(jìn)行二維定位的不足之處給出了改進(jìn)方法。
1 RSSI定位技術(shù)
RSSI是指節點(diǎn)接收到的無(wú)線(xiàn)信號強度大小。在基于接收信號強度指示RSSI的定位中,已知發(fā)射節點(diǎn)的發(fā)射信號強度,接收節點(diǎn)根據接收到信號的強度計算出信號的傳播損耗,利用理論和經(jīng)驗模型將傳輸損耗轉化為距離,再利用已有的算法計算出節點(diǎn)的位置。該技術(shù)硬件要求較低、算法相對簡(jiǎn)單,在實(shí)驗室環(huán)境中表現出良好特性;但由于環(huán)境因素變化的原因,在實(shí)際應用中往往還需要進(jìn)行改進(jìn)。
2 CC2431無(wú)線(xiàn)定位引擎
CC2431無(wú)線(xiàn)定位引擎基于RSSI技術(shù),定位系統由參考節點(diǎn)和盲節點(diǎn)組成。參考節點(diǎn)是一個(gè)位于已知位置的靜態(tài)節點(diǎn),這個(gè)節點(diǎn)知道自己的位置并可以將其位置通過(guò)發(fā)送數據包通知其他節點(diǎn)。盲節點(diǎn)從參考節點(diǎn)處接收數據包信號,獲得參考節點(diǎn)位置坐標及相應的RSSI值并將其送人定位引擎,然后可以讀出由定位引擎計算得到的自身位置。由參考節點(diǎn)發(fā)送給盲節點(diǎn)的數據包至少包含參考節點(diǎn)的坐標參數水平位置X和豎直位置Y,而RSSI值可由接收節點(diǎn)計算獲得。
2.1 定位引擎
定位引擎的使用非常簡(jiǎn)單,只要將所需參數寫(xiě)入定位引擎,等待定位引擎計算完畢就可以直接讀出計算結果。所需參數如表1所列。
2.2 RSSI參數
當CC2431接收到一個(gè)數據包后會(huì )自動(dòng)將RSSI值添加到該數據包中。RSSI值為數據包接收在開(kāi)始的8個(gè)周期中的平均值,用1個(gè)字節表示。當一個(gè)數據包從CC2431的FIFO中讀出時(shí),倒數第二個(gè)字節包含RSSI值,這個(gè)值在接收到實(shí)際數據包的8個(gè)符號后測量得到,也可在數據包接收的同時(shí)獲得。此時(shí)RSSI將反映當時(shí)接收信號的強度,而不一定是接收到的數據的信號強度,從而增加了大量節點(diǎn)同時(shí)使用信道時(shí)RSSI值出錯的可能性。
CC2431包含一個(gè)RSSI寄存器,此寄存器保留與上述相同的值,但它并不鎖定,因此寄存器值不能用于進(jìn)一步的計算。只有與接收到的數據相關(guān)的被鎖定的RSSI值才能認為是接收數據時(shí)獲得的正確RSSI測量值。
RSSI的理論值可以由式(1)表示:
RSSI=-(10n·lgd+A) (1)
其中,射頻參數A和n用于描述網(wǎng)絡(luò )操作環(huán)境。在全向模式下,射頻參數A被定義為用dBm表示的距發(fā)射端1 m處接收到的信號強度絕對值。如信號強度為-40dBm,那么參數A被定為40。定位引擎的期望參數A為30.0~50.0,精度為0.5。參數A用無(wú)符號定點(diǎn)數值給出,最低位為小數位,而其余各位為整數位。A的一個(gè)典型值為40.0。
射頻參數n被定義為路徑損失指數,它指出了信號能量隨著(zhù)到收發(fā)器距離的增加而衰減的速率。衰減與d-n成比例,這里d是發(fā)射器和接收器之間的距離。實(shí)際寫(xiě)入定位引擎的參數n是一個(gè)通過(guò)查表得到的整數索引值n_index,如表2所列。
例如,通過(guò)測量得到n=2.98,查表得到最接近的有效值為3.00,相應的索引值是13。因此,整數13作為參數n寫(xiě)入定位引擎中。參數n以[0,31]之間的整數索引寫(xiě)入定位引擎,索引用整數表示。如n=7寫(xiě)入為000000111,n的典型值是13。
2.3 參考節點(diǎn)數量
一般來(lái)說(shuō)參考節點(diǎn)越多越好,要得到一個(gè)可靠的定位坐標至少需要3個(gè)參考節點(diǎn)。如果參考節點(diǎn)太少,節點(diǎn)間影響會(huì )很大。一個(gè)錯誤的RSSI值能明顯改變所得的位置坐標,錯誤的RSSI值在此即為不適合理論值的RSSI值,可能由于多路信號或信號被墻壁阻擋等造成。另外,如果盲節點(diǎn)位于參考節點(diǎn)網(wǎng)格外部,很可能結果與實(shí)際使用位置差別很大,因此不應該跟蹤位于網(wǎng)格之外的目標。
2.4 定位算法
首先,定位操作應該使用“最優(yōu)”參考節點(diǎn),即使用具有最高RSSI值的8個(gè)參考節點(diǎn)。其他節點(diǎn)都應放棄。如果得不到8個(gè)節點(diǎn),則應該使用盡可能多的節點(diǎn)。
可用于軟件操作的算法很多,例如在圖1所示的區域中,在X、Y方向上每隔30 m放置一個(gè)參考節點(diǎn),圖中白色節點(diǎn)為盲節點(diǎn),其他節點(diǎn)為參考節點(diǎn)。第1步,確定具有最高RSSI值的一個(gè)節點(diǎn)并計算一個(gè)補償值,使之“移動(dòng)”到64 m×64 m范圍的中心。由于已知來(lái)自此節點(diǎn)的RSSI值,所以到此節點(diǎn)的距離很容易得到。第2步,確定除“最強”節點(diǎn)之外的其他使用節點(diǎn),即圖中黑色節點(diǎn)。所有節點(diǎn)用第1步中的補償值進(jìn)行修正。第3步,所有獲得值送人定位引擎最終讀出結果位置。最后一步,將補償值添加到計算位置中。完成這些計算之后,盲節點(diǎn)在全局網(wǎng)格中的位置就確定了。
2.5 軟件操作
在定位引擎運行之前,必須使能定位引擎寄存器LO-CENG的第4位LOCENG.EN。當要停止定位引擎運行時(shí),應往LOCENG.EN寫(xiě)入0關(guān)斷引擎的時(shí)鐘信號,從而降低CC2431的功耗。對定位引擎的操作,主要就是對與定位引擎有關(guān)的寄存器的操作。
定位引擎運行時(shí)需要輸入3~8個(gè)參考坐標。參考坐標是以m為單位的,它表示各個(gè)參考節點(diǎn)的位置,其數值位于0~63.75,最高精度為0.25 m,以最低2位為小數部分,剩余6位為整數部分。參考坐標存放于RF寄存器REFCOORD中。在寫(xiě)入REFCOORD之前,寄存器LOCENG的第1位LOCENG.REFLD必須寫(xiě)入1,用于指示一組參考坐標將要被寫(xiě)入。一旦坐標寫(xiě)入過(guò)程開(kāi)始(LO-CENG.REFLD=1),8對坐標必須一次性寫(xiě)入。當定位引擎使用少于8個(gè)參考坐標時(shí),要將未用的參考坐標寫(xiě)入0.0。
RSSI值在[-40 dBm,-95 dBm]之間,精度為0.5dBm,寫(xiě)入值中應去掉負號。如RSSI的值為-50.35 dB,寫(xiě)入到定位引擎為50.5。注意,未用的參考坐標必須用0.0作為RSSI值寫(xiě)入。如果僅有部分參數寫(xiě)入,定位引擎將不能正確工作。
所有的測量參數應寫(xiě)入RF寄存器MEASPARM中。在寫(xiě)入MEASPARM之前,寄存器LOCENG的第2位LOCENG.PARLD必須寫(xiě)入1,表示一組測量參數將被寫(xiě)入。一旦參數寫(xiě)入開(kāi)始(LOCENG.PARLD=1),所有10個(gè)參數必須一次性全部寫(xiě)入。測量參數必須按照[A,n,rssi0,rssi1,…,rssi7]順序寫(xiě)入MEASIARM寄存器,任何未使用的位必須寫(xiě)0。10個(gè)參數全部寫(xiě)完之后,LOCENG.PARLD必須寫(xiě)入0。
參數坐標和測量參數寫(xiě)入之后,通過(guò)把寄存器LOCENG第0位LOCENG.RUN寫(xiě)入1啟動(dòng)定位估計計算。通常,LOCENG.RUN被置1后的1 200個(gè)系統周期之后,LOCENG的第3位LOCENG.DONE被置1。此時(shí),估計坐標可從LOCX和LOCY寄存器讀出。定位引擎不產(chǎn)生任何中斷請求。在新的結果被計算出來(lái)或下一次重新啟動(dòng)之前,估計坐標值在LOCX和LOCY中保持有效。
下面給出一個(gè)簡(jiǎn)單的定位引擎操作函數:
定位引擎操作流程如圖2所示。
3 存在問(wèn)題及改進(jìn)
CC2431的無(wú)線(xiàn)定位引擎在應用中存在兩個(gè)問(wèn)題。首先,定位引擎可以處理最高達64 m的X、Y值,對實(shí)際應用來(lái)說(shuō)這個(gè)區域太小,因此擴展區域非常必要。這可以通過(guò)簡(jiǎn)單的軟件預處理算法得到,例如每個(gè)節點(diǎn)用2個(gè)字節的X、Y代表。因為精度為0.25 m,從而最大范圍為16 384 m(214=16 384)。其次,定位引擎得到的只是二維坐標,如何區分不同的水平面,就只能通過(guò)軟件方法處理。例如,可以首先確定最近的參考節點(diǎn)并讀出此節點(diǎn)的水平值。這個(gè)水平值被假定為盲節點(diǎn)所在的層,之后盲節點(diǎn)要保證只有同層節點(diǎn)被輸入到定位引擎當中。水平層用一個(gè)字節Z來(lái)表示,則可以區分256個(gè)不同的層。
結 語(yǔ)
CC2431是一款針對無(wú)線(xiàn)傳感器網(wǎng)絡(luò )ZigBee/IEEE802.15.4的片上系統(SoC)解決方案,其具備的硬件定位引擎具有硬件設備要求低、定位精度高的特點(diǎn),很好地滿(mǎn)足了需求。本文在詳細討論了定位引擎操作原理、使用方法的基礎上,給出了可行的應用擴展方法??梢灶A見(jiàn),CC2431的無(wú)線(xiàn)定位引擎將在無(wú)線(xiàn)網(wǎng)絡(luò )定位方面具有更加優(yōu)異的表現。
評論