面向環(huán)境監(jiān)測(cè)的無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的軟件設(shè)計(jì)
環(huán)境監(jiān)測(cè)是無(wú)線傳感器網(wǎng)絡(luò)的重要應(yīng)用領(lǐng)域。為搜集某一區(qū)域內(nèi)的環(huán)境數(shù)據(jù),傳感器節(jié)點(diǎn)需要在無(wú)人值守情況下長(zhǎng)時(shí)間地工作在惡劣環(huán)境條件下。傳感器節(jié)點(diǎn)的軟件設(shè)計(jì)為節(jié)點(diǎn)正常工作提供了重要保證。
1 無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)
整個(gè)傳感器網(wǎng)絡(luò)是由若干個(gè)采集節(jié)點(diǎn)、1個(gè)匯聚節(jié)點(diǎn)、1個(gè)數(shù)據(jù)中轉(zhuǎn)器以及1個(gè)便于用戶查看和控制的上位機(jī)組成。系統(tǒng)結(jié)構(gòu)如圖1所示。采集節(jié)點(diǎn)用于對(duì)環(huán)境數(shù)據(jù)的采集、數(shù)據(jù)的預(yù)處理,承當(dāng)數(shù)據(jù)的路由;匯聚節(jié)點(diǎn)負(fù)責(zé)整個(gè)網(wǎng)絡(luò)的開(kāi)啟和維護(hù),向采集節(jié)點(diǎn)發(fā)送命令,搜集節(jié)點(diǎn)的數(shù)據(jù)以及和數(shù)據(jù)中轉(zhuǎn)器之間的串口通信;數(shù)據(jù)中轉(zhuǎn)器承擔(dān)數(shù)據(jù)的中轉(zhuǎn)及轉(zhuǎn)發(fā)上位機(jī)的命令;上位機(jī)是數(shù)據(jù)搜集的終端設(shè)備,并且可以根據(jù)用戶的需要對(duì)節(jié)點(diǎn)的采集時(shí)間間隔、休眠時(shí)間間隔、傳感器的開(kāi)關(guān)進(jìn)行相應(yīng)設(shè)置。
2 節(jié)點(diǎn)的硬件電路
為方便數(shù)據(jù)的搜集,匯聚節(jié)點(diǎn)和采集節(jié)點(diǎn)硬件電路設(shè)計(jì)相同,只是軟件設(shè)計(jì)有所不同。任意節(jié)點(diǎn)都可作為匯聚節(jié)點(diǎn),與數(shù)據(jù)中轉(zhuǎn)器通過(guò)串口進(jìn)行通信,來(lái)搜集網(wǎng)絡(luò)中其他節(jié)點(diǎn)的數(shù)據(jù)。節(jié)點(diǎn)的硬件結(jié)構(gòu)如圖2所示。
本設(shè)計(jì)選用的核心芯片是TI公司推出的ZigBee芯片CC2430。它以8051微處理器為內(nèi)核,自身攜帶的射頻收發(fā)器用來(lái)實(shí)現(xiàn)無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的通信,提供了4路I/O口來(lái)控制傳感器的打開(kāi)和關(guān)閉。傳感器將相應(yīng)的環(huán)境數(shù)據(jù)變成電壓、電流等信號(hào)送給信號(hào)調(diào)理電路,經(jīng)相關(guān)調(diào)理后送到CC2430的ADC接口進(jìn)行A/D采樣,最后CC2430將得到的A/D值存人1個(gè)外接的64 Kb的存儲(chǔ)器中。當(dāng)節(jié)點(diǎn)作為網(wǎng)絡(luò)中的匯聚節(jié)點(diǎn)時(shí),CC2430的2路I/O口被設(shè)置成UART0串口Tx和Rx,用于和數(shù)據(jù)中轉(zhuǎn)器進(jìn)行串口通信。對(duì)于能源供應(yīng)部分,為保證節(jié)點(diǎn)長(zhǎng)期穩(wěn)定工作,選用2300 mA的鎳氫充電電池,2組鎳氫電池采用雙電源供電模式。軟件通過(guò)控制2組鎳氫電池的切換實(shí)現(xiàn)對(duì)節(jié)點(diǎn)的輪流供電,并在電池電壓不足時(shí)控制太陽(yáng)能電池板對(duì)其進(jìn)行充電。
3 節(jié)點(diǎn)軟件設(shè)計(jì)
3.1 Z-Stack協(xié)議棧簡(jiǎn)介
本次的軟件設(shè)計(jì)基于TI公司Z-Stack 2006協(xié)議棧。Z-Stack 2006是TI公司專門為CC2430芯片設(shè)計(jì)的ZigBee協(xié)議棧。它由1個(gè)簡(jiǎn)單的單線程的操作系統(tǒng)管理。該操作系統(tǒng)基于任務(wù)調(diào)度機(jī)制,任務(wù)通過(guò)API函數(shù)osalTaskAdd()按照優(yōu)先級(jí)添加到任務(wù)鏈表。任務(wù)的事件觸發(fā)實(shí)現(xiàn)任務(wù)調(diào)度。每個(gè)任務(wù)最多可定義16個(gè)事件,每個(gè)事件都對(duì)應(yīng)1個(gè)唯一的事件號(hào)。NextActiveTask()是任務(wù)事件查詢函數(shù),返回任務(wù)的事件狀態(tài)ActiveTask,根據(jù)返回的事件值來(lái)調(diào)用相應(yīng)的任務(wù)處理函數(shù)ActiveTask()進(jìn)行處理。操作系統(tǒng)任務(wù)調(diào)度如圖3所示。
評(píng)論