曾 論, 張 錚, 陶興鵬, 王 嬋
(湖北工業大學機械工程學院, 湖北 武漢 430068)
?
基于CC2530的室內定位系統設計與實現
曾 論, 張 錚, 陶興鵬, 王 嬋
(湖北工業大學機械工程學院, 湖北 武漢 430068)
為了解決當前室內定位系統精確度低、可靠性差的缺點,設計并實現了一種基于無線傳感器網絡的室內定位系統。系統硬件以CC2530為主控芯片,在節點自主定位基礎上增加了上位機輔助定位模式,在該模式下調用可降低環境變化對定位精度產生干擾的加權質心定位算法。在本定位系統上也可以隨時修改上位機定位算法,方便以后作進一步地改進。經測試表明:本系統運行穩定,易于維護,定位精度較其他定位平臺大大提高。
ZigBee; CC2530; 室內定位; 定位算法
隨著數據業務的快速增加和物聯網技術的發展,對目標進行檢測、定位、跟蹤和導航要求日益增高。在環境復雜的室內(如機場大廳、工廠、展廳、倉儲、地下車場)等常需要確定設施與物品在室內的位置,還有許多如地下礦井安全、大型結構件的吊裝、移動機器人作業與路徑控制、復雜機械監控、城市智能交通等領域不僅需要對移動目標進行定位和跟蹤,有時還需對其姿態調整和路徑導航,所以急切需要開發低成本、高可靠性的室內定位系統。相比于其他無線傳感器網絡通信技術,ZigBee技術低功耗,低成本、高容量、高安全性的特點[1]非常適合于多點數據通信搭建室內定位平臺。本文提出在下位機上統一選用TI出產的CC2530,正是該技術的一款成熟解決方案。
1.1 系統整體結構
ZigBee網絡有星狀、樹狀和網狀3種拓撲結構[2]。網狀結構具有強大的功能,可以通過“多跳”的方式通信。網絡還具備自組織、自愈功能,結構也最復雜;星型網絡具有簡潔和低功耗點特點,使用簡單,性價比高。本文系統采用ZigBee網絡中的網狀拓撲結構,運行在Z-stack2007協議棧上,協調器負責建立網絡和維持系統運轉,參考節點和待定位節點都由路由節點充當,三者之間兩兩可通信。待定位節點可以收集一跳范圍內所有參考節點的信息,以供計算自身位置。也可以將參考節點信息通過協調器轉發到上位機,讓上位機輔助計算定位。系統結構圖如圖1所示。

圖1 系統結構示意圖
1.2 定位原理
系統以基于RSSI(信號接收強度)的測距技術[3]為基礎。該技術主要使用的是RF信號,首先測得待定位節點接收到不同參考節點的信號功率,連同各個參考節點發射時的信號功率,兩者之間的差的絕對值為傳播損耗,然后利用信號傳播衰減模型,將傳播損耗轉化為距離。RSSI理論值
RSSI=-(10n×lg(d)+A)
(1)
式中:d是通信距離,A代表距離為1 m時的接收信號強度,n代表信號傳播常量,通常取值范圍在2.2~4之間。
在室內情況下,分別測出不同距離(距離已知)兩個節點之間的RSSI值,根據RSSI-d曲線可以擬合求解A、n值。 那么就可以根據未知距離下測得的RSSI求得參考節點與待定位節點之間的距離d。在二維平面內,如果有3個(及3個以上)的參考節點B1(x1,y1)、B2(x2,y2)、B3(x3,y3),根據三邊定位算法[4],由歐拉公式得:
(2)
由式(2)可以計算得到待定位節點P(x,y)的坐標為:
(3)
系統中的無線傳輸模塊由德州儀器(TI)公司提供的CC2530芯片組成。CC2530是TI為了實現嵌入式ZigBee而設計的片上系統,使用的8051CPU是一個單周期的兼容內核。它有三種不同的訪問總線,其中包括中斷控制器、內存仲裁器、8 KB SRAM、最高256 KB 閃存、兩個8位定時器、2個支持多種串行通信協議的USART、21個可編程通用I/O引腳[5]。ZigBee模塊電路如圖2所示。

圖2 ZigBee通信模塊射頻電路
每個節點在芯片外圍加上射頻天線模塊、阻抗匹配模塊、供電模塊即可工作。另外,各個節點都加了LED燈,用來顯示組建網絡、加入網絡等情況。

圖3 終端節點示意圖
3.1 協調器功能流程
協調器上電后,先進行硬件電路的初始化,然后按照編譯時給定的參數,選擇合適的信道、合適的網絡號建立ZigBee無線網絡,通過上位機命令發送配置參考節點和待定位節點信息,控制通信方式,也可以接收各個節點的數據,然后上傳到上位機。

圖4 協調器流程圖
3.2 參考節點功能流程
參考節點加入網絡后,根據接收到的數據形式,主要可分為四種功能:將上位機發送配置信息寫入到參考節點flash、讀取配置信息經協調器發送到上位機、多次搜集RSSI、將濾波后的RSSI和自身坐標發送至待定位節點(圖5)。

圖5 參考節點流程
3.3 待定位節點功能流程
待定位節點主要功能流程與參考節點相似,包括節點信息配置、讀取和接收RSSI,不同之處在于待定位節點會向參考節點發送位置請求,參考節點將自身坐標和RSSI值發送到待定位節點后,待定位節點就可以利用這些信息計算自身的坐標位置(圖6)。

圖6 待定位節點流程
3.4 下位機定位算法
質心算法[6]是無需測距的簡單定位算法,對于n個固定參考節點B1(x1,y1)、B2(x2,y2)、B3(x3,y3),…,Bn(xn,yn)組成的定位區域內,采用質心定位算法計算待定位節點P(x,y)的估計坐標:
(7)

(8)
在協議棧上完成待定位節點的定位算法嵌入,定位算法C程序如下:
void locationCalculatePosition( LocRefNode_t *ref, LocDevCfg_t *node )
{
LocRefNode_t *pRef = ref;
const byte stop = ( ( CHVER == 0x01 ) ? LOC_ENGINE_NODE_CAPACITY_REVB :
LOC_ENGINE_NODE_CAPACITY_REVC);
HalLedSet(HAL_LED_2,HAL_LED_MODE_ON);
uint8 i;
LEIXING temp=0;
LEIXING **c=zeros(BlindNode_count,3); //動態開辟二維數組(3列),每列分別存參節//點的x值,y值和RSSI值
LEIXING G[2][1]={0};
for(i=0;i { c[i][0] = pRef->x/4; //x坐標 c[i][1] = pRef->y/4; //y坐標 c[i][2]= fabs(pRef->rssi); //RSSI取絕對值 pRef++; } for(i=0;i { } if(temp!=0) { G[0][0]=G[0][0]/temp;//待定位節點x坐標 G[1][0]=G[1][0]/temp;//待定位節點y坐標 } node->x=(byte)(G[0][0]*4); node->y=(byte)(G[1][0]*4); HalLedSet(HAL_LED_2,HAL_LED_MODE_OFF); freep(c,BlindNode_count); } 4.1 上位機輔助定位算法 在環境變化小、可通信參考節點數量多的情況下,下位機定位算法精度較高,待定位節點計算自身坐標后可以直接在液晶屏上顯示。本系統也在上位機上提供了改進的加權質心定位算法來輔助定位,以適應更加復雜的環境。其基本流程是:待定位節點將接收到各個參考節點的信息并通過協調器轉發到上位機,上位機上使用MATLAB編寫定位算法,利用接收信息計算待定位節點的坐標,生成動態鏈接庫,提供已計算得出的待定位節點坐標,在上位機軟件上顯示。 下位機定位算法只考慮待定位節點到參考節點的RSSI,而沒有加入其他修正算法,環境變化時誤差可能較大,故在上位機輔助定位算法采用改進的加權質心定位算法。該算法中,把待定位節點到各個參考節點的RSSI比值作為每個參考節點對測距影響的權重,就可以保證環境變化時權值變化很小。對于n個固定參考節點B1(x1,y1)、B2(x2,y2)、B3(x3,y3),…,Bn(xn,yn),待定位節點P(x,y)接收到各個參考節點的RSSI值分別為RSSI1,RSSI2,RSSI3,…,RSSIn,定義Rij為待定位節點P接收到Bi、Bj信號接收強度的比值: (9) 那么,第i個參考節點的權值則為: (10) 將式(10)代入式(8)當中,則估計坐標可表示為: (11) 4.2 上位機控制軟件 上位機軟件用VB制作,通過串口控制協調器通信,也可以調用動態鏈接庫數據顯示定位結果。如圖7、圖8所示,分別為上位機給參考節點和待定位節點配置和獲取信息界面。圖9則為上位機輔助定位顯示待定位節點坐標界面。 圖7 參考節點配置 圖8 待定位節點配置 圖9 定位結果界面 5.1 標定A、n值 在室內情況下,任取兩個可通信節點,節點間距由2 m增大到30 m,分別測得每個間距下100次RSSI并求平均值,根據實驗數據得到RSSI-d關系曲線如圖10所示。經過擬合后:y=-35.71×lg(x)-54.84,即可得出A=-54.8,n=3.6。 圖10 A/n 值擬合曲線圖 5.2 定位實驗數據 在湖北工業大學數控中心場地測試,將擬合得到的A、n值寫入圖8所示的“參數A”和“參數N”中,完成100組實驗,取其中8組數據對比,表1、表2分別為上、下位機定位算法精度表。經比較,上位機算法精度顯著高于下位機算法精度。 表1 上位機定位算法精度表 表2 下位機定位算法精度表 本文以CC2530為核心,設計和搭建了特有上位機輔助定位模式的定位平臺。通過實驗測試,本系統可以在較開闊場地達到較高的定位精度,可修改或加入不同的上位機定位算法,比較各種定位算法優缺點,并且提供了友好的操作界面,方便進一步的測試和改進。 [1] 李文仲,段朝玉.ZigBee無線網絡技術入門與實戰[M]. 北京:北京航空航天大學出版社,2007. [2] 高守瑋,吳燦陽.ZigBee技術實踐教程[M].北京航空航天大學出社,2009. [3] 倪 巍,王宗欣. 基于接收信號強度測量的室內定位算法[J].復旦大學學報(自然科學版),2004(43):72-76. [4] 朱 劍,趙 海,孫佩剛,等. 基于 RSSI 均值的等邊三角形定位算法[J].東北大學學報(自然科學版), 2007,28(08):1094. [5] 王小強,歐陽駿,黃寧淋. ZigBee無線傳感器網絡設計與實現[M].北京:化學工業出版社,2012. [6] 章 磊,黃光明. 基于RSSI的無線傳感器網絡節點定位算法[J]. 計算機工程與設計,2010,31(02):291-294. [責任編校: 張 眾] Design and Implementation of CC2530-based Indoor Location system ZENG Lun, ZHANG Zheng,TAO Xingpeng, WANG Chan (1SchoolofMechanicalEngin.,HubeiUniv.ofTech.,Wuhan430068,China) In order to solve the problems of low accuracy, low reliability of the current indoor location system, the present study designed and implemented a kind of indoor positioning system based on Wireless Sensor Network. This system taking CC2530 as the main controlling chip, on the basis of node autonomous positioning, it adds a PC-assisted positioning mode, the improved weighted centroid localization algorithm was invoked. This algorithm could decrease the disturbance of environment change on the position precision. On this positioning system, PC localization algorithm can be modified at any time; it is convenient for further improvement. The test shows that the system is stable, easy to maintain, and improve the positioning precision better than other positioning platforms. ZigBee; CC2530; indoor location; location algorithm 2014-11-26 曾 論(1989-), 男, 湖北漢川人,湖北工業大學碩士研究生,研究方向為嵌入式與智能控制 1003-4684(2015)01-0080-05 TN924 A

4 上位機軟件設計



5 實驗測試



6 結束語