新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于TinyOS的CC2430 RSSI定位的設計與實現

        基于TinyOS的CC2430 RSSI定位的設計與實現

        作者: 時間:2012-06-08 來源:網絡 收藏

        摘要:為解決現Z-Stack程序代碼量大,結構復雜等問題,提出一種TInyOS的方案。在分析組件架構基礎上,盲節點、錨節點與匯聚節點間的無線通信以及匯聚節點與PC機的串口通信。在此基礎上PC對各錨節點(Received Signal Strength Indicator)寄存器值的正確讀取,確定實驗室環境下對教-常態無線傳播模型的具體參數,并采用質心算法來提高精度。實驗顯示,在由四個錨節點組成的4.8x3.6m2矩形定位區域中,通過質心定位算法求得的盲節點坐標為(2.483 1,1.018 5),實際坐標為(2.40,1.20),誤差為0.199 6 m,表明較好地對盲節點的定位。

        本文引用地址:http://www.104case.com/article/148937.htm

        無線傳感器網絡是由分布在給定區域內大量傳感器節點以無線自組織多跳的通信方式構成的網絡系統,目前在環境監測保護、樓宇監控、家庭安防、醫療護理、目標跟蹤、軍事等領域已獲得了廣泛的應用。

        1 芯片介紹

        芯片是TI/Chipcon公司生產的真正意義上的片上系統(SOC)級解決方案,它集增強型工業標準8051核心、優秀的射頻芯片CC24 20、強大的外圍資源于一體。集成的外設資源主要有DMA、定時/計數器、看門狗定時器、AES-128協處理器、8通道8~14位ADC、USART、休眠模式定時器、復位電路及21個可編程I/O,支持IEEE802.15.4和ZigBee協議。

        CC2430芯片具有性能高、功耗低、接收靈敏度高、抗干擾性強、硬件CSMA/CA支持、數字化/LQI支持、DMA支持等特點,支持無線數據傳輸率高達250 kbps.

        2 系統與nesC語言

        由于無線傳感器網絡的特殊性,需要操作系統能夠高效地使用傳感器節點的有限內存、低功耗處理器、多樣傳感器、有限的電源,并且能對各種特定應用提供最大的支持。

        此,UC Berkeley研究人員專為嵌入式無線傳感器網絡開發出系統,目前已經成為無線傳感器網絡領域事實上的標準平臺。 TinyOS系統具有組件化編程、事件驅動模式、輕量級線程技術、主動消息通信技術等特點。TinyOS采用組件架構方式,快速實現各種應用,組件包括網絡協議、分布式服務、傳感器驅動以及數據獲取工具等,一個完整的應用系統通過組合不同的組件來實現。采用事件驅動的運行模型,可以處理高并發性的事件,并實現節能。

        TinyOS應用程序通常由頂層配件、核心處理模塊和其它組件構成。每個應用程序有且僅有一個頂層配件,組件間通過接口進行連接通信,下層組件提供接口,通過provideinterface interfaceName來聲明,上層組件使用接口,通過useinterface interfaceName來聲明。接口提供兩類函數,分別是命令(command)函數與事件(event)函數,上層組件向下層組件發出命令,啟動下層組件的功能:下層組件完成相應的功能后向上層組件報告事件。應用程序總體框架如圖1所示。

        圖1 Tiny OS應用程序框架圖

        TinyOS系統本身以及應用程序都是采用nesC語言編寫,nesC語言是對C語言的擴展,具有類似于C語言的語法,但支持TinyOS的并發模型,同時具有組件化機制,能夠與其他組件連接在一起從而形成一個魯棒性很好的嵌入式系統。nesC語言把組件化/模塊化的編程思想和事件驅動的執行模型緊密結合起來。應用nesC語言能夠更快速方便地編寫基于TinyOS的應用程序。

        3 RSSI定位原理

        RSSI全稱Received Signal Strength Indicator(接收信號強度指示),是一種基于距離的定位算法。RSSI原理是已知發射節點的發射信號強度,接收節點根據接收信號的強度,計算出信號在傳播過程中的損耗,利用理論和經驗模型將傳輸損耗轉化為距離,再根據接收節點的已知位置利用三邊測量法計算出發射節點的位置。由于該方法不需要額外的硬件設備,是一種低功耗廉價的測距技術,因此在很多項目中得到了廣泛的應用。

        本文在RSSI定位基礎上使用質心算法提高定位精度,如圖2所示,最后求得的盲節點坐標為點D、E和F組成的三角形的質心。

        圖2 質心法定位示意圖

        4 定位算法在TinyOS中的實現

        根據RSSI測距原理,要確定盲節點的位置,至少需要三個錨節點(已知位置的接收節點),并需要一個匯聚節點來傳輸各錨節點的RSSI寄存器值到PC機,最終通過串口調試助手來顯示結果并進一步定位盲節點坐標。下面分別介紹移動盲節點、靜態錨節點以及匯聚節點的實現流程。

        4.1 盲節點

        盲節點的主要任務是向所有錨節點廣播信息,具體的流程如圖3所示。

        圖3 盲節點工作流程圖

        Tiny OS程序頂層配件主體如下:

        4.2 靜態錨節點

        錨節點主要功能是接收盲節點的廣播信息,然后提取RSSI寄存器中的值,通過路由層發送接口轉發給匯聚節點,或轉發其它錨節點的數據給匯聚節點。主要實現流程如圖4所示。

        錨節點的組件連接如下:

        靜態錨節點通過CC2420Packet接口來獲取RSSI值,具體函數如下:

        rssi=((int)call CC2420Paeket.getRssi(msg));

        4.3 匯聚節點

        匯聚節點,也稱為基站,主要負責接收各錨節點發送的接收表信息,包括錨節點ID、DSN和RSSI,并將這些數據包通過串口轉發到PC機。具體流程如圖5所示。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 灵山县| 青神县| 潞西市| 荔波县| 习水县| 蕲春县| 塔城市| 南充市| 孝义市| 清新县| 白玉县| 靖宇县| 崇仁县| 霍邱县| 四川省| 柳江县| 和硕县| 高台县| 玛多县| 酒泉市| 丹巴县| 永新县| 文山县| 邵阳县| 江阴市| 南陵县| 兰坪| 三穗县| 江陵县| 玉田县| 若尔盖县| 潍坊市| 石林| 通州市| 镇原县| 伊春市| 青海省| 静乐县| 邓州市| 阳朔县| 迭部县|