1 CC2430芯片介紹
CC2430芯片是TI/Chipcon公司生產的真正意義上的片上系統(tǒng)(SOC)級解決方案,它集增強型工業(yè)標準8051核心、優(yōu)秀的射頻芯片CC24 20、強大的外圍資源于一體。集成的外設資源主要有DMA、定時/計數(shù)器、看門狗定時器、AES-128協(xié)處理器、8通道8~14位ADC、USART、休眠模式定時器、復位電路及21個可編程I/O,支持IEEE802.15.4和ZigBee協(xié)議。
CC2430芯片具有性能高、功耗低、接收靈敏度高、抗干擾性強、硬件CSMA/CA支持、數(shù)字化RSSI/LQI支持、DMA支持等特點,支持無線數(shù)據傳輸率高達250 kbps.
2 TinyOS系統(tǒng)與nesC語言
由于無線傳感器網絡的特殊性,需要操作系統(tǒng)能夠高效地使用傳感器節(jié)點的有限內存、低功耗處理器、多樣傳感器、有限的電源,并且能對各種特定應用提供最大的支持。
基于此,UC Berkeley研究人員專為嵌入式無線傳感器網絡開發(fā)出TinyOS系統(tǒng),目前已經成為無線傳感器網絡領域事實上的標準平臺。 TinyOS系統(tǒng)具有組件化編程、事件驅動模式、輕量級線程技術、主動消息通信技術等特點。TinyOS采用組件架構方式,快速實現(xiàn)各種應用,組件包括網絡協(xié)議、分布式服務、傳感器驅動以及數(shù)據獲取工具等,一個完整的應用系統(tǒng)通過組合不同的組件來實現(xiàn)。采用事件驅動的運行模型,可以處理高并發(fā)性的事件,并實現(xiàn)節(jié)能。
TinyOS應用程序通常由頂層配件、核心處理模塊和其它組件構成。每個應用程序有且僅有一個頂層配件,組件間通過接口進行連接通信,下層組件提供接口,通過provideinterface interfaceName來聲明,上層組件使用接口,通過useinterface interfaceName來聲明。接口提供兩類函數(shù),分別是命令(command)函數(shù)與事件(event)函數(shù),上層組件向下層組件發(fā)出命令,啟動下層組件的功能:下層組件完成相應的功能后向上層組件報告事件。應用程序總體框架如圖1所示。
TinyOS系統(tǒng)本身以及應用程序都是采用nesC語言編寫,nesC語言是對C語言的擴展,具有類似于C語言的語法,但支持TinyOS的并發(fā)模型,同時具有組件化機制,能夠與其他組件連接在一起從而形成一個魯棒性很好的嵌入式系統(tǒng)。nesC語言把組件化/模塊化的編程思想和基于事件驅動的執(zhí)行模型緊密結合起來。應用nesC語言能夠更快速方便地編寫基于TinyOS的應用程序。
3 RSSI定位原理
RSSI全稱Received Signal Strength Indicator(接收信號強度指示),是一種基于距離的定位算法。RSSI原理是已知發(fā)射節(jié)點的發(fā)射信號強度,接收節(jié)點根據接收信號的強度,計算出信號在傳播過程中的損耗,利用理論和經驗模型將傳輸損耗轉化為距離,再根據接收節(jié)點的已知位置利用三邊測量法計算出發(fā)射節(jié)點的位置。由于該方法不需要額外的硬件設備,是一種低功耗廉價的測距技術,因此在很多項目中得到了廣泛的應用。
本文在RSSI定位基礎上使用質心算法提高定位精度,如圖2所示,最后求得的盲節(jié)點坐標為點D、E和F組成的三角形的質心。
4 定位算法在TinyOS中的實現(xiàn)
根據RSSI測距原理,要確定盲節(jié)點的位置,至少需要三個錨節(jié)點(已知位置的接收節(jié)點),并需要一個匯聚節(jié)點來傳輸各錨節(jié)點的RSSI寄存器值到PC機,最終通過串口調試助手來顯示結果并進一步定位盲節(jié)點坐標。下面分別介紹移動盲節(jié)點、靜態(tài)錨節(jié)點以及匯聚節(jié)點的實現(xiàn)流程。
4.1 盲節(jié)點
盲節(jié)點的主要任務是向所有錨節(jié)點廣播信息,具體的流程如圖3所示。