基于Zigbee的溫度濕度監(jiān)測(cè)系統(tǒng)的研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:根據(jù)一些環(huán)境溫度濕度實(shí)時(shí)監(jiān)測(cè)的需要,采用首個(gè)符合Zigbee標(biāo)準(zhǔn)的CC2430射頻芯片,以SHT10為溫濕度傳感器來(lái)設(shè)計(jì)實(shí)現(xiàn)溫度濕度的數(shù)據(jù)采集與傳輸。利用TI公司的Z—Stack協(xié)議棧在IAB開發(fā)環(huán)境下,建立一個(gè)無(wú)線傳感器網(wǎng)絡(luò)。網(wǎng)絡(luò)協(xié)調(diào)器通過RS232串口與PC通信,實(shí)現(xiàn)對(duì)溫度濕度的無(wú)線智能監(jiān)測(cè)。
關(guān)鍵詞:Zigbee;無(wú)線網(wǎng)絡(luò);CC2430;溫度濕度監(jiān)測(cè)
在生命科學(xué)設(shè)施、計(jì)量校準(zhǔn)實(shí)驗(yàn)室和電子制造環(huán)境,溫度和濕度往往需要監(jiān)測(cè)和報(bào)警顯示,以保障產(chǎn)品和工藝;在農(nóng)業(yè)種植、環(huán)境監(jiān)測(cè)和我們的日常生活中,要時(shí)刻關(guān)心環(huán)境變化,只有在適宜的溫度和濕度下,才能獲得更大的效益。以往的測(cè)溫測(cè)濕系統(tǒng)都是通過CAN或RS485等有線方式傳送數(shù)據(jù),線路復(fù)雜布線困難,成本高,老化、容易受雷擊等問題影響了其可靠性。另外,像溫度、濕度傳感器這樣的設(shè)備并不需要很大的功耗和數(shù)據(jù)傳輸速率。Zigbee技術(shù)彌補(bǔ)了低成本、低功耗和低速率無(wú)線通信市場(chǎng)的空缺,其成功的關(guān)鍵在于豐富而便捷的應(yīng)用。
Zigbee技術(shù)有自己的無(wú)線電標(biāo)準(zhǔn),在數(shù)千個(gè)微小的傳感器之間相互協(xié)調(diào)實(shí)現(xiàn)網(wǎng)絡(luò)通信。這些傳感器只需要很低的功耗,以接力的方式通過無(wú)線電波將數(shù)據(jù)從一個(gè)傳感器傳到另一個(gè)傳感器,它們的通信效率非常高。無(wú)需布線,可以按照需要增減溫度濕度采集節(jié)點(diǎn),自組織網(wǎng)絡(luò),并且節(jié)點(diǎn)功耗低,生命周期長(zhǎng),使用靈活方便。因此,采用Zigbee技術(shù)來(lái)設(shè)計(jì)溫度濕度監(jiān)測(cè)系統(tǒng),具有明顯的實(shí)用價(jià)值和現(xiàn)實(shí)意義。
1 Zigbee技術(shù)及協(xié)議棧
Zigbee是一種新興的短距離、低速率、低成本無(wú)線網(wǎng)絡(luò)技術(shù),是一個(gè)由可多到65000個(gè)無(wú)線數(shù)傳模塊組成的一個(gè)無(wú)線數(shù)傳網(wǎng)絡(luò)平臺(tái)。Zigb ee協(xié)議棧對(duì)那些涉及Zigbee的層予以定義。IEEE 802.15.4標(biāo)準(zhǔn)定義了最下面的兩層:物理層(PHY)和介質(zhì)接入控制子層(MAC)。Zigbee聯(lián)盟提供了網(wǎng)絡(luò)層和應(yīng)用層框架的設(shè)計(jì),其中應(yīng)用層的框架包括了應(yīng)用支持子層(APs)、設(shè)備對(duì)象層(ZDO)和由制造商制訂的應(yīng)用對(duì)象。Zigbee支持的設(shè)備類型包括FFD(全功能設(shè)備)和RFD(半功能設(shè)備)。FFD可以和FFD和RFD通信,可以為PAN協(xié)調(diào)器,路由器和終端設(shè)備。RFD只能和FFD通信,只能作為終端設(shè)備。在IEEE802.15.4物理層和MAC層基礎(chǔ)上,Zigbee網(wǎng)絡(luò)層提供了一些功能,比如動(dòng)態(tài)網(wǎng)絡(luò)的建立、地址、路由和發(fā)現(xiàn)
一跳的鄰居節(jié)點(diǎn)等。
2 系統(tǒng)的組成
該監(jiān)測(cè)系統(tǒng)由Zigbee協(xié)調(diào)器、Zigbee路由器、若干個(gè)SHT10溫濕度傳感器組成的樹狀網(wǎng)絡(luò)結(jié)構(gòu)圖。其中,傳感器節(jié)點(diǎn)分布于需要監(jiān)測(cè)的區(qū)域,負(fù)責(zé)對(duì)數(shù)據(jù)的感知和處理,并通過無(wú)線射頻信號(hào)發(fā)射給路由器,再通過路由器的轉(zhuǎn)發(fā)將數(shù)據(jù)傳給協(xié)調(diào)器,最終通過RS232串口將數(shù)據(jù)送入監(jiān)控主機(jī),監(jiān)控主機(jī)放在監(jiān)控室,負(fù)責(zé)數(shù)據(jù)存儲(chǔ)和對(duì)數(shù)據(jù)的進(jìn)一步處理。Zigbee網(wǎng)絡(luò)中,每個(gè)設(shè)備擁有兩個(gè)地址:一個(gè)是64位IEEE物理地址,每個(gè)節(jié)點(diǎn)擁有全球唯一的MAC地址,另一個(gè)是所在PAN里獨(dú)有16位網(wǎng)絡(luò)地址,也稱短地址。網(wǎng)絡(luò)地址是在節(jié)點(diǎn)加入網(wǎng)絡(luò)時(shí),由其父節(jié)點(diǎn)分配給它的。協(xié)調(diào)器在建立網(wǎng)絡(luò)后使用0x000作為自己的短地址。路由器和終端加入網(wǎng)絡(luò)后,使用父設(shè)備給它分配的短地址來(lái)通訊。工作人員無(wú)需到現(xiàn)場(chǎng),通過查看網(wǎng)絡(luò)地址即可知道哪一點(diǎn)傳來(lái)的數(shù)據(jù),這樣既方便快速又可集中查詢、管理數(shù)據(jù)。
3 硬件設(shè)計(jì)
為了便于系統(tǒng)功能擴(kuò)展,節(jié)點(diǎn)采用模塊化設(shè)計(jì),分為核心板、底板、傳感器模塊3個(gè)部分。核心板負(fù)責(zé)傳感器的驅(qū)動(dòng)以及數(shù)據(jù)的傳輸工作。它的主控芯片是CC2430[4],是一款真正符合IEEE802.15.4標(biāo)準(zhǔn)的片上Zigbee產(chǎn)品,具有超低功耗、高靈敏度、出眾的噪聲及抗干擾能力。核心板即為CC2430單片機(jī)的最小系統(tǒng)板,它將CC2430單片機(jī)的P0口、P1口和P2_0-P2_2全部引出,滿足模塊化設(shè)計(jì)的需求。由于CC2430在單個(gè)芯片上整合了ZigBee射頻(RF)前端、內(nèi)存和微控制器。內(nèi)部集成了大量必要的電路,因此采用較少的外圍電路即實(shí)現(xiàn)信號(hào)的收發(fā)功能,如圖1所示。
底板一方面連接核心板與傳感器模塊,在傳感器與芯片之間進(jìn)行數(shù)據(jù)傳輸,另一方面為整個(gè)模塊供電和節(jié)點(diǎn)與PC機(jī)之間通信的接口,主要由電源電路、單片機(jī)接口電路、復(fù)位電路等組成。系統(tǒng)中CC2430芯片需要的電源是3.3 V直流穩(wěn)壓電源,而我們常用的電源電壓是5 V,所以需要用DC—DC直流轉(zhuǎn)換器1117—3.3將5 V直流電轉(zhuǎn)換為3.3 V直流電,以供系統(tǒng)正常工作需求。電源模塊電路如圖2所示。
傳感器模塊采用溫濕度傳感器SHT10,負(fù)責(zé)采集溫度、濕度數(shù)據(jù),其工作電壓為2.4~5.5 V,測(cè)濕精度為±4.5%RH,25℃時(shí)測(cè)溫精度為±0.5℃。由于傳感器SHT10既可以采集溫度數(shù)據(jù)也可以采集濕度數(shù)據(jù)。它用兩條串行線與處理器進(jìn)行數(shù)據(jù)通信,SCK數(shù)據(jù)線負(fù)責(zé)處理器和SHT10的通訊同步;DATA三態(tài)門用于數(shù)據(jù)的讀寫。將模擬量轉(zhuǎn)換為數(shù)字量輸出,所以用戶只需按照它提供的接口將溫濕度數(shù)據(jù)讀取出來(lái)即可。數(shù)據(jù)采集完成后Zigbee無(wú)線通信芯片將數(shù)據(jù)經(jīng)路由器傳輸?shù)絽f(xié)調(diào)器,這樣溫濕度采集節(jié)點(diǎn)便完成了一次工作周期。本設(shè)計(jì)中CC2430的引腳P0_0用于連接SCK,P0_4用于連接DATA。
4 系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件設(shè)計(jì)基于TI公司推出的CC2430芯片配套的Z—Stack協(xié)議棧和IAR集成開發(fā)環(huán)境。在TI免費(fèi)協(xié)議棧的基礎(chǔ)上,通過修改其應(yīng)用層來(lái)實(shí)現(xiàn)不同的功能。一般情況下,我們只需要添加三個(gè)文件就可以完成一個(gè)項(xiàng)目,一個(gè)是主文件,存放具體的任務(wù)處理函數(shù),一個(gè)是這個(gè)主文件的頭文件,另一個(gè)是操作系統(tǒng)接口文件,專門存放任務(wù)處理函數(shù)數(shù)組tasksArr[]的文件。無(wú)需改動(dòng)Z—Stack核心代碼,大大增加了項(xiàng)目的通用性和易移植性。我們把Coordinator、Router和End Device這三種設(shè)備一起添加到項(xiàng)目中,在“project==>edit configurations”中,分別建立“Coordinator”“Router”及“EndDevice”三種設(shè)備的項(xiàng)目設(shè)置。無(wú)線傳感器網(wǎng)絡(luò)代碼包括協(xié)調(diào)器代碼、路由器代碼、傳感器節(jié)點(diǎn)代碼。這些代碼都在同一個(gè)工程文件中,通過條件編譯的方式將代碼分成不同的功能。
4.1 協(xié)調(diào)器節(jié)點(diǎn)設(shè)計(jì)
在一個(gè)Zigbee無(wú)線網(wǎng)絡(luò)中,協(xié)調(diào)器作為網(wǎng)絡(luò)的中心節(jié)點(diǎn)最先啟動(dòng)。復(fù)位上電以后,首先進(jìn)行系統(tǒng)初始化。完成之后,就會(huì)掃描DEFAULT_ CHANLIST指定的信道,最后選擇一個(gè)合適的信道建立網(wǎng)絡(luò),等待有子節(jié)點(diǎn)加入時(shí),就會(huì)發(fā)出入網(wǎng)響應(yīng)。子節(jié)點(diǎn)加入網(wǎng)絡(luò)成功后,協(xié)調(diào)器接收到傳來(lái)的數(shù)據(jù)包,解析出數(shù)據(jù)源的短地址、溫度和濕度值并將其傳送給PC顯示出來(lái)。其流程圖如圖3所示。
4.2 子節(jié)點(diǎn)設(shè)計(jì)
路由器和終端設(shè)備啟動(dòng)后,將掃描DEFAULT_CHANLIST指定的頻道。首先進(jìn)行初始化,然后申請(qǐng)加入網(wǎng)絡(luò)成功之后,通過JionAsRouter= TRUE?判斷是否為路由器。如果是,則等待終端設(shè)備傳來(lái)的溫濕度數(shù)據(jù),接收后再轉(zhuǎn)發(fā)給協(xié)調(diào)器。如果是終端設(shè)備,傳感器節(jié)點(diǎn)在不同工作模式下功耗大不一樣,為了降低功耗,它平時(shí)應(yīng)該處于休眠模式,被喚醒后才將數(shù)據(jù)發(fā)給父節(jié)點(diǎn),發(fā)送完后再次進(jìn)入休眠模式。通信協(xié)議應(yīng)該簡(jiǎn)單有效,發(fā)送節(jié)點(diǎn)信息時(shí)使用短地址發(fā)送,使得節(jié)點(diǎn)的運(yùn)算開銷盡量小,這樣可大大延長(zhǎng)節(jié)點(diǎn)的壽命。子節(jié)點(diǎn)通信流程如圖4所示。
傳感器節(jié)點(diǎn)每隔一段時(shí)間采集一次溫度、濕度值,然后把數(shù)據(jù)打包傳輸給父節(jié)點(diǎn),如果傳輸成功,節(jié)點(diǎn)進(jìn)入休眠狀態(tài);如果傳輸不成功,就再重新采集數(shù)據(jù)傳輸數(shù)據(jù),直到成功為止。溫濕度傳感器燒寫步驟:在項(xiàng)目的應(yīng)用層(APP)中添加Humidity.c和Humidity.h文件,然后在操作系統(tǒng)接口文件OSAL_SampleApp.c中的任務(wù)數(shù)組tasksArr[]添加任務(wù)函數(shù)osalTaskAdd(Humidity_Init,Humidity_ProcessEvent,OSAL TASK_PRIORITY_LOW),最后運(yùn)行程序沒有錯(cuò)誤后,把程序燒寫到傳感器節(jié)點(diǎn)即可。
4.3 低功耗設(shè)計(jì)
為了使節(jié)點(diǎn)有更長(zhǎng)的生存時(shí)間,對(duì)傳感器節(jié)點(diǎn)進(jìn)行休眠設(shè)置。CC2430芯片采用0.18 μm CMOS工藝生產(chǎn),工作時(shí)的電流損耗為27 mA;在接收和發(fā)射模式下,電流損耗分別低于27 mA和25 mA。CC2430的休眠模式和轉(zhuǎn)換到主動(dòng)模式時(shí)間超短,不會(huì)產(chǎn)生很大的時(shí)間延遲。Z—Stack提供了兩種sleep模式,LITE和DEEP(PM2/PM3)。PM2模式比較省功耗而且可以被定時(shí)喚醒;PM3模式最省電但是只能被外部中斷喚醒。系統(tǒng)在進(jìn)入低功耗模式前,必須保證沒有需要處理的消息或其他事件。當(dāng)系統(tǒng)需要周期性地喚醒執(zhí)行一些事件時(shí)使用PM2模式,如果當(dāng)前沒有任務(wù)那么將進(jìn)入PM3模式。開啟休眠模式如下:首先確認(rèn)在配置文件f8wConflg.cfg中的DRFD_RCVC_ALWAYS_ON定義為FALSE;第二步,在IAR的Optio ns->C/C++Compiler->Defined symbols中添加編譯選項(xiàng)POWER_SAVING;第三步,在Options->Linker->Linker command line里面把8w2430. xel改為f8w2430pm.xel;第四步,查看是否進(jìn)去低功耗模式,在osal.c文件中osal_start_system()中以下部分加斷點(diǎn),看是否進(jìn)入。
5 測(cè)試結(jié)果
采用一個(gè)協(xié)調(diào)器、一個(gè)路由器和3個(gè)溫濕度傳感器節(jié)點(diǎn)測(cè)試,各個(gè)節(jié)點(diǎn)與協(xié)調(diào)器相距大約50米。首先打開電源,待協(xié)調(diào)器建立網(wǎng)絡(luò)之后,路由器和終端節(jié)點(diǎn)就開始申請(qǐng)加入網(wǎng)絡(luò)。等待底板上的信號(hào)指示燈閃爍后,就表明有節(jié)點(diǎn)成功加入網(wǎng)絡(luò),終端節(jié)點(diǎn)開始周期性地采集周圍環(huán)境的溫度濕度值。采集一次數(shù)據(jù)后,指示燈熄滅,說明此時(shí)終端節(jié)點(diǎn)進(jìn)入低功耗模式。協(xié)調(diào)器通過RS232與PC相連,通過串口調(diào)試助手顯示數(shù)據(jù),設(shè)置波特率為115200b/s,無(wú)校驗(yàn)位,8位數(shù)據(jù)位,1位停止位。某一時(shí)刻采集到各點(diǎn)的溫度濕度值如圖5所示(小端格式十六進(jìn)制顯示)。根據(jù)SHT10數(shù)據(jù)手冊(cè),實(shí)際溫度=0.04x溫度值-39.6,實(shí)際濕度=-4++0.648x濕度值-7.2x10-4×濕度值2,經(jīng)計(jì)算實(shí)際溫度約為27.5℃,實(shí)際濕度約為51.6%RH。
6 結(jié)束語(yǔ)
文中以CC2430為核心實(shí)現(xiàn)了溫度濕度監(jiān)測(cè)系統(tǒng)的設(shè)計(jì),在傳感器SHT10的配合下,完成了對(duì)環(huán)境溫度濕度的無(wú)線監(jiān)測(cè)。在硬件方面為模塊化設(shè)計(jì),具有擴(kuò)展性,加上相應(yīng)的傳感器可以測(cè)其他因素如光照、氣體濃度等,可以監(jiān)測(cè)更多的環(huán)境因素;軟件方面簡(jiǎn)化通信協(xié)議,并使終端休眠,降低了其功耗,延長(zhǎng)了節(jié)點(diǎn)使用壽命。在使用過程中可以通過在Zigbee協(xié)調(diào)器及路由器上添加TI公司的2.4 GHZ射頻前端CC2591來(lái)增加網(wǎng)絡(luò)的覆蓋范圍,或者增加GPRS模塊來(lái)進(jìn)行更遠(yuǎn)程的無(wú)線監(jiān)測(cè)。實(shí)用性高,可擴(kuò)展性強(qiáng),可廣泛應(yīng)用在倉(cāng)儲(chǔ)系統(tǒng)、中央空調(diào)系統(tǒng)、溫室大棚、精密儀器的實(shí)驗(yàn)室和溫度濕度條件要求嚴(yán)格的環(huán)境中,市場(chǎng)前景廣闊。