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