摘 要: 針對(duì)人體生理參數(shù)采集特點(diǎn),,設(shè)計(jì)了基于CC2430和TinyOS的星型無線傳感器網(wǎng)絡(luò),。實(shí)現(xiàn)了傳感器節(jié)點(diǎn)和中心節(jié)點(diǎn)間CSMA/CA協(xié)議通信。以溫濕度數(shù)據(jù)采集為例,,采用nesC語言開發(fā)了節(jié)點(diǎn)應(yīng)用程序,。對(duì)傳感器節(jié)點(diǎn)的功耗進(jìn)行了計(jì)算。研究設(shè)計(jì)方法可應(yīng)用于相關(guān)的周期性無線數(shù)據(jù)采集中,。
關(guān)鍵詞: 無線傳感器網(wǎng),;TinyOS;nesC,;CC2430
生理參數(shù)采集是指對(duì)人在特定環(huán)境下靜止或活動(dòng)時(shí)的某些生理參數(shù)進(jìn)行測(cè)量,、處理和傳送。該技術(shù)應(yīng)用領(lǐng)域廣泛,,如醫(yī)療,、保健、體育,、軍事和服裝舒適性評(píng)價(jià)等,。生理參數(shù)采集的實(shí)現(xiàn)方法是將傳感器置于人體相應(yīng)部位,以有線或無線方式將傳感器采集到的數(shù)據(jù)傳送到終端進(jìn)行處理,。在使用中有線傳輸?shù)姆绞接袝r(shí)會(huì)受到限制,,所以有必要研究采用無線方式傳輸數(shù)據(jù)的方法。如在服裝舒適性評(píng)價(jià)應(yīng)用中,,主要方法有:在真實(shí)環(huán)境下對(duì)人體表溫濕度的測(cè)量,;在模擬環(huán)境(人工氣候室)下對(duì)真人或假人體表溫濕度的測(cè)量,根據(jù)測(cè)量值給出主客觀評(píng)價(jià),。在進(jìn)行真實(shí)環(huán)境下人體穿著動(dòng)態(tài)實(shí)驗(yàn)時(shí),,無線數(shù)據(jù)采集傳輸方式會(huì)帶來很大方便。無線傳感器網(wǎng)絡(luò)技術(shù)發(fā)展迅速,,將這一技術(shù)應(yīng)用于人體生理參數(shù)采集在國(guó)內(nèi)已有相關(guān)應(yīng)用,,如參考文獻(xiàn)[2]提出基于Zigbee技術(shù)的無線傳感器網(wǎng)絡(luò)在遠(yuǎn)程家庭監(jiān)護(hù)中的應(yīng)用,參考文獻(xiàn)[3]提出了無線傳感器技術(shù)在醫(yī)療監(jiān)護(hù)中的應(yīng)用。本文將結(jié)合具體應(yīng)用,,從無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)軟硬件平臺(tái)選擇,、網(wǎng)絡(luò)體系結(jié)構(gòu)、MAC層協(xié)議,、節(jié)點(diǎn)低功耗設(shè)計(jì)等方面分析和設(shè)計(jì)人體參數(shù)采集,。
1 系統(tǒng)設(shè)計(jì)
1.1 網(wǎng)絡(luò)體系結(jié)構(gòu)及協(xié)議
網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)主要描述網(wǎng)絡(luò)節(jié)點(diǎn)的連接模式。人體生理參數(shù)采集范圍小,,傳感器節(jié)點(diǎn)集中,,各節(jié)點(diǎn)間一般不需要通信。根據(jù)這些特點(diǎn),,可以使用星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),。在星型拓?fù)浣Y(jié)構(gòu)中,每個(gè)分支節(jié)點(diǎn)以點(diǎn)到點(diǎn)的方式連接到中心節(jié)點(diǎn)上,,當(dāng)在中心節(jié)點(diǎn)與分支節(jié)點(diǎn)間大量通信時(shí),,采用星型拓?fù)浣Y(jié)構(gòu)是最有效的。其優(yōu)點(diǎn)在于能夠?qū)①Y源集中,、網(wǎng)絡(luò)易于管理,、覆蓋范圍集中、路由算法相對(duì)簡(jiǎn)單,,有問題的節(jié)點(diǎn)很容易在不影響其他節(jié)點(diǎn)性能的情況下被中心節(jié)點(diǎn)隔離掉,。
在無線傳感器網(wǎng)絡(luò)中,MAC(Medium Access Control)協(xié)議決定無線信道的使用方式,,在傳感器節(jié)點(diǎn)之間分配有限的無線通信資源,,對(duì)傳感器網(wǎng)絡(luò)的性能有較大影響,是保證無線傳感器網(wǎng)絡(luò)低功耗工作的關(guān)鍵網(wǎng)絡(luò)協(xié)議之一,。人體生理參數(shù)采集應(yīng)用中,,傳感器節(jié)點(diǎn)周期性采集數(shù)據(jù),供電常采用小型紐扣電池,,而中心節(jié)點(diǎn)一般供電充足,,所以采用CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)控制協(xié)議,。中心節(jié)點(diǎn)不關(guān)閉射頻模塊,,持續(xù)接收。傳感器節(jié)點(diǎn)定時(shí)采樣,、發(fā)送數(shù)據(jù),,在需要發(fā)送數(shù)據(jù)時(shí)打開射頻模塊,首先對(duì)信道進(jìn)行偵聽,,若信道被占用,,則退避一段隨機(jī)時(shí)間后再繼續(xù)偵聽,若此時(shí)信道沒有被占用,則發(fā)送數(shù)據(jù),,得到確認(rèn)后關(guān)閉射頻模塊,,MCU進(jìn)入睡眠模式,等待下一次定時(shí)觸發(fā),。
1.2 射頻收發(fā)器件及網(wǎng)絡(luò)操作系統(tǒng)
傳感器節(jié)點(diǎn)要求體積小,、功耗低、能夠進(jìn)行數(shù)據(jù)處理和無線收發(fā),,這里采用TI/Chipcon公司CC2430EM評(píng)估板作為無線收發(fā)模塊,,傳感器電路根據(jù)需要自行設(shè)計(jì)。CC2430評(píng)估板的P0.1~P0.7,、P1.0~P1.7及P2.0~P2.2口線,,可與傳感器電路連接進(jìn)行控制。芯片CC2430內(nèi)嵌CC2420射頻收發(fā)器和8051 MCU,,內(nèi)含12 bit模/數(shù)轉(zhuǎn)換器,、4個(gè)定時(shí)器、32 kHz晶振的休眠模式定時(shí)器,,硬件支持CSMA/CA,,供電電壓2.0 V~3.6 V,在掉電模式下電流消耗僅0.5 μA,,可通過外部中斷或?qū)崟r(shí)時(shí)鐘喚醒,。無線傳感器網(wǎng)絡(luò)可以被視為由多個(gè)能量、存儲(chǔ)空間和處理能力有限的CPU組成的計(jì)算機(jī)系統(tǒng),,這些CPU相互獨(dú)立,,又協(xié)同工作。為便于軟件開發(fā)與維護(hù),,提高軟件開發(fā)效率,,采用TinyOS嵌入式操作系統(tǒng)。TinyOS是一種專門為嵌入式系統(tǒng)設(shè)計(jì)的基于組件的操作系統(tǒng),,主要應(yīng)用于無線傳感器網(wǎng)絡(luò),,由nesC語言實(shí)現(xiàn),它采用輕量級(jí)線程技術(shù),、主動(dòng)消息通信技術(shù),、事件驅(qū)動(dòng)模式、組件化編程方式,。使用該操作系統(tǒng)能夠提高CPU使用率,,在TinyOS的調(diào)度下,所有與通信事件相關(guān)聯(lián)的任務(wù)在事件產(chǎn)生時(shí)可以迅速進(jìn)行處理,。在處理完畢且沒有其他事件的情況下,,CPU將進(jìn)入睡眠狀態(tài),。
1.3 節(jié)點(diǎn)設(shè)計(jì)
圖1為人體生理參數(shù)采集網(wǎng)絡(luò)結(jié)構(gòu)示意圖。為提高便攜性能,,可以將其中的PC機(jī)用嵌入式設(shè)備替換,。圖中各傳感器節(jié)點(diǎn)定時(shí)采樣、發(fā)送數(shù)據(jù),,中心節(jié)點(diǎn)收到數(shù)據(jù)后通過串口送至PC機(jī),,進(jìn)行顯示和處理。
節(jié)點(diǎn)有兩類:傳感器節(jié)點(diǎn)和中心節(jié)點(diǎn),。在TinyOS環(huán)境下編程語言為nesC,,為支持組件化編程模式,nesC語言引入了接口和組件的概念,。接口是一些功能類似或相關(guān)的函數(shù)聲明,,根據(jù)調(diào)用方向不同命名為命令或事件,具體實(shí)現(xiàn)在提供或使用該接口的組件中,。組件包括配件和模塊,,配件負(fù)責(zé)把不同組件通過接口連接起來,模塊提供程序所需的代碼實(shí)現(xiàn),。對(duì)于傳感器節(jié)點(diǎn),,需要針對(duì)不同的傳感器設(shè)計(jì)硬件驅(qū)動(dòng)組件,結(jié)合已有的中間組件(如系統(tǒng)組件,、電源管理組件,、A/D轉(zhuǎn)換組件、定時(shí)器組件,、射頻組件等),,設(shè)計(jì)應(yīng)用層的配置組件和模塊組件。下面以溫濕度傳感器節(jié)點(diǎn)為例說明設(shè)計(jì)方法,,溫濕度傳感器采用瑞士SENSIRION公司的SHT10,。
溫濕度傳感器節(jié)點(diǎn)的組件連接如圖2所示。小矩形框內(nèi)是各組件使用和提供的接口,,箭頭方向表示命令調(diào)用的方向,。因?yàn)樗袀鞲衅鞴?jié)點(diǎn)都具有定時(shí)采樣、數(shù)據(jù)處理,、按協(xié)議數(shù)據(jù)收發(fā),、射頻模塊和MCU電源管理等功能,所以這里將與傳感器有關(guān)的操作單獨(dú)設(shè)計(jì)一個(gè)組件SHT10_C,,在頂層配件中通過與不同類型傳感器組件連接,,實(shí)現(xiàn)各傳感器節(jié)點(diǎn)功能。將與傳感器操作無關(guān),、與應(yīng)用相關(guān)的其他功能組合設(shè)計(jì)一個(gè)中間組件SensorNet_C,,通過與下層配件McuSleepC、CsmaC和CC2430ActiveMessageC連接,,實(shí)現(xiàn)MCU電源管理,、CSMA協(xié)議及射頻模塊控制。配件SHT10_C和SensorNet_C僅提供組件間連接關(guān)系,,其實(shí)現(xiàn)分別由SHT10_M和SensorNet_M完成,。在調(diào)用命令Send.send()發(fā)送數(shù)據(jù)時(shí),首先進(jìn)行清潔信道評(píng)估,,如果信道被占用,,則需要退避一段時(shí)間。退避時(shí)間由隨機(jī)函數(shù)產(chǎn)生一個(gè)1~31之間的隨機(jī)數(shù),,與一個(gè)給定初始值(這里設(shè)為160 μs,,即10 symbols)相乘而得。初始值可以根據(jù)網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)量進(jìn)行調(diào)整,,節(jié)點(diǎn)少則初始值小,,反之則適當(dāng)加大。溫濕度傳感器節(jié)點(diǎn)的頂層配置組件程序如下:
configuration SensorNodeSHT_C {
}
implementation {
components MainC,; /*TinyOS2主模塊,,這里用于關(guān)聯(lián)系統(tǒng)啟動(dòng)*/
components new TimerMilliC() as TimerC;
components SensorNet_C,; /*射頻模塊,、CSMA協(xié)議及MCU電源管理控制配置組件*/
components SHT10_C; /*溫濕度傳感器SHT10配置組件*/
components SensorNodeSHT_M,; /*頂層模塊組件*/
SensorNodeSHT_M.Boot->MainC.Boot,;
SensorNodeSTH_M.Timer->TimerC;
SensorNodeSTH_M.RFControl->SensorNet_C,;
SensorNodeSTH_M.AMPacket->SensorNet_C,;
……
SensorNodeSTH_M.Send->SensorNet_C;
SensorNodeSTH_M.SHT->SHT10_C,; /*實(shí)現(xiàn)接口STH的連接*/
}
在配件SensorNet_C中,,通過連接配件CC2430ActiveMessageC使用模塊組件CC2430ActiveMessageP中提供的射頻功能。CC2430ActiveMessageP是射頻堆棧中的頂層組件,,提供單跳通信實(shí)現(xiàn)方法,。通過連接配件McuSleepC使用模塊組件McuSleepP中的MCU電源管理功能,實(shí)現(xiàn)MCU睡眠,、定時(shí)和啟動(dòng)等功能,,以降低節(jié)點(diǎn)功耗。需要在使用McuSleepP組件的上層組件SensorNet_M中實(shí)現(xiàn)事件McuSleepControl.beforeSleep()和McuSleepControl.afterWakeup(),,以保護(hù)和恢復(fù)睡眠前后的狀態(tài),。
溫濕度傳感器SHT10具有兩線制串行接口,,輸出已校準(zhǔn)數(shù)字信號(hào)。這里定義SHT10的接口SHT如下,,需要在模塊組件SHT10_M中實(shí)現(xiàn)接口所定義的命令,。
interface SHT{
command error_t read(); /*在傳感器模塊組件STH10_M中實(shí)現(xiàn)*/
event void readDone(error_t result,,uint16_t temperature,,uint16_t humidity); /*在頂層模塊組件SensorNodeSHT_M中實(shí)現(xiàn)*/
}
中心節(jié)點(diǎn)實(shí)現(xiàn)射頻數(shù)據(jù)接收,,然后通過串口將數(shù)據(jù)送給PC機(jī),。其頂層配置文件如下:
configuration CenterNode_C{
}
implementation{
components CenterNode_M; /*頂層模塊組件*/
components MainC,;
components CC2430ActiveMessageC as ActiveMessageC,;
components ABSC; /*串口通信控制組件*/
CenterNode_M.Boot->MainC.Boot,;
CenterNode_M.RFControl->ActiveMessageC,;
CenterNode_M.AMPacket->ActiveMessageC;
CenterNode_M.Packet->ActiveMessageC,;
CenterNode_M.Receive->ActiveMessageC.Receive,;
CenterNode_M.ABS->ABSC;
}
2 傳感器節(jié)點(diǎn)功耗計(jì)算
對(duì)人體生理參數(shù)進(jìn)行采集,,尤其在室外應(yīng)用中,,低功耗對(duì)于電池供電的傳感器節(jié)點(diǎn)來說非常重要。以下應(yīng)用參考文獻(xiàn)[6]中的方法對(duì)本設(shè)計(jì)中的傳感器節(jié)點(diǎn)的功耗進(jìn)行計(jì)算,。采用3.3 V直流電源供電,,將一個(gè)1%精度的10 Ω電阻與CC2430EM串聯(lián),通過測(cè)量電阻兩端的電壓降來計(jì)算一個(gè)采樣周期中各個(gè)時(shí)間段的電流,。設(shè)采樣周期T=10 s,,CC2430射頻輸出功率設(shè)置為100%,圖3為使用示波器TPS2024在傳感器節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí)獲取的電阻兩端電壓變化波形圖,,水平方向2.50 ms/div,,垂直方向100 mV/div。表1為活動(dòng)期間的電流消耗,。
一個(gè)采樣周期T內(nèi)低功耗模式時(shí)間(A段,、G段,CC2430在PM2模式下):
TPM2=T-Ton=10000 ms-20.45 ms=10 451.65 ms
低功耗模式下(CC2430在PM2模式下)電流消耗:
0.000 5 mA×10 451.65 ms=5.225 8 mA·ms
一個(gè)采樣周期T內(nèi)總電流消耗:
472.1 mA·ms+5.225 8 mA·ms)/(3 600 000 ms/h)=1.326×10-4 mAh/10 s
每小時(shí)消耗電流:1.326×10-4×360=0.047 74 mA
假設(shè)使用60 mAh的紐扣電池,,則可以使用時(shí)間為:60 mAh/0.047 74 mA=1 256 h≈52 天
本文采用nesC語言設(shè)計(jì)了基于TinyOS的中心節(jié)點(diǎn)和傳感器節(jié)點(diǎn)程序,,實(shí)現(xiàn)了使用CSMA/CA協(xié)議的星型無線傳感器網(wǎng)絡(luò),并以溫濕度數(shù)據(jù)采集為例,,設(shè)計(jì)了采用溫濕度數(shù)字傳感器SHT10的傳感器節(jié)點(diǎn),。當(dāng)采樣周期為10 s,、使用60 mAh電池供電時(shí),傳感器節(jié)點(diǎn)可持續(xù)工作52天,。本設(shè)計(jì)能夠滿足無線,、便攜,、低功耗地采集人體生理參數(shù)的需要,。使用模塊化編程語言nesC,提高了開發(fā)效率,,便于擴(kuò)展,。本文介紹的研究和設(shè)計(jì)方法可在相關(guān)應(yīng)用中使用。
參考文獻(xiàn)
[1] 周永凱,,張建春.服裝舒適性與評(píng)價(jià)(第一版)[M].北京:北京工藝美術(shù)出版社,,2006.
[2] 郭世富,馬樹元,,吳平東,,等.基于Zigbee技術(shù)的無線傳感器網(wǎng)絡(luò)在遠(yuǎn)程家庭監(jiān)護(hù)系統(tǒng)中的應(yīng)用研究[J].電子技術(shù)應(yīng)用,2006,,32(6):28-30.
[3] 董大鵬,,唐曉英,劉偉峰,,等.無線傳感器網(wǎng)絡(luò)技術(shù)在醫(yī)療監(jiān)護(hù)中的應(yīng)用[J].電子技術(shù)應(yīng)用,,2008,34(10):29-31.
[4] HALIT E著.無線傳感器及元器件:網(wǎng)絡(luò),、設(shè)計(jì)與應(yīng)用(第一版)[M].紀(jì)曉東,,趙北雁,彭木根,,譯.北京:機(jī)械工業(yè)出版社,,2008.
[5] TI. CC2430EM Reference Design(Rev.C)[DB/OL]. http://focus.ti.com/docs/toolsw/folders/print/cc2430dk.html.2010.
[6] SELVIG B. Measuring power consumption with CC2430 & Z-Stack application note AN053 TI lit[DB/OL]. http://focus.ti.com/general/docs/litabsmultiplefilelist.tsp?literatureNumber=swra144.2010.