《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于μC/OS-Ⅱ的無線傳感器網(wǎng)絡(luò)系統(tǒng)的設(shè)計
基于μC/OS-Ⅱ的無線傳感器網(wǎng)絡(luò)系統(tǒng)的設(shè)計
來源:微型機(jī)與應(yīng)用2012年第21期
戎 舟1,吳 夢2,吳 為3
(1.南京郵電大學(xué) 自動化學(xué)院,江蘇 南京 210003; 2.上海綠地能源(集團(tuán))有限公司,上海
摘要: 以適用于環(huán)境監(jiān)測的無線傳感器網(wǎng)絡(luò)系統(tǒng)為對象,設(shè)計并開發(fā)了相應(yīng)的節(jié)點硬件。將μC/OS-Ⅱ?qū)崟r操作系統(tǒng)移植于匯聚節(jié)點的處理器上,并結(jié)合無線傳感器網(wǎng)絡(luò)匯聚節(jié)點的特性,設(shè)計了合理的多任務(wù)調(diào)度機(jī)制。傳感節(jié)點設(shè)計了實時采集和按需采集兩種工作方式。開發(fā)了串口通信程序,實現(xiàn)了傳感器節(jié)點數(shù)據(jù)的實時監(jiān)控。測試結(jié)果表明,該系統(tǒng)運(yùn)行良好。
Abstract:
Key words :

摘  要: 以適用于環(huán)境監(jiān)測的無線傳感器網(wǎng)絡(luò)系統(tǒng)為對象,設(shè)計并開發(fā)了相應(yīng)的節(jié)點硬件。將μC/OS-Ⅱ?qū)崟r操作系統(tǒng)移植于匯聚節(jié)點的處理器上,并結(jié)合無線傳感器網(wǎng)絡(luò)匯聚節(jié)點的特性,設(shè)計了合理的多任務(wù)調(diào)度機(jī)制。傳感節(jié)點設(shè)計了實時采集和按需采集兩種工作方式。開發(fā)了串口通信程序,實現(xiàn)了傳感器節(jié)點數(shù)據(jù)的實時監(jiān)控。測試結(jié)果表明,該系統(tǒng)運(yùn)行良好。
關(guān)鍵詞: 無線傳感器網(wǎng)絡(luò);μC/OS-Ⅱ操作系統(tǒng);無線通信;串口通信

 無線傳感器網(wǎng)絡(luò)WSN(Wireless Sensor Network)是近年來信息科學(xué)領(lǐng)域一個熱門的研究方向,它集成了無線通信技術(shù)、嵌入式技術(shù)、傳感器技術(shù)和分布式信息處理,能相互配合對環(huán)境或各種對象進(jìn)行實時的監(jiān)測和感知,其被廣泛應(yīng)用于軍事[1]、環(huán)境監(jiān)測[2]、動植物監(jiān)視[3]、智能家具[4]和健康結(jié)構(gòu)監(jiān)測[5]等多個領(lǐng)域。
 無線傳感器網(wǎng)絡(luò)具有很強(qiáng)的應(yīng)用相關(guān)性,不同的應(yīng)用和需求對網(wǎng)絡(luò)結(jié)構(gòu)和軟硬件的要求都不一樣。很多商用的WSN系統(tǒng)存在源代碼不公開、整個系統(tǒng)或單個節(jié)點價格過高以及對于某一具體應(yīng)用適應(yīng)差等問題。本文圍繞無線傳感器網(wǎng)絡(luò)應(yīng)用的關(guān)鍵技術(shù),開發(fā)了一個適用于室內(nèi)環(huán)境監(jiān)控的實時數(shù)據(jù)收集的無線傳感器網(wǎng)絡(luò)系統(tǒng)。
1 系統(tǒng)設(shè)計
 在分析了幾種常見的無線傳感器網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)后,本文選取了分簇結(jié)構(gòu)作為系統(tǒng)的拓?fù)浣Y(jié)構(gòu)。與一般分簇結(jié)構(gòu)不同,采用中繼節(jié)點作為簇頭,一方面增加了網(wǎng)絡(luò)的傳輸距離,另一方面由于簇頭能量消耗較快,只要更換極少部分簇頭的能量就可以延長網(wǎng)絡(luò)的壽命。簇頭也可以擔(dān)任節(jié)點的任務(wù)進(jìn)行數(shù)據(jù)采集。圖1為無線傳感器網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖。

1.1 硬件設(shè)計
 在選擇節(jié)點的處理器方面,主要考慮的因素包括價格、功耗、開發(fā)工具成本、片內(nèi)集成的RAM、Flash及EEPROM大小等。目前已經(jīng)商用的WSN節(jié)點,如Mica、Mica2 Dot、T-Nodes、Fleck等,都采用ATmega128作為CPU,一些自行開發(fā)的節(jié)點,參考文獻(xiàn)[6]、[7]也采用ATmega128。
 無線通信芯片選擇nRF24L0,其采用2.4~2.5 GHz世界通用ISM頻段,最高數(shù)據(jù)傳輸速率可達(dá)2 Mb/s,125頻道滿足多點通信和跳頻通信需要,發(fā)射和接收模式消耗的電流都比較低,而且高速鏈路層完全集成在芯片上,非常便于軟硬件的開發(fā)。
 Sink節(jié)點的硬件結(jié)構(gòu)如圖2虛線框部分所示。其中,串口通信模塊負(fù)責(zé)Sink節(jié)點與計算機(jī)的連接,將收集的數(shù)據(jù)傳送到計算機(jī)上進(jìn)行顯示。

 采集節(jié)點的硬件結(jié)構(gòu)與圖2相似。采用溫度傳感器AD590和Honeywell的氣體質(zhì)量流量傳感器AWM3200CR分別對溫度和空氣壓差參數(shù)進(jìn)行轉(zhuǎn)換,然后采用ATmega128內(nèi)的ADC將模擬信號轉(zhuǎn)成數(shù)字信號。串口模塊用于PC向節(jié)點下載程序。
1.2 Sink節(jié)點軟件設(shè)計
?。?)通信模塊軟件
 nRF24L01的數(shù)據(jù)包處理方式主要分直接收發(fā)模式、ShockBurst模式和增強(qiáng)型ShockBurst模式3種。在本文中,nRF24L01無線通信模塊都是采用增強(qiáng)型ShockBurst模式。根據(jù)nRF24L01在增強(qiáng)型ShockBurst模式下接收的步驟,設(shè)計了匯聚節(jié)點接收程序的設(shè)計。
為了提供從傳感器節(jié)點到匯聚節(jié)點的中繼轉(zhuǎn)發(fā),還設(shè)計了中繼節(jié)點,利用nRF24L01工作方式和信道切換來完成收發(fā)方式的轉(zhuǎn)變。
?。?)μC/OS-Ⅱ的移植與在匯聚節(jié)點上的應(yīng)用
 μC/OS-Ⅱ是由LABROSSE J J編寫的一種源碼公開的嵌入式實時操作系統(tǒng)。程序大部分用C語言編寫,帶有少量的匯編,適合小型控制系統(tǒng),具有執(zhí)行效率高、占用空間小、實時性能優(yōu)良及可擴(kuò)展性強(qiáng)等特點。本設(shè)計成功地將μC/OS-Ⅱ操作系統(tǒng)移植到ATmega128處理器上。
 移植完成后,實現(xiàn)μC/OS-Ⅱ操作系統(tǒng)在匯聚節(jié)點中的應(yīng)用。首先在main函數(shù)中初始化無線芯片、串口、ATmega128的SPI等,然后函數(shù)創(chuàng)建不同優(yōu)先級的任務(wù),最后啟動μC/OS-Ⅱ操作系統(tǒng)。由于匯聚節(jié)點要接收來自不同采集節(jié)點的數(shù)據(jù),本文設(shè)計了多任務(wù)調(diào)度機(jī)制,分別利用不同的信道接收來自傳感器節(jié)點的數(shù)據(jù)。利用定時器和信號量機(jī)制分配時間,在一段時間內(nèi)接收第一個傳感器節(jié)點的數(shù)據(jù),然后這個任務(wù)放棄CPU使用權(quán),第二個任務(wù)切入,接收來自第二個傳感器節(jié)點的數(shù)據(jù),依次循環(huán)。中斷轉(zhuǎn)發(fā)程序設(shè)計流程如圖3所示。

1.3 采集節(jié)點軟件設(shè)計
 本系統(tǒng)主要設(shè)計了基于實時數(shù)據(jù)采集方式和基于按需數(shù)據(jù)采集方式兩種基于不同數(shù)據(jù)采集的方式。在這兩種方式中,收發(fā)的轉(zhuǎn)變由對nRF24L01工作方式的設(shè)置和信道切換來完成。
?。?)實時數(shù)據(jù)收集方式
 這種方式實際上是單向上行的數(shù)據(jù)傳輸結(jié)構(gòu)。具體流程如下:
?、賁ink節(jié)點和簇頭節(jié)點初始化處于等待接收狀態(tài);
?、诖貎?nèi)節(jié)點將數(shù)據(jù)以一定格式傳送給簇頭;
?、鄞仡^將接收的數(shù)據(jù)合成,切換信道收發(fā)模式后,發(fā)送給Sink;
?、躍ink節(jié)點接收,通過串口傳輸給PC處理后顯示;
?、荽仡^再一次切換收發(fā)模式等待新的數(shù)據(jù)。
 這里,簇頭的設(shè)計涉及到無線數(shù)據(jù)的點對點收發(fā)、一對多收發(fā)以及收發(fā)模式切換的程序設(shè)計。
?。?)按需數(shù)據(jù)收集方式
 這種方式是一種雙向的數(shù)據(jù)傳輸,在PC采集節(jié)點1的信號時,其他節(jié)點為睡眠狀態(tài),從而節(jié)約能量。具體流程如下:
?、貾C向Sink節(jié)點發(fā)送讀取命令;
?、赟ink節(jié)點接收命令后向簇頭節(jié)點發(fā)送讀取命令,信道切換給簇頭1;
?、鄞仡^接收到命令后將信道切換至節(jié)點1,節(jié)點1處于發(fā)送模式;
?、芄?jié)點1進(jìn)行連續(xù)采集,采樣的數(shù)據(jù)發(fā)送給簇頭1;
 ⑤簇頭1收數(shù)據(jù)后轉(zhuǎn)發(fā)給Sink節(jié)點;
?、轘ink節(jié)點通過串口把數(shù)據(jù)傳送給PC機(jī)。
2 基于LabVIEW的實時監(jiān)控程序設(shè)計
 在系統(tǒng)中,Sink節(jié)點采用串口與PC相連,采集的數(shù)據(jù)由PC實時顯示,由于LabVIEW在串口通信和監(jiān)測數(shù)據(jù)的顯示等方面設(shè)計方便靈活,顯示直觀形象,因此,采用LabVIEW實現(xiàn)了串口通信和采集數(shù)據(jù)的顯示。圖4所顯示的是從兩個節(jié)點采集得到的溫度值。經(jīng)過多次測試,該系統(tǒng)能穩(wěn)定運(yùn)行,正常從各節(jié)點接收數(shù)據(jù)。

 

 

 本文實現(xiàn)了一個無線傳感器網(wǎng)絡(luò)的軟硬件系統(tǒng)。首先進(jìn)行系統(tǒng)需求分析并且建立模型;然后完成了節(jié)點的軟硬件設(shè)計,并在匯聚節(jié)點的核心處理器上移植了μC/OS-Ⅱ操作系統(tǒng),實現(xiàn)了無線通信程序在多任務(wù)實時操作系統(tǒng)上的應(yīng)用;最后用LabVIEW實現(xiàn)了串口通信和監(jiān)測數(shù)據(jù)的顯示?,F(xiàn)場調(diào)試試驗取得了較為理想的效果。
 在今后的工作中,應(yīng)進(jìn)一步考慮如何降低功耗、實現(xiàn)更為靈活的路由機(jī)制、μC/OS-Ⅱ任務(wù)切換時間的分配、執(zhí)行效率等問題,使系統(tǒng)性能進(jìn)一步優(yōu)化。
參考文獻(xiàn)
[1] 馬祖長,孫怡寧,梅濤.無線傳感器網(wǎng)絡(luò)綜述[J].通信學(xué)報,2005,4(25):114-124.
[2] SHETH A, THEKKATH C A, MEHTA P. Senslide: a distributed landslide prediction system[J]. Operating Systems Review,2007,41(2):75-87.
[3] JUANG P, OKI H, WANG Y, et al. Energy-effieient computing for wildlife tracking: design tradeoffs and early experiences with ZebraNet[C]. Proceedings of the 10th International Conference on Architectual Support for Programming Languages and Operating Systems, 2002:96-107.
[4] 紀(jì)晴,段培永,李連防,等.基于ZigBee無線傳感器網(wǎng)絡(luò)的智能家居系統(tǒng)[J].計算機(jī)工程與設(shè)計,2008,29(12):3064-3067.
[5] JAFARIR R, ENCARNACAO A, ZAHOORY A, et al.Wireless sensor networks for health monitoring[C]. The Second Annual International Conference on Mobile and Ubiquitous System: Networking and Services, MobiQuitous, 2005:479-481.
[6] 趙海,趙杰,劉錚,等.一種無線傳感器網(wǎng)絡(luò)節(jié)點的設(shè)計與實現(xiàn)[J].東北大學(xué)學(xué)報(自然科學(xué)版),2009,130(6):809-812.
[7] 田洪強(qiáng),秦雅娟,鄭濤,等.無線傳感器網(wǎng)絡(luò)智能紅外控制節(jié)點的實現(xiàn)[J].計算機(jī)應(yīng)用,2010,30(9):2549-2552.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。