基于MSP430和NRF2401的WSN節(jié)點(diǎn)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引 言
無線傳感器網(wǎng)絡(luò)WSN(wireless sensor network)是一種自組織網(wǎng)絡(luò),它由大量低成本、資源有限的傳感節(jié)點(diǎn)設(shè)備組成,節(jié)點(diǎn)間協(xié)同工作實(shí)現(xiàn)某一特定任務(wù)。由于無線傳感網(wǎng)絡(luò)所具有的易擴(kuò)展、自組織、分布式結(jié)構(gòu)和實(shí)時(shí)性的特點(diǎn),無線傳感網(wǎng)絡(luò)的應(yīng)用已經(jīng)由軍事領(lǐng)域擴(kuò)展到其他許多領(lǐng)域,例如環(huán)境監(jiān)測(cè)、氣候監(jiān)測(cè)、目標(biāo)追蹤、工業(yè)自動(dòng)化等方面,此外還為未來的遠(yuǎn)程醫(yī)療和空間探索提供了很大的應(yīng)用空間。
無線傳感器網(wǎng)絡(luò)體系結(jié)構(gòu)如圖1所示,通常包括傳感器節(jié)點(diǎn)、匯聚節(jié)點(diǎn)(sinknode)、外部網(wǎng)絡(luò)和用戶界面。大量傳感器節(jié)點(diǎn)隨機(jī)部署在感知區(qū)域(Sensorfield)內(nèi)部或附近,能夠通過自組織方式構(gòu)成網(wǎng)絡(luò),傳感器節(jié)點(diǎn)將采集到的數(shù)據(jù)沿著其他傳感器節(jié)點(diǎn)逐跳進(jìn)行傳輸,在傳輸過程中所采集的數(shù)據(jù)可能被多個(gè)節(jié)點(diǎn)處理,經(jīng)過多跳路由后到匯聚節(jié)點(diǎn),再由匯聚節(jié)點(diǎn)通過外部網(wǎng)絡(luò)把數(shù)據(jù)傳送到處理中心進(jìn)行集中處理。
1 系統(tǒng)硬件設(shè)計(jì)
無線傳感器網(wǎng)絡(luò)終端節(jié)點(diǎn)的硬件一般包括數(shù)據(jù)處理單元、無線傳輸單元、傳感采集單元和電源供應(yīng)單元。如圖2所示,傳感采集單元可以根據(jù)應(yīng)用背景選擇相應(yīng)的測(cè)量物理量的傳感器,電源供應(yīng)單元部分由于系統(tǒng)大部分處于低功耗模式,可以采用7號(hào)電池解決。下面著重介紹數(shù)據(jù)處理單元、無線傳輸單元。
1.1 數(shù)據(jù)處理單元
MSP430是具有超低功耗特點(diǎn)的16位單片機(jī),本方案選用MSP430F148,其功耗電流已經(jīng)達(dá)到了μA級(jí)。16位CPU和高效的RISC指令系統(tǒng),無外擴(kuò)的數(shù)據(jù)地址總線,在8MHz時(shí)可達(dá)到125ns的指令周期,具有16個(gè)快速響應(yīng)中斷,能及時(shí)處理各種緊急事件。豐富的片內(nèi)外圍功能模塊:12位的A/D轉(zhuǎn)換器ADC12內(nèi)包括采樣/保持功能的ADC內(nèi)核、轉(zhuǎn)換存儲(chǔ)邏輯、內(nèi)部參考電平發(fā)生器、多種時(shí)鐘源、采樣及轉(zhuǎn)換時(shí)序電路。有8個(gè)外通道,4個(gè)內(nèi)通道,高達(dá)200kbps的采樣速率,多種采樣方式。兩路USART通信串口,可用于UART和SPI模式;片內(nèi)有精密硬件乘法器、兩個(gè)16位定時(shí)器,6個(gè)并行口P1~P6,48條I/O口線,其具有64KB的閃存,用于存儲(chǔ)采集數(shù)據(jù)。
1.2 無線傳輸單元
本系統(tǒng)采用2.4GHz無線單片收發(fā)芯片nRF2401,它具有體積小、功耗低,外設(shè)少的特點(diǎn),非常適合于無線傳輸應(yīng)用系統(tǒng)。nRF2401可以由SPI接口與微處理器連接,通過這個(gè)接口完成設(shè)置和收發(fā)數(shù)據(jù)工作。許多單片機(jī)都集成了SPI控制器,例如MSP430,可以非常方便地通過軟件設(shè)置最多40bit地址,只有收到本機(jī)地址時(shí)才會(huì)輸出數(shù)據(jù)(提供一個(gè)中斷指示),并且支持點(diǎn)對(duì)多點(diǎn)的操作,編程很方便。nRF2401與單片機(jī)采用SPI接口連接,原理圖如圖3所示。SPI總線接口技術(shù)是一種高速、高效率的串行接口技術(shù),主要用于擴(kuò)展外設(shè)和進(jìn)行數(shù)據(jù)交換。
2 軟件設(shè)計(jì)
軟件開發(fā)以IAR Workbench V3.1為平臺(tái),采用C語言編寫,軟件編程的基本思路是:先對(duì)SPI、nRF2401控制端口初始化;使能SPI、UART端口,使能ADC,對(duì)nRF2401芯片初始化;開啟接收機(jī)后,就可以運(yùn)行任務(wù)程序了,以實(shí)現(xiàn)接收或發(fā)送數(shù)據(jù),對(duì)nRF2401操作流程如下:
nRF2401有4種工作模式:收發(fā)模式、配置模式、空閑模式和關(guān)機(jī)模式。nRF2401的工作模式由PWR_UP、CE、TX_EN和CS三個(gè)引腳決定。對(duì)nRF2401的操作主要是配置其工作方式和讀寫數(shù)據(jù),所有配置命令字和數(shù)據(jù)都是通過同步串行口的CLK和DATA兩個(gè)引腳完成的。要將nRF2401設(shè)置于ShockBurstTM方式,首先使PWR_UP引腳為高電平,CE引腳為低電平。配置字從最高位開始,依次送入nRF2401,CLK下降沿鎖定數(shù)據(jù)。配置命令字發(fā)送完后,在CS的下降沿按新配置字的設(shè)置開始工作。使用nRF2401進(jìn)行發(fā)送數(shù)據(jù)時(shí),采用以下的步驟:1)CE置高,使nRF2401開始工作;2)逐位寫入接收機(jī)的地址;3)逐位寫入要傳送的數(shù)據(jù);4)CE置低,激發(fā)nRF2401進(jìn)行ShockBurstTM發(fā)射。nRF2401的ShockBurstTM發(fā)射過程是:給射頻前端供電,射頻數(shù)據(jù)打包(加字頭、CRC校驗(yàn)碼),高速發(fā)射數(shù)據(jù)包,發(fā)射完成,nRF2401進(jìn)入空閑狀態(tài)。nRF2401的接口模塊引腳包括CE、DR1、CLK1和DATA(接收通道1),接收端依照以下流程進(jìn)行數(shù)的接收:1)配置本機(jī)地址和即將接收的數(shù)據(jù)包大??;2)進(jìn)入接收狀態(tài),CE置高;3)200μs后,nRF2401進(jìn)入監(jiān)視狀態(tài),等待數(shù)據(jù)包的到來;4)當(dāng)接收到正確的數(shù)據(jù)包時(shí),nRF2401自動(dòng)除去字頭、地址和CRC;5)nRF2401通過把DR1(可用作中斷信號(hào))置高來通知微控制器;6)微控制器把數(shù)據(jù)從nRF2401逐位移出;7)所有數(shù)據(jù)移完,nRF2401把DR1置低,此時(shí)如果CE為高,則等待下一個(gè)數(shù)據(jù)包,如果CE為低,開始其他工作流程。
程序中用到的部分代碼如下:
/*invariable*/
unsigned char Comm_ok_flag;/*主從機(jī)連接OK標(biāo)志*/
unsigned char DR1_flag;/*DR1為高標(biāo)志*/
unsigned char Nrf_on_flag;/*2401開關(guān)標(biāo)志*/
unsigned char Shake_hand_flag;//握手成功標(biāo)志
unsigned char Config_word[W_CFGWORD];/*存儲(chǔ)配置字15字節(jié)*/
unsigned char Shock_word[W_SHOCKWORD];/*存儲(chǔ)一幀協(xié)議數(shù)據(jù)30字節(jié)*/
unsigned char Rxdata_buffer[W_PAYLOAD];/*存儲(chǔ)接收數(shù)據(jù)按協(xié)議26字節(jié)*/
unsigned char Txdata_buffer[N_DATA];/*存儲(chǔ)發(fā)送數(shù)據(jù)暫定10字節(jié)*/
unsigned char Order;/*提取數(shù)據(jù)幀功能碼*/
unsigned char Frq_set_value;/*頻道設(shè)置數(shù)據(jù)*/
/*function*/
void Buildspiword(void);
void Spinrf2401(void);
void Shockburst(void);
void Receiveshock(void);
void Dospiclk(void);
void Nrf2401_on(void);
void Nrf2401_off(void);
void Set_config(void);
void Set_standby(void);
void Set_tx(void);
void Set_rx(void);
void Clr_Payload(void);
void Soft_delay_01ms(int iUs);
void Set_address(void);
void Clr_shock_word(void);
考慮到點(diǎn)對(duì)多點(diǎn)通信的可靠性,數(shù)據(jù)在底層無線傳輸中需要增加必要的協(xié)議規(guī)范。設(shè)計(jì)中對(duì)有效數(shù)據(jù)進(jìn)行打包,格式為:前導(dǎo)碼、地址、有效數(shù)據(jù)載荷、校驗(yàn)碼。
3 結(jié)束語
基于MSP430和NRF2401的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)在實(shí)驗(yàn)中表現(xiàn)出比較好的效果,可以實(shí)現(xiàn)監(jiān)測(cè)區(qū)域內(nèi)信號(hào)的采集傳輸與處理。但是由于射頻芯片本身的原因,傳輸距離會(huì)受到障礙物的影響和設(shè)置頻率而有變化,這些問題都有待更深入的研究。隨著無線網(wǎng)絡(luò)技術(shù)的成熟無線傳感器網(wǎng)絡(luò)的應(yīng)用必將廣泛深入環(huán)境監(jiān)測(cè)、目標(biāo)追蹤、工業(yè)自動(dòng)化等各領(lǐng)域。