《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 业界动态 > 基于CC2431的无线传感器网络节点设计

基于CC2431的无线传感器网络节点设计

2008-12-11
作者:庄 雄, 杨永明, 丁 唯

  摘 要: 提出了采用傳感器網(wǎng)絡(luò)" title="無線傳感器網(wǎng)絡(luò)">無線傳感器網(wǎng)絡(luò)進(jìn)行電氣設(shè)備在線監(jiān)測" title="在線監(jiān)測">在線監(jiān)測的全新解決方案和實(shí)現(xiàn)方法。詳細(xì)論述了基于CC2431的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)和基站硬件設(shè)計方案,以及基于8051核的TinyOS在傳感器節(jié)點(diǎn)和基站上的移植方案。
  關(guān)鍵詞: 無線傳感器網(wǎng)絡(luò); 在線監(jiān)測; 節(jié)點(diǎn); CC2431; TinyOS

?

  電氣設(shè)備運(yùn)行狀態(tài)的在線監(jiān)測是預(yù)防電力系統(tǒng)故障的一個重要手段。目前,電氣設(shè)備在線監(jiān)測以有線通信為主,該方式接線多、方式復(fù)雜、增加了系統(tǒng)隱患,也給故障的排查與維修帶來不便。本文針對此問題,設(shè)計了一種基于無線傳感器網(wǎng)絡(luò)的站內(nèi)通信方案。
  無線傳感器網(wǎng)絡(luò)作為新興的測控網(wǎng)絡(luò)技術(shù),綜合了傳感技術(shù)、嵌入式計算機(jī)技術(shù)、現(xiàn)代網(wǎng)絡(luò)技術(shù)、無線通信技術(shù)和分布式智能信息處理技術(shù)。其多跳功能和拓?fù)潇`活性可有效避免各種建筑和設(shè)備對無線信號的衰減作用。其網(wǎng)絡(luò)的自組織、自適應(yīng)性可大大提高在線監(jiān)測系統(tǒng)的可靠性。
  無線傳感器網(wǎng)絡(luò)主要是面向低速、低功耗的無線應(yīng)用,其單個節(jié)點(diǎn)是典型的資源受限的嵌入式系統(tǒng),且需要有對環(huán)境的感知、數(shù)據(jù)發(fā)送、命令接收執(zhí)行以及其他一些網(wǎng)絡(luò)功能和數(shù)據(jù)處理能力,因此需要有一個小型的操作系統(tǒng)來組織和管理這些硬件,并完成其軟件功能。TinyOS就是美國加州大學(xué)Berkeley分校針對無線傳感器網(wǎng)絡(luò)而開發(fā)的一個小型操作系統(tǒng)。但TinyOS所支持的平臺控制核心都與射頻模塊分離,這樣對節(jié)點(diǎn)節(jié)能方面有一定的影響。本設(shè)計采用CC2431為核心,克服了上述缺點(diǎn),也使節(jié)點(diǎn)體積減小。
1 系統(tǒng)設(shè)計
  系統(tǒng)整體框架如圖1所示。在電氣設(shè)備如變壓器上的繞組和絕緣子外圍安裝上帶有紫外脈沖、超聲波、溫度、濕度等傳感器的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)。當(dāng)繞組或絕緣子表面有放電時,節(jié)點(diǎn)可以檢測到放電信號,并將信號量化和簡單處理后按IEEE802.15.4規(guī)范封裝成幀,向附近節(jié)點(diǎn)傳輸?;蛘咴摴?jié)點(diǎn)接收其他節(jié)點(diǎn)所傳數(shù)據(jù),并加入多跳信息,重新封裝成幀繼續(xù)傳送。直到消息傳輸?shù)交?,基站將接收的?shù)據(jù)直接上傳到PC上位機(jī)" title="上位機(jī)">上位機(jī)。所有消息由上位機(jī)進(jìn)行復(fù)雜的數(shù)字信號處理,并通過數(shù)據(jù)庫對網(wǎng)絡(luò)各節(jié)點(diǎn)信息進(jìn)行綜合管理。這些數(shù)據(jù)信息又可以通過連接因特網(wǎng)的上位機(jī)與遠(yuǎn)程主機(jī)交互,從而實(shí)現(xiàn)故障的遠(yuǎn)程診斷。

?

?

2 節(jié)點(diǎn)和基站硬件設(shè)計
  節(jié)點(diǎn)和基站硬件都采用CC2431片上系統(tǒng)(SoC)作為處理核心。CC2431收發(fā)機(jī)采用直接序列擴(kuò)頻技術(shù),增強(qiáng)了系統(tǒng)抵抗多徑效應(yīng)的穩(wěn)健性,并且具有較強(qiáng)抗復(fù)雜電磁環(huán)境干擾的能力。特別是其對同頻率噪聲具有極強(qiáng)的抑制能力,與收發(fā)機(jī)約定的碼片外的其他同頻率數(shù)據(jù)都將被認(rèn)為是噪聲而濾除。CC2431功能強(qiáng)大,使外圍電路得到大大的簡化。加上采用PCB天線,使系統(tǒng)的節(jié)能性進(jìn)一步提高。
2.1 CC2431簡介
  CC2431片內(nèi)集成工業(yè)級低功耗8051 MCU,其內(nèi)部組件包括:128KB Flash和8KB RAM,2.4GHz頻段的頻率合成器,128bit AES安全協(xié)處理器,8路8~14bits ADC輸入,溫度傳感器,精確的定位引擎,具有DMA功能和電池監(jiān)測功能。其中頻率合成器內(nèi)含射頻協(xié)處理器,全面支持IEEE 802.15.4標(biāo)準(zhǔn)[1-2]
  CC2431外接電壓為2.0~3.6V,發(fā)射和接收時電流都為27mA,掉電和準(zhǔn)備模式電流分別為0.9?滋A和0.6?滋A;所需的外圍元件較少,所以具有較好的節(jié)能效果。
2.2 硬件電路
  節(jié)點(diǎn)和基站硬件電路框圖如圖2所示,主要由電源、CC2431外圍電路、傳感器電路、Flash ROM、串行接口電路和三個LED指示燈構(gòu)成。

?


  電源部分由3節(jié)1.2V干電池為系統(tǒng)提供電能。在電源輸入端須接抑制各主要干擾諧波的濾波電容,然后分割出模擬電源和數(shù)字電源。數(shù)字電源直接接入主電源;模擬電源通過磁珠接入主電源。
  CC2431的外圍電路較為簡單,可根據(jù)CC2430數(shù)據(jù)手冊[1]搭建(CC2431在CC2430基礎(chǔ)上加入定位引擎,主要數(shù)據(jù)都在CC2430數(shù)據(jù)手冊內(nèi))。需要注意的是,各模擬和數(shù)字電源引腳處必須加濾波或去耦電容;PCB天線部分須嚴(yán)格按照參考文獻(xiàn)[3]制作。
  傳感器電路主要由紫外脈沖傳感器、超聲波傳感器、溫度傳感器、濕度傳感器組成。
  Flash ROM電路由一片Atmel公司出品的AT45DB041組成,直接接入CC2431 SPI輸入端。該芯片集成2 046頁×264B Flash存儲單元,用于存儲傳感器重要?dú)v史數(shù)據(jù)。
  串行接口電路由一片低功耗MAX2323和COM母口組成。CC2431串口端接入MAX2323進(jìn)行電平轉(zhuǎn)換通過COM口與PC上位機(jī)通信。
  三個LED指示燈用于顯示節(jié)點(diǎn)和基站的運(yùn)行狀態(tài)。
3 軟件設(shè)計
  軟件設(shè)計主要論述TinyOS在本文硬件上的移植。由于整個移植工作包括眾多組件,本文以較為典型的RF組件的移植為例展開論述。
3.1 TinyOS簡介
  TinyOS是加州大學(xué)Berkeley分校專門針對無線傳感器網(wǎng)絡(luò)的特點(diǎn)開發(fā)的微型操作系統(tǒng)[4]。TinyOS不是傳統(tǒng)意義上的操作系統(tǒng),確切地說它是一個適用于網(wǎng)絡(luò)化嵌入式系統(tǒng)的編程框架,通過在這個框架內(nèi)鏈接一組必要的組件,就能方便地編譯出面向特定應(yīng)用的操作系統(tǒng),這對于存儲資源極為有限的系統(tǒng)來說非常重要。針對無線傳感器網(wǎng)絡(luò)內(nèi)節(jié)點(diǎn)眾多的特點(diǎn)以及多并發(fā)操作的工作方式,該操作系統(tǒng)采用了事件驅(qū)動的體系結(jié)構(gòu)。
  與通用操作系統(tǒng)相比,TinyOS更加簡單可靠。TinyOS具有以下特點(diǎn):
  (1) 事件驅(qū)動的體系結(jié)構(gòu);
  (2) 單一的共享棧(share stack);
  (3) 無內(nèi)核、無進(jìn)程管理、無內(nèi)存管理和虛擬內(nèi)存。
  TinyOS的應(yīng)用結(jié)構(gòu)如圖3所示,主要由應(yīng)用層、硬件抽象層(HAL)和硬件表達(dá)層(HPL)構(gòu)成。應(yīng)用層由主組件和具體的應(yīng)用組件組成。主組件是一個簡單的FIFO任務(wù)調(diào)度器。應(yīng)用組件結(jié)合具體的應(yīng)用實(shí)例進(jìn)行編寫。硬件抽象層組件主要由感知組件、執(zhí)行組件和通信組件組成,為應(yīng)用層提供與硬件無關(guān)的各種功能。硬件表達(dá)層組件將硬件提供的各種功能以函數(shù)形式表達(dá),供上層調(diào)用。層與層之間的互訪由接口文件完成。

?


  TinyOS的編程語言為nesC(C language for network embedded systems)。nesC對C作了擴(kuò)展,目的就是為了支持TinyOS的組件化編程模式。nesC有三種文件,分別為接口、模塊組件和配置組件。接口采用基于組件編程模式的nesC編程結(jié)構(gòu),詳細(xì)描述了服務(wù)提供者和使用者之間的多功能交互;模塊組件實(shí)現(xiàn)具有一定功能的子系統(tǒng);配置組件負(fù)責(zé)將各個子系統(tǒng)鏈接成完整的應(yīng)用。多個模塊組件和配置組件共同構(gòu)成TinyOS的應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序[5]。
3.2 TinyOS移植實(shí)現(xiàn)
  TinyOS在8051核上的移植不同于TinyOS在AVR/MSP430/PIC/ARM核的移植,因?yàn)閚esC編譯器ncc是基于GCC編寫的,而GCC不支持對MCS-51系列核心的交叉編譯。
  本次移植的總體流程如圖4所示:根據(jù)TinyOS上層組件接口的需要,用nesC編寫硬件表達(dá)層和硬件抽象層文件。代碼只能按照nesC語法編寫才能通過ncc編譯。編寫完成后,結(jié)合上層應(yīng)用程序編譯出app.c文件。再將app.c文件通過perl語言編寫的腳本將其原語法轉(zhuǎn)換為CC2431開發(fā)環(huán)境" title="開發(fā)環(huán)境">開發(fā)環(huán)境IAR Embedded Workbench for 8051支持的語法。再通過IAR編譯器編譯、調(diào)試和下載。

?


  下面主要以RF組件的移植為例來說明移植具體過程。
3.2.1 編寫HPL和HAL文件
  圖5為CC2430RadioC配置文件的連接框圖。該文件為HAL文件,將下層的CC2430RadioM、CC2430ControlM、CC2430TimerM、HPLCC2430RFInterruptM、LedsC模塊連接成一個RF功能組件,向上層提供StdControl、BareSendMsg、ReceiveMsg、CC2430Control、SplitControl、MacControl、RadioCoordinator接口。根據(jù)上層應(yīng)用程序的不同,可以添加其他接口,但需要對配置文件和相關(guān)模塊作相應(yīng)的修改。

?


  CC2430RadioM是HAL文件,為RF組件功能的主要實(shí)現(xiàn)模塊,完成消息的接收和發(fā)送任務(wù),包括數(shù)據(jù)幀封裝和各種MAC協(xié)議如CSMA/CA、MAC層會話協(xié)議等的實(shí)現(xiàn)。
  CC2430ControlM是HPL文件,將RF各種控制動作抽象為函數(shù),供CC2430RadioM調(diào)用。
  HPLCC2430RFInterruptM是HPL文件,主要處理與RF有關(guān)的中斷服務(wù),為CC2430RadioM和CC2430ControlM提供事件信號。
  CC2430TimerM是HPL文件,主要提供RF組件中MAC控制時鐘,如通過對SFD的捕獲而計算幀傳送時間。
  LedsC模塊是HAL文件,以LED燈的形式為用戶提供RF組件運(yùn)行狀態(tài)的指示。
3.2.2 ncc編譯
  編寫完上層需要的HPL與HAL文件后,接下來結(jié)合某個應(yīng)用程序利用ncc進(jìn)行編譯。編譯前,須在appsmakerules文件里加入CC2431平臺參數(shù)和創(chuàng)建平臺配置文件.platform。
  appsmakerules文件內(nèi)“PLATFORMS =”代碼后為各平臺名稱,在此加入CC2431平臺。
  .paltform文件創(chuàng)建在平臺目錄下。由于目標(biāo)平臺沒有IAR選項,所以平臺配置只能配置成keil。文件內(nèi)容如下:
  @opts = ('-fnesc-target=keil', '-fnesc-no-debug');
  經(jīng)過上兩步后,即可用ncc對應(yīng)用程序編譯生成app.c文件。
3.2.3 語法編輯腳本
  語法編輯腳本用于app.c文件與IAR Embedded Workbench開發(fā)環(huán)境的耦合。ncc編譯出來的app.c文件有部分語法與IAR開發(fā)環(huán)境的語法不兼容,因此須將不兼容的語法作相應(yīng)的修改。由于app.c文件代碼較長,一般有幾千行,人工修改費(fèi)時費(fèi)力,且容易出錯,所以需用一個語法編輯腳本對不兼容代碼進(jìn)行修改。本文語法編輯腳本采用perl語言(Practical Extraction Report Language)編寫。perl語言在Internet編程中應(yīng)用廣泛,具有語法簡單、用途廣泛、跨平臺、面向?qū)ο?、嵌入文檔、可與C/C++鏈接及易調(diào)試等特點(diǎn)[6]。本文利用了其在文本編輯方面的強(qiáng)大功能。
  所作修改的語法:
  (1) 在 “typedef int sfr;” 、“typedef int sbit;”和DBG調(diào)試信息代碼、行命令代碼以及其他對IAR無用代碼前加 “//”屏蔽。
  (2) 寄存器定義語句如 “sfr P0 __attribute((x80));”改為“SFR(P0,0x80)”。
  (3) 外部數(shù)據(jù)訪問語句“ ((unsigned char *)0)[addr]”改為“((unsigned char volatile __xdata *) 0)[addr]”。
  (4)計算數(shù)據(jù)偏移量語句,如“(size_t )&((struct TOS_Msg *)0)->data”改為“(size_t)(unsigned long)&((struct TOS_Msg *)0)->data”。
  (5) 去除64bit “l(fā)ong long”類型,將所有“l(fā)ong long”類型改為32bit “l(fā)ong”類型。
  (6) 中斷服務(wù)程序名如“void __attribute((interrupt)) __vector_16(void)”或“void __attribute((signal)) __vector_16(void)”改為“#pragma vector=RF_VECTOR_interrupt void RF_IRQ(void) ”
  經(jīng)過以上修改后生成IARapp.c就可以用于IAR開發(fā)環(huán)境的調(diào)試了。
3.2.4? 調(diào)試和下載
  調(diào)試和下載直接在IAR Embedded Workbench for 8051環(huán)境下進(jìn)行。這一步與其他開發(fā)環(huán)境下的調(diào)試和下載相似[7],不再贅述。
4 測試實(shí)驗(yàn)
  本次測試實(shí)驗(yàn)結(jié)合紫外脈沖傳感器、溫度傳感器和濕度傳感器,在實(shí)驗(yàn)室環(huán)境下,用火花放電模擬高壓絕緣子放電,測試時間為30分鐘。數(shù)據(jù)傳輸方式是使用TinyOS自帶的多跳路由(Multi-Hop Routing)算法,以兩跳的形式傳輸。節(jié)點(diǎn)每10秒發(fā)送前10秒鐘的放電脈沖數(shù)和平均溫度、濕度。測試結(jié)果表明在這種情況下,數(shù)據(jù)的接收率和正確率都為100%。這些數(shù)據(jù)可以為電氣設(shè)備的運(yùn)行狀態(tài)監(jiān)測和故障診斷提供依據(jù)。
  但是,由于實(shí)際情況下,高壓絕緣子的放電時間分布具有一定的隨機(jī)性,并且與環(huán)境溫度和濕度有關(guān)。這樣對在線監(jiān)測的實(shí)時性就有較高要求。而無線傳感器網(wǎng)絡(luò)所強(qiáng)調(diào)的節(jié)能性必須使節(jié)點(diǎn)大部分時間處于休眠狀態(tài)。這個矛盾將設(shè)法通過跨層路由協(xié)議的算法予以解決。
  本文詳細(xì)論述了無線傳感器網(wǎng)絡(luò)的硬件設(shè)計和軟件系統(tǒng)移植,及其應(yīng)用于電氣設(shè)備在線監(jiān)測的優(yōu)勢。無線傳感器網(wǎng)絡(luò)的無線性減少了電氣設(shè)備在線監(jiān)測系統(tǒng)的復(fù)雜度和有線連接隱患。其自組織、自適應(yīng)性方便了監(jiān)測系統(tǒng)的搭建和擴(kuò)充。其網(wǎng)絡(luò)靈活性減小了單個節(jié)點(diǎn)的故障對監(jiān)測工作的影響。
  由于紫外脈沖監(jiān)測法是非接觸式的監(jiān)測方法,且監(jiān)測距離可以達(dá)到11米,減小了節(jié)點(diǎn)在被監(jiān)測設(shè)備具有強(qiáng)電磁場情況下所受的電磁干擾。
  下一步將充分利用CC2431的節(jié)點(diǎn)定位引擎,加入節(jié)點(diǎn)定位程序,實(shí)現(xiàn)監(jiān)測網(wǎng)絡(luò)的節(jié)點(diǎn)定位。然后根據(jù)節(jié)點(diǎn)在不同電氣設(shè)備的工作環(huán)境,加入太陽能發(fā)電、溫差發(fā)電等模塊,使無線傳感器電能管理更加靈活,并延長無線傳感器網(wǎng)絡(luò)的生存周期。

參考文獻(xiàn)
[1] ?Chipcon AS. CC2430 preliminary data sheet (Rev. 2.01).[2006]. http://focus.ti.com/lit/ds/swrs036e/swrs036e.pdf.
[2] ?Chipcon AS. CC2431 preliminary data sheet (Rev. 1.01).[2006]. http://focus.ti.com/lit/ds/symlink/cc2431.pdf.
[3] ?JONSRUD G E.Folded dipole antenna for CC2400,CC2420?and CC2430.[2006]. http://focus.ti.com/lit/an/swra093/swra093.pdf.
[4] ?HILL J. System architecture for wireless sensor networks[D]. Berkeley, USA: University of California, 2003.
[5] 于海斌,曾鵬,梁韋.智能無線傳感器網(wǎng)絡(luò)系統(tǒng).北京:
?科學(xué)出版社,2006.
[6] ?龍洋,史波. Perl5實(shí)用編程技術(shù).北京:中國水利水電
?出版社,2001.
[7] ?IAR Systems.IAR embedded workbench IDE user guide.
?[2004-12].ftp://ftp.iar.se/WWWfiles/guides/ide/ouew-3.pdf.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容