基于TinyOS平臺的RSSI定位系統設計與實現
3.1 總體實驗思路
信標節點:負責發送包含自身位置的數據包到盲節點。盲節點:負責接收信標節點發來的數據包,提取出信標節點的坐標值,并從數據包中獲得RSSI值,在此基礎上計算出自身的坐標值,并將計算出的結果發送到基站節點。基站節點:負責接收所有能夠聽見的數據包,并將其轉發到XServe,最后顯示到XSniffer界面中,如圖3所示。本文引用地址:http://www.j9360.com/article/159403.htm
圖3中,后5位數據是自行定義的,發送給2號節點的5位數據中,前3位是接收到的3個已知節點RSSI值,后兩位是計算出的盲節點坐標值,為便于顯示,最后兩位數據分別擴大了10倍,實際值應當縮小10倍。發送給5號節點的數據是信標節點自身的坐標值。
3.2 具體實現思路
3.2.1 信標節點
實驗中采用3個信標節點,首先分別指定各節點的ID,以便能夠從XSniffer界面中觀察出每個節點發送的數據。信標節點在實驗中起著關鍵的作用,只有保證信標節點與盲節點之間進行正常通信,才可以得到可信的盲節點位置坐標。具體實現思路如下:(1)定義一個緩存區,用于存儲自身的坐標值。(2)設置一個定時器,計時發送出緩存區中的數據到盲節點,指定紅色led燈亮,并通過XSniffer界面觀察發送數據是否正確。(3)數據發送成功,指定綠色led燈亮。
3.2.2 盲節點
實驗目的是測出盲節點的位置,因此盲節點是實驗的目標節點。首先指定其ID,以便在XSniffer界面中讀取數據。其次要保證能夠正常接收并提取信標節點發送的數據,才可以得到可信的自身位置坐標。具體實現思路如下:(1)定義接收和發送兩個緩存區及其對應的變量指針。(2)設置4個不同的計時器,第1個計時器時間到,通過變量指針將接收緩存區中的數據復制到發送緩存區中。第2和第3個計時器時間到,重復上述操作。第4個計時器時間到,利用發送緩存區中數據計算出盲節點坐標值。(3)將盲節點的坐標值發送到基站,并通過XServe到XSni ffer界面讀取數據。
3.2.3 基站節點
基站節點用于接收信標節點和盲節點發送的數據,并將數據向上傳送,使得實驗者能夠明確每個節點發送的數值。具體實現思路如下:(1)定義一個緩存區,用來存儲接收到的數據。(2)利用接收函數接收可以聽到的信號。(3)將接收到數據通過串口傳送到XServe,通過XServe將數據顯示到XSniffer界面中。
4 實驗結果及數據分析
(1)兩個信標節點放置在坐標軸上,另外一個隨機放置。信標節點的坐標設為(0,2),(4,0),(6,6),盲節點坐標如表1和表2所示。
評論