摘 要: 介紹了基于MSP430F149與Si4432的無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的硬件及軟件設(shè)計(jì)方法,,給出了主要的硬件電路和軟件流程圖,,提出了一種簡(jiǎn)單易實(shí)現(xiàn)的低功耗自組織協(xié)議。實(shí)驗(yàn)證明,,該無(wú)線傳感器網(wǎng)絡(luò)具有組網(wǎng)速度快,、功耗低、抗干擾能力強(qiáng),、通信穩(wěn)定可靠等特點(diǎn),,可應(yīng)用于多個(gè)領(lǐng)域的信息探測(cè),具有廣闊的市場(chǎng)前景,。
關(guān)鍵詞: 無(wú)線傳感器網(wǎng)絡(luò)(WSN),;MSP430F149;自組織協(xié)議,;低功耗
無(wú)線傳感器網(wǎng)絡(luò)的應(yīng)用領(lǐng)域非常廣,,包括環(huán)境的監(jiān)測(cè)和保護(hù)、醫(yī)療護(hù)理,、軍事領(lǐng)域,、工業(yè)領(lǐng)域等。美國(guó)商業(yè)周刊和MIT技術(shù)評(píng)論在預(yù)測(cè)未來(lái)技術(shù)發(fā)展的報(bào)告中,,分別將無(wú)線傳感器網(wǎng)絡(luò)列為21世紀(jì)最有影響的21項(xiàng)技術(shù)和改變世界的十大技術(shù)之一[1],。
無(wú)線傳感器節(jié)點(diǎn)一般通過(guò)電池供電,硬件結(jié)構(gòu)簡(jiǎn)單,,通信帶寬小,,點(diǎn)到點(diǎn)的通信距離短[2],所以工作時(shí)間有限及通信距離短成為無(wú)線傳感器網(wǎng)絡(luò)的兩個(gè)主要瓶頸,。如果要求工作時(shí)間長(zhǎng)同時(shí)通信距離遠(yuǎn),,就必須在軟硬件上同時(shí)做處理。因此本設(shè)計(jì)在硬件上采用集成度高,、功耗超低的MSP430F149作為控制芯片,,以功能強(qiáng)大、外圍電路簡(jiǎn)單,、功耗低的Si4432作為無(wú)線收發(fā)芯片,,并通過(guò)電源管理芯片TPS61200充分利用電池的能量(只要電池電壓在0.2 V~5 V范圍內(nèi)整個(gè)系統(tǒng)即可正常工作)。在軟件上,,所有節(jié)點(diǎn)之間都具有自組織能力,,通過(guò)轉(zhuǎn)發(fā),、多跳等方式進(jìn)行通信;通信可覆蓋范圍廣,。采用等待喚醒方式即休眠模式下經(jīng)喚醒進(jìn)入工作模式,,完畢后再進(jìn)入休眠模式的工作方式,大大降低了能量的消耗,;充分考慮其工作壞境的惡劣性,,采用E2PROM存儲(chǔ)技術(shù)及看門(mén)狗技術(shù),系統(tǒng)把所有有用信息保存在E2PROM中,,當(dāng)系統(tǒng)因外界干擾使程序進(jìn)入非正常工作時(shí),,看門(mén)狗使系統(tǒng)復(fù)位,然后從E2PROM中讀取有用信息繼續(xù)工作,,增強(qiáng)了系統(tǒng)的抗干擾能力,。
1 系統(tǒng)總體方案
系統(tǒng)由基站節(jié)點(diǎn)、傳感器節(jié)點(diǎn)和上位機(jī)組成,。節(jié)點(diǎn)硬件主要包括7部分:處理器(MSP430F149)、Si4432射頻收發(fā)模塊,、電源管理模塊,、串口通信模塊、JITAG下載模塊,、傳感器接口模塊和E2PROM存儲(chǔ)模塊,。基站節(jié)點(diǎn)沒(méi)有傳感器模塊,,傳感器節(jié)點(diǎn)沒(méi)有串口通信模塊,。基站節(jié)點(diǎn)由上位機(jī)USB接口供電,。傳感器節(jié)點(diǎn)使用2節(jié)5號(hào)電池供電,。采用TPS61200作為電源管理器,只要電池電壓在0.2 V~5 V范圍內(nèi),,系統(tǒng)即可以正常工作,,大大地延長(zhǎng)了電池的使用時(shí)間。為了調(diào)試方便,,在節(jié)點(diǎn)上增加了撥碼開(kāi)關(guān)和LED 信號(hào)指示燈,。整個(gè)系統(tǒng)軟件由上位機(jī)處理軟件、基站節(jié)點(diǎn)軟件,、傳感器節(jié)點(diǎn)軟件三部分組成,。在傳感器節(jié)點(diǎn)軟件設(shè)計(jì)上充分考慮了低功耗節(jié)能問(wèn)題,因?yàn)樗哪芰恐饕挠跓o(wú)線射頻模塊,,因此在組網(wǎng)時(shí)盡量使Si4432 的輸出能量設(shè)定為最小,,且在沒(méi)有收發(fā)信息時(shí)工作在睡眠模式,,即等待喚醒模式。
2 自組織協(xié)議設(shè)計(jì)
在協(xié)議中,,通過(guò)定義數(shù)據(jù)包的格式和關(guān)鍵字來(lái)實(shí)現(xiàn)節(jié)點(diǎn)的自組織,。
2.1 協(xié)議格式
自組織協(xié)議格式如圖1所示。
其中,,Pre表示前導(dǎo)碼,,這些字符雜波不容易產(chǎn)生,通過(guò)測(cè)試和試驗(yàn)發(fā)現(xiàn),,噪聲中不容易產(chǎn)生0x55和0xAA 等非常有規(guī)律的信號(hào),,因此前導(dǎo)碼采用0x55AA。Sync(同步字)在前導(dǎo)碼之后,,本系統(tǒng)設(shè)定的同步字為2 B,,同步字內(nèi)容為0x2DD4,接收端在檢測(cè)到同步字后才開(kāi)始接收數(shù)據(jù),。Key表示關(guān)鍵字,,高6位用來(lái)表示目標(biāo)地址的級(jí)別,接收節(jié)點(diǎn)會(huì)根據(jù)高6位決定數(shù)據(jù)的去向(比本級(jí)節(jié)點(diǎn)大則向下級(jí)節(jié)點(diǎn)傳,,若小則反之,,如果相等則判斷目標(biāo)地址是否為本節(jié)點(diǎn)地址,是則直接向目標(biāo)表地址發(fā)送,,否則向上級(jí)發(fā)送節(jié)點(diǎn)回復(fù)重發(fā)應(yīng)答),;低2位用來(lái)區(qū)分各種情況下的數(shù)據(jù)(命令信號(hào)、組網(wǎng)信息,、采集信息,、廣播信息);接收節(jié)點(diǎn)會(huì)根據(jù)這些關(guān)鍵字低2位分別進(jìn)入不同的數(shù)據(jù)處理單元,。From表示源地址,,是發(fā)送數(shù)據(jù)的節(jié)點(diǎn)地址;Mid表示接收信息的中轉(zhuǎn)節(jié)點(diǎn)地址,;Fina表示數(shù)據(jù)的目標(biāo)地址,;除廣播信息外,每個(gè)信息都有唯一的源地址和目標(biāo)地址,;Data表示有效數(shù)據(jù),,這些數(shù)據(jù)隨著關(guān)鍵字(Key)的不同而采用不同的格式,可攜帶不同的信息,;Che表示檢驗(yàn)位,,說(shuō)明采用何種校驗(yàn)方式(校驗(yàn)和還是CRC校驗(yàn)),可避免接收錯(cuò)誤的數(shù)據(jù)包,;Flag 表示數(shù)據(jù)包的結(jié)束標(biāo)志位,。Si4432內(nèi)部集成有調(diào)制/解調(diào),、編碼/解碼等功能,從而Pre,、Sync和Che都是硬件自動(dòng)加上去的,,用戶只需設(shè)定數(shù)據(jù)包的組成結(jié)構(gòu)和部分結(jié)構(gòu)的具體內(nèi)容(如前導(dǎo)碼和同步字)。
2.2 自組織算法
網(wǎng)絡(luò)由一個(gè)基站和若干個(gè)傳感器節(jié)點(diǎn)組成,,基站上電初始化后就馬上進(jìn)入低功耗狀態(tài)(Si4432射頻模塊處于睡眠狀態(tài)),;傳感器節(jié)點(diǎn)隨機(jī)地部署在需要采集信息的區(qū)域內(nèi),上電初始化后開(kāi)始組網(wǎng),。首先發(fā)送請(qǐng)求基站分配級(jí)別的命令,,若收到基站應(yīng)答則定義為一級(jí)并把自身信息(包括地址、級(jí)別等)發(fā)給基站,;反之若發(fā)送次數(shù)達(dá)到設(shè)定值,,則向周?chē)?jié)點(diǎn)發(fā)送廣播信號(hào),通過(guò)周?chē)?jié)點(diǎn)應(yīng)答信息整理得出自身的網(wǎng)絡(luò)級(jí)別,,并向周?chē)?jié)點(diǎn)及基站發(fā)送自身信息,。如果還是未能分配到級(jí)別則延時(shí)等待其他節(jié)點(diǎn)分配好級(jí)別后重新請(qǐng)求入網(wǎng)。每個(gè)入網(wǎng)的傳感器節(jié)點(diǎn)都保存有周?chē)?jié)點(diǎn)(上級(jí),、同級(jí),、下級(jí)節(jié)點(diǎn))信息(級(jí)別及對(duì)應(yīng)的地址),最后就形成了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),。自組織算法流程圖如圖2所示。
3 節(jié)點(diǎn)硬件設(shè)計(jì)
傳感器節(jié)點(diǎn)要求低功耗,、體積小,,因此選用的芯片都是集成度高、功耗低,、體積小的芯片,,其他器件基本上采用貼片封裝。節(jié)點(diǎn)硬件框圖如圖3所示,。
本設(shè)計(jì)中MCU采用TI公司生產(chǎn)的一種混合信號(hào)處理器MSP430F149,,內(nèi)部資源豐富,具有兩個(gè)16位定時(shí)器,、一個(gè)14路的12 bit的模數(shù)轉(zhuǎn)換器,、6組I/O、一個(gè)看門(mén)狗,、兩路USART通信端口等,;因此節(jié)點(diǎn)的外部電路非常簡(jiǎn)單,并且還具有功耗超低的突出特點(diǎn),,當(dāng)工作頻率為1 MHz,、電壓為2.2 V時(shí)全速工作電流僅為280 ?滋A,,待機(jī)狀態(tài)下電流低至1.6 ?滋A。它的工作電壓范圍為1.8 V~3.6 V,,非常適合應(yīng)用于電池供電的節(jié)能系統(tǒng)中,。
Si4432芯片是Silicon Labs公司推出的一款高集成度、低功耗,、寬頻帶EZRadioPRO系列無(wú)線收發(fā)芯片,。其工作電壓1.8 V~3.6 V,可工作頻率范圍為240 MHz~930 MHz,;內(nèi)部集成分集式天線,、功率放大器、喚醒定時(shí)器,、數(shù)字調(diào)制解調(diào)器,、64 B的發(fā)送和接收數(shù)據(jù)FIFO,以及可配置的GPIO等[4],。Si4432在使用時(shí)所需的外部元件很少,,1個(gè)30 MHz的晶振、幾個(gè)電容和電感就可組成一個(gè)高可靠性的收發(fā)系統(tǒng),,設(shè)計(jì)簡(jiǎn)單,,且成本低。預(yù)留了大量外接傳感器接口,,外接傳感器的信號(hào)能以中斷方式喚醒節(jié)點(diǎn),。
4 系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件設(shè)計(jì)注重低功耗、數(shù)據(jù)采集實(shí)時(shí)性,、系統(tǒng)穩(wěn)健性及可靠性,,在低功耗設(shè)計(jì)中采用智能控制策略,讓系統(tǒng)需要工作時(shí)處于全速工作模式,,其他時(shí)刻處于低功耗模式,。數(shù)據(jù)采集實(shí)時(shí)性設(shè)計(jì)中關(guān)鍵是路由選擇,主要依據(jù)是跳數(shù)最少路徑最短原則(兼顧能量?jī)?yōu)先原則)[3],。系統(tǒng)穩(wěn)健性設(shè)計(jì)部分,,當(dāng)傳感器節(jié)點(diǎn)因能量耗盡或其他原因不能工作或者有新的傳感器節(jié)點(diǎn)請(qǐng)求加入網(wǎng)絡(luò)時(shí),整個(gè)網(wǎng)絡(luò)會(huì)馬上重新組網(wǎng),,形成新的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),。在系統(tǒng)可靠性設(shè)計(jì)中采用看門(mén)狗等技術(shù)增強(qiáng)系統(tǒng)抗干擾能力。系統(tǒng)軟件框圖如圖4所示,。
4.1 基站軟件
基站節(jié)點(diǎn)通過(guò)上位機(jī)USB供電所以一直工作在全速狀態(tài),,加快了對(duì)外部的響應(yīng)速度。上電初始化后,根據(jù)中斷程序中的標(biāo)志位值對(duì)獲得的信息進(jìn)行相應(yīng)處理,,處理完后把標(biāo)志位置零,,循環(huán)執(zhí)行此操作?;竟?jié)點(diǎn)通過(guò)串口與上位機(jī)相連,;因此外部事件包括串口中斷事件和接收到數(shù)據(jù)中斷事件。
為了防止串口通信過(guò)程中丟失數(shù)據(jù),,軟件設(shè)計(jì)上加了握手協(xié)議,。當(dāng)基站節(jié)點(diǎn)每發(fā)送一個(gè)數(shù)據(jù)包給上位機(jī)時(shí),上位機(jī)都會(huì)向基站節(jié)點(diǎn)發(fā)送應(yīng)答信號(hào),,直到數(shù)據(jù)包發(fā)送給上位機(jī),。上位機(jī)接收到數(shù)據(jù)包后,馬上進(jìn)入中斷處理,,處理完后把相應(yīng)標(biāo)志位置1,,通過(guò)主程序做進(jìn)一步處理。
4.2 傳感器節(jié)點(diǎn)軟件
傳感器節(jié)點(diǎn)主程序主要是實(shí)現(xiàn)組網(wǎng),,當(dāng)節(jié)點(diǎn)上電初始化后設(shè)定發(fā)射功率為最小,,請(qǐng)求入網(wǎng)。如果入網(wǎng)不成功則加大發(fā)射功率,,繼續(xù)請(qǐng)求入網(wǎng),。經(jīng)試驗(yàn)證實(shí),發(fā)射功率越小,,電池的使用壽命就越長(zhǎng),。入網(wǎng)成功后,保存入網(wǎng)信息,,并馬上進(jìn)入低功耗狀態(tài),,同時(shí)使用兩個(gè)中斷,一個(gè)外部接收數(shù)據(jù)中斷,,一個(gè)定時(shí)器采集中斷。程序流程圖分別如圖5,、圖6所示,。數(shù)據(jù)發(fā)送放在定時(shí)中斷程序里完成。
當(dāng)多個(gè)傳感器節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù)時(shí),,則會(huì)出現(xiàn)掙搶信道的現(xiàn)象,。為了避免多個(gè)傳感器節(jié)點(diǎn)同時(shí)與某個(gè)傳感器節(jié)點(diǎn)通信造成數(shù)據(jù)丟失,軟件上采用一定的退避機(jī)制,。一方面,,利用射頻芯片Si4432的載波偵聽(tīng)信號(hào)來(lái)產(chǎn)生隨機(jī)延時(shí),以避免同時(shí)發(fā)送信號(hào),;另一方面,,當(dāng)一個(gè)傳感器節(jié)點(diǎn)與某個(gè)傳感器節(jié)點(diǎn)建立了通信通道時(shí),,其他發(fā)送數(shù)據(jù)的節(jié)點(diǎn)會(huì)增加發(fā)射數(shù)據(jù)的次數(shù)。
4.3 上位機(jī)軟件
上位機(jī)主要功能有發(fā)送重組網(wǎng)命令,、向任意傳感器節(jié)點(diǎn)發(fā)送采集信息命令,、建立良好的人機(jī)界面用于觀察傳感器采集來(lái)的信息、幫助基站節(jié)點(diǎn)處理數(shù)據(jù)減輕基站的負(fù)擔(dān)等,。人機(jī)界面采用Visual Basic(VB)來(lái)設(shè)計(jì),,利用VB的MSComm控件實(shí)現(xiàn)上、下位機(jī)的串口通信,。利用其他控件實(shí)現(xiàn)對(duì)無(wú)線傳感器網(wǎng)絡(luò)的分析,、顯示和操作,在此不再詳細(xì)說(shuō)明,。
本文采用MSP430F149作為處理器,,Si4432作為無(wú)線收發(fā)器,利用它們的高集成度,、超低功耗等優(yōu)勢(shì)設(shè)計(jì)了一種無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng),。該系統(tǒng)節(jié)點(diǎn)上電后會(huì)自行組網(wǎng),當(dāng)向網(wǎng)絡(luò)加入新節(jié)點(diǎn)或移除某個(gè)節(jié)點(diǎn)時(shí)系統(tǒng)會(huì)重新組網(wǎng),,并且不會(huì)對(duì)系統(tǒng)通信產(chǎn)生毀壞性影響,。系統(tǒng)節(jié)點(diǎn)最多可達(dá)256個(gè),覆蓋范圍廣,。Si4432的緩沖寄存器為64 KB,,一次性可發(fā)送接收信息量可多達(dá)62 KB?;竟?jié)點(diǎn)通過(guò)串口跟上位機(jī)相連,,在上位機(jī)建立良好的人機(jī)界面可以觀察每個(gè)傳感器采集來(lái)的信息,并且可以控制每個(gè)節(jié)點(diǎn)的工作狀態(tài),。本系統(tǒng)已在實(shí)際中成功應(yīng)用,。
參考文獻(xiàn)
[1] 孫利民,李建中,,陳渝,,等.無(wú)線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005.
[2] EDGAR H,,CALLAWAY J.無(wú)線傳感器網(wǎng)絡(luò):體系結(jié)構(gòu)與協(xié)議[M].王永斌,,屈曉旭,譯.北京:電子工業(yè)出版社,,2007.
[3] Kan Baoqiang,,Cai Li,Zhu Hongsong,et al.Accurate energy model for WSN node and its optimal design[J].Journal of Systems Engineering and Electronics,,2008,,19(3):427-433.
[4] 魏小龍.MSP430 系列單片機(jī)接口技術(shù)及系統(tǒng)設(shè)計(jì)實(shí)例[M].北京:北京航空航天大學(xué)出版社,2002.