周 順,張西紅,殷承浩
(軍械工程學院計算機工程系,石家莊 050003)
TinyOS具有微型化、支持輕量級并發操作、靈活、低功耗等優點,已經被成千上萬的研發人員采用,應用于范圍廣闊的無線傳感器網絡中。TinyOS的設計特點主要體現在以下三個方面:(1)基于組件的編程模型;(2)基于事件觸發的并發執行模型;(3)采用基于主動消息的通信模型。最初TinyOS是由C語言實現的,后來采用nesC語言實現。nesC對C語言進行了擴展,將組件化思想與事件驅動的并發執行模型結合起來,提高了應用開發的方便性和執行的有效性。
在TinyOS中,每個應用程序通常由頂層配置、核心處理模塊和其他組件組成。每個應用程序僅有一個頂層配置,在頂層配置中,說明該應用所要使用的組件及組件間的接口關系。一般而言,與應用的頂層配置相對應的存在一個模塊,以頂層配置名+M.nc命名,此模塊就是該應用的核心處理模塊。如果一個應用程序只需頂層配置將幾個系統組件裝配起來就可實現所需的功能,那么,就不必自定義核心處理模塊,但所用的系統組件中必有一個作為核心處理模塊存在。應用程序的功能決定了所要包含的組件,組件間通過接口進行連接,上層組件調用下層組件的命令,下層組件向上觸發事件。應用程序總體框架如圖1所示。

圖1 應用程序總體框架
一個完整的TinyOS程序就是一個由若干組件按一定層次關系裝配而成的復合組件。TinyOS程序模型如圖2所示。在TinyOS程序模型中,處于最上層的是Main組件。該組件由操作系統提供,傳感器上電復位后會首先執行該組件中的函數,其主要功能是初始化硬件、啟動任務調度器以及執行用戶組件的初始化函數。每個TinyOS程序至少應該具有一個用戶組件,該用戶組件通過接口調用下層組件提供的服務,實現程序功能,如數據采集、數據處理、數據收發等。用戶組件的開發為TinyOS程序設計的重點。TinyOS提供一些常用組件,如執行組件、傳感器組件、通信組件。執行組件用于控制LED指示燈、繼電器、步進電機等硬件模塊;傳感器組件用于采集環境數據,如溫度、亮度等;通信組件則實現與其它節點通信。TinyOS提供了兩種通信組件:通過無線電收發器通信的組件和通過UART口通信的組件,后者僅應用于槽節點中。硬件抽象層對上層組件屏蔽了底層硬件的特性,從而實現上層組件的硬件無關性,以方便程序移植。

圖2 TinyOS基于組件的程序模型
本應用程序sense模擬從傳感器主板上的照片傳感器上獲取光強度值,通過ADC組件將模擬信號轉換為數字信號,以二進制數值的形式將其低三位值顯示在微粒LED上。其實現模塊文件為SenseM.nc,配置文件為 Sense.nc。
首先,進行實現模塊的編寫,代碼如下:



(1)將所編寫的程序文件sense放在c:/Tiny-OS/cygwin/opt/TinyOS-1.x/apps目錄下。
(2)打開一個cygwin。
輸入命令“cd:/TinyOS/cygwin/opt/TinyOS-1.x/apps/sense”,進入應用程序所放目錄,而后運行命令“make pc”,系統自動編譯程序并會在sense目錄下生成一個pc文件夾,其中就是生成的main.exe。
最后輸入命令“build/pc/main.exe-gui 10”(這里的10指設置了10個傳感器節點),程序會自動連接圖形化界面TinyViz,如圖3所示。

圖3 連接圖形化界面
(3)不要關閉cygwin,再打開一個cygwin。
進 入 目 錄 :c:/tinyos/cygwin/opt/TinyOS -1.x/tools/java/net/TinyOS/sim
運行命令:“make”
再運行命令:“java net.TinyOS.sim.TinyViz”
此時,系統將自動打開TinyViz界面,其上顯示的是10個節點亮燈情況,并顯示調試dbg信息,如圖4所示。

圖4 TinyViz中模擬節點采光
在圖4TinyViz界面中顯示10個節點的亮燈情況。在還未運行時每個節點上都有紅、黃、綠三種不同顏色燈。當點擊上方的綠色箭頭按鈕時,仿真軟件即開始進行模擬,模擬中可以看到10個節點中不停地閃爍,模擬獲取光強度值。其中黃燈代表最低位值,綠燈代表第二位值,紅燈代表最高位值。根據紅、綠、黃的亮燈情況來模擬節點所獲取的光強度數值(二進制數值)。同時,在右方Debug信息欄里會顯示節點獲取光強度值及亮燈情況,上方delay進度條可調節延遲時間,左邊Plugins菜單中可以選擇右邊信息框中想要顯示的其他信息。
[1]劉營,于宏毅.基于TinyOS的無線傳感器網絡應用程序開發技術[J].傳感器與微系統,2007,26(3):93-96.
[2]孫利民,李建中,陳渝,等.無線傳感器網絡[M].北京:清華大學出版社,2005:319-390.
[3]邱桂芳,孫宏宇等.傳感器網絡研究及初步實現[J].微計算機應用,2007(4):350-353.
[4]Levis P,LeeN TOSSM:a simulator for TinyOS networks[EB/OL].(2005 -12 -25)[2009 -10 -12].http:∥www.tinyos.net/tinyos-1.x/doc/nido.pdf.