范靜輝,葉 宏
(上海師范大學信息與機電工程學院,上海 200234)
ZigBee是一種新興的低成本、短距離、自配置、低速率以及低功耗的無線網絡技術,具有比較完善的防碰撞機制、節點管理體系及電源功耗管理功能[1]。選用的無線收發芯片型號是A7105,A7105是一低成本2.4 GHz ISM頻段的無線應用射頻芯片。A7105內建接收信號強度指示RSSI和ADC偵測使用電壓。
在無線傳感器網絡中,傳感器節點間的測距方法是一些基于測距的定位算法的基礎。測量節點間距離或方位時常用的方法有基于到達時間(TOA)、基于到達時間差(TDOA)、基于到達角度(AOA)和基于接收信號強度指示(RSSI)的方法[2],本文采用基于RSSI的測距,因為此方法無須額外的硬件設備,是一種低功率、廉價的測距技術,但是因為無線信號受反射、多徑傳播、非視距傳播等問題影響,使得相同距離產生不同的傳播損耗,因此,為了獲取更加準確的RSSI,先通過中值過濾器(先把RSSI數據排序,設定閾值,根據閾值來取值),再經過均值過濾器的方法,以去除那些偏差較大的RSSI,提高了RSSI的精度。在定位過程中,本文采用基于極大似然估計法加權取均值的定位優化算法,此種定位方法提高了定位的精度。上位機利用LabVIEW軟件開發,LabVIEW是一種圖形化編程語言,采用工程技術人員所熟悉的術語和圖形化符號代替常規的文本語言編程,具有界面友好、操作簡便、操作周期短等特點[3]。本文上位機的作用是采集RSSI,實現算法及顯示。
1.1.1 RSSI測距原理
基于RSSI(接收信號強度)測距算法:在發射節點的發射功率確定的情況下,可以根據接收節點接收到的功率,利用理論和經驗模型,得出能量損耗與距離的關系。
一般采用的RSSI測距原理如式(1)所示

式中:RSSI是接收信號強度;A為常數;d是收發節點之間的距離;n是信號傳播因子。常數A和n的值決定了接收信號強度RSSI和傳輸距離d的關系。A和n的數值易受多種因素影響[4]。此種測距方法需確定A和n兩個常數值,實現過程較復雜。
本文采用的RSSI測距原理:由于當發射節點設置不同的發射功率情況下,接收節點收到的RSSI與信號傳輸距離d的線性范圍不一樣,因此,在特定的環境中,可以通過改變發射節點的發射功率,來調節RSSI與信號傳輸距離呈線性關系的范圍,根據接收節點接收到的不同距離處的RSSI,擬合出一個適用于此特定環境的函數表達式,可以將接收到的RSSI轉化為距離[5]。
1.1.2 本文獲取RSSI值算法
假設 Mi(i=1,2,…,n)為未知節點,Nj(j=1,2,…,n)為固定節點,為固定節點Nj接收到未知節點Mi的RSSI,針對一個固定節點,一組采集十次,獲取10個RSSIij,由小到大排序得到:RSSIij1,RSSIij2,…,RSSIij10,然后求得這組數據的中值mid(RSSIij),為了去除掉那些因環境因素影響嚴重的RSSI,在這里,取一個門限值β,令

取出落在mid(RSSIij±β)的RSSI,然后求出其均值,即為RSSIij值。
1.2.1 極大似然估計法定位算法
在無線傳感器網絡定位算法中,如果知道移動節點與參考節點之間距離個數不小于3個時,可使用極大似然估計法來定位。
極大似然法的原理如圖1所示。假設1,2,3,…,n個參考節點的坐標分別為 (xi,yi)(i=1,2,…,n),它們到移動節點的距離分別為di(i=1,2,…,n),設移動節點P的坐標為(x,y)。

圖1 極大似然法原理圖
可得到

依次從第一個方程減去第n個方程得到

則式(4)可以用線性方程AX=b表示,其中

使用最小均方差得節點P的坐標為

1.2.2 本文定位優化算法
假設有m(m≥4)個固定節點,令p=C4m,則可獲得p 個定位的坐標分別為 N1=(x1,y1),N2=(x2,y2),…,Np=(xp,yp)。在這p個定位坐標中,可能有的定位坐標偏差比較大,為了刪除掉那些偏離大多數定位坐標的坐標值,保留差別不大的坐標值。需要設置一個權值閾值,如式(9)所示

式中:k=1,2,…,p;wk愈小,說明第k個定位坐標值愈接近其余(p-1)個定位坐標值;反之,當wk愈大,說明第k個定位坐標值愈遠離其余(p-1)個定位坐標值。因此,可以設置一個閾值W,若wk≤W,則保留相對應的定位坐標值Nk;反之,若wk>W,則刪除掉相對應的定位坐標值Nk。
假設經過閾值判斷,保留了q個坐標值。然后根據這q個坐標的權值,求出其均值,如式(10)所示

這部分主要完成數據采集、定位算法和定位結果顯示界面。
程序流程圖如圖2所示,先判斷幀頭正確之后,接收來自5個基站發送的數據,提取出RSSI。先利用生產者循環存RSSI,然后通過消費者循環讀數據并存入數組,數組元素達到50個時,利用抽取數組子程序,得到各個基站發送的10個RSSI,然后,通過中值和均值過濾,獲得RSSI,帶入擬合公式,再利用本文定位優化算法求出定位坐標并顯示。

圖2 程序流程圖
前面板如圖3所示,需配置基站的坐標值。

圖3 坐標顯示界面(截圖)
在實驗階段,首先為了保證試驗模塊的一致性,減少實驗誤差。采用的方法是在可視距離內,接收模塊固定不變,別的被測模塊在4個方向不同距離處,進行多次測量取均值,根據最終測得的RSSI來選擇出具有一致性的試驗模塊。
其次,選擇合適的DataRate,全向天線和讀取一幀數據的時間等,經過實驗測試,設置的DataRate是250 kbit/s,全向天線的增益是0 dBm,讀取一幀數據的時間為20 μs。
當這些試驗參數都確定的情況下,在室內可視范圍內,使用那些具有一致性的無線模塊,通過在1~6 m,間隔為0.5 m,每個位置取值10次,在不同發射功率的情況下,利用先排序、濾波再取均值的方法獲得RSSI,通過MATLAB把RSSI與距離值進行擬合之后的圖像如圖4所示。

圖4 RSSI與距離的擬合圖

擬合的一次函數表達式如式(11)所示定位實驗部分:在室內,2 m高的平面內,布置了5個固定節點,5個固定節點的ID號及坐標分別為:01#(2.5,0);02#(0,1);03#(0,4);04#(2.5,5);05#(4.5,2.5),并且固定節點之間可視。
實驗結果見圖5。

圖5 實驗測得結果①
設R為通信半徑,經過實驗測得R為70 m。誤差的計算公式如式(12)所示

定位誤差比較結果見表1。

表1 定位誤差比較
本文在獲得RSSI時采用先排序、再濾波進而取均值的方法,抑制了那些因多徑效應、反射而讀到的錯誤數據,提高了獲取RSSI的精度;在5個固定節點獲得未知節點的RSSI之后,定位的方法采用了基于極大似然估計法加權取均值的定位優化算法,與極大似然估計算法相比較,提高了定位的精度。但仍然存在一些需要改進的地方,比如可以增加固定節點數目、調整更為理想的參數,使得獲取RSSI的速度更快、更準確。另外,上位機部分也需要改進,這些都會在以后的研究中進一步完善。
[1]瞿雷.Zigbee技術及應用[M].北京:北京航空航天大學出版社,2007.
[2]孫利民.無線傳感器網絡[M].北京:清華大學出版社,2005.
[3]雷振山.LabVIEW高級編程與虛擬儀器工程應用[M].北京:中國鐵道出版社,2009.
[4]CEYLAN O,TARAKTAS K F,YAGCI H B.Enhancing RSSI technologies in Wireless sensor networks by using Different frequencies[C]//Proc.the Fifth International Conference on Broadband and Wireless Computing,Communication and Applications,BWCCA 2010.Fukuoka,Japan:Fukuoka Institute of Technology,2010:369-372.
[5]YAN Jiajun.Neighbour discovery for transmit power adjustment in IEEE 802.15.4 using RSSI[D].Chengdu:Sichuan University,2011.
[6]XU Riming.Study on RSSI-based indoor wireless location program[D].Nanjing:Nanjing University of Aeronautics and Astronautics,2010.