一款基于Zigbee的溫度濕度監測系統設計
摘要:根據一些環境溫度濕度實時監測的需要,采用首個符合Zigbee標準的射頻芯片,以SHT10為溫濕度傳感器來設計實現溫度濕度的數據采集與傳輸。利用TI公司的Z—Stack協議棧在IAB開發環境下,建立一個無線傳感器網絡。網絡協調器通過RS232串口與PC通信,實現對溫度濕度的無線智能監測。
本文引用地址:http://www.j9360.com/article/235929.htm在生命科學設施、計量校準實驗室和電子制造環境,溫度和濕度往往需要監測和報警顯示,以保障產品和工藝;在農業種植、環境監測和我們的日常生活中,要時刻關心環境變化,只有在適宜的溫度和濕度下,才能獲得更大的效益。以往的測溫測濕系統都是通過CAN或RS485等有線方式傳送數據,線路復雜布線困難,成本高,老化、容易受雷擊等問題影響了其可靠性。另外,像溫度、濕度傳感器這樣的設備并不需要很大的功耗和數據傳輸速率。Zigbee技術彌補了低成本、低功耗和低速率無線通信市場的空缺,其成功的關鍵在于豐富而便捷的應用。
Zigbee技術有自己的無線電標準,在數千個微小的傳感器之間相互協調實現網絡通信。這些傳感器只需要很低的功耗,以接力的方式通過無線電波將數據從一個傳感器傳到另一個傳感器,它們的通信效率非常高。無需布線,可以按照需要增減溫度濕度采集節點,自組織網絡,并且節點功耗低,生命周期長,使用靈活方便。因此,采用Zigbee技術來設計溫度濕度監測系統,具有明顯的實用價值和現實意義。
1 Zigbee技術及協議棧
Zigbee是一種新興的短距離、低速率、低成本無線網絡技術,是一個由可多到65000個無線數傳模塊組成的一個無線數傳網絡平臺。Zigb ee協議棧對那些涉及Zigbee的層予以定義。IEEE 802.15.4標準定義了最下面的兩層:物理層(PHY)和介質接入控制子層(MAC)。Zigbee聯盟提供了網絡層和應用層框架的設計,其中應用層的框架包括了應用支持子層(APs)、設備對象層(ZDO)和由制造商制訂的應用對象。Zigbee支持的設備類型包括FFD(全功能設備)和RFD(半功能設備)。FFD可以和FFD和RFD通信,可以為PAN協調器,路由器和終端設備。RFD只能和FFD通信,只能作為終端設備。在IEEE802.15.4物理層和MAC層基礎上,Zigbee網絡層提供了一些功能,比如動態網絡的建立、地址、路由和發現
一跳的鄰居節點等。
2 系統的組成
該監測系統由Zigbee協調器、Zigbee路由器、若干個SHT10溫濕度傳感器組成的樹狀網絡結構圖。其中,傳感器節點分布于需要監測的區域,負責對數據的感知和處理,并通過無線射頻信號發射給路由器,再通過路由器的轉發將數據傳給協調器,最終通過RS232串口將數據送入監控主機,監控主機放在監控室,負責數據存儲和對數據的進一步處理。Zigbee網絡中,每個設備擁有兩個地址:一個是64位IEEE物理地址,每個節點擁有全球唯一的MAC地址,另一個是所在PAN里獨有16位網絡地址,也稱短地址。網絡地址是在節點加入網絡時,由其父節點分配給它的。協調器在建立網絡后使用0x000作為自己的短地址。路由器和終端加入網絡后,使用父設備給它分配的短地址來通訊。工作人員無需到現場,通過查看網絡地址即可知道哪一點傳來的數據,這樣既方便快速又可集中查詢、管理數據。
3 硬件設計
為了便于系統功能擴展,節點采用模塊化設計,分為核心板、底板、傳感器模塊3個部分。核心板負責傳感器的驅動以及數據的傳輸工作。它的主控芯片是CC2430[4],是一款真正符合IEEE802.15.4標準的片上Zigbee產品,具有超低功耗、高靈敏度、出眾的噪聲及抗干擾能力。核心板即為CC2430單片機的最小系統板,它將CC2430單片機的P0口、P1口和P2_0-P2_2全部引出,滿足模塊化設計的需求。由于CC2430在單個芯片上整合了ZigBee射頻(RF)前端、內存和微控制器。內部集成了大量必要的電路,因此采用較少的外圍電路即實現信號的收發功能,如圖1所示。

底板一方面連接核心板與傳感器模塊,在傳感器與芯片之間進行數據傳輸,另一方面為整個模塊供電和節點與PC機之間通信的接口,主要由電源電路、單片機接口電路、復位電路等組成。系統中CC2430芯片需要的電源是3.3 V直流穩壓電源,而我們常用的電源電壓是5 V,所以需要用DC—DC直流轉換器1117—3.3將5 V直流電轉換為3.3 V直流電,以供系統正常工作需求。電源模塊電路如圖2所示。

傳感器模塊采用溫濕度傳感器SHT10,負責采集溫度、濕度數據,其工作電壓為2.4~5.5 V,測濕精度為±4.5%RH,25℃時測溫精度為±0.5℃。由于傳感器SHT10既可以采集溫度數據也可以采集濕度數據。它用兩條串行線與處理器進行數據通信,SCK數據線負責處理器和SHT10的通訊同步;DATA三態門用于數據的讀寫。將模擬量轉換為數字量輸出,所以用戶只需按照它提供的接口將溫濕度數據讀取出來即可。數據采集完成后Zigbee無線通信芯片將數據經路由器傳輸到協調器,這樣溫濕度采集節點便完成了一次工作周期。本設計中CC2430的引腳P0_0用于連接SCK,P0_4用于連接DATA。
4 系統軟件設計
本系統軟件設計基于TI公司推出的CC2430芯片配套的Z—Stack協議棧和IAR集成開發環境。在TI免費協議棧的基礎上,通過修改其應用層來實現不同的功能。一般情況下,我們只需要添加三個文件就可以完成一個項目,一個是主文件,存放具體的任務處理函數,一個是這個主文件的頭文件,另一個是操作系統接口文件,專門存放任務處理函數數組tasksArr[]的文件。無需改動Z—Stack核心代碼,大大增加了項目的通用性和易移植性。我們把Coordinator、Router和End Device這三種設備一起添加到項目中,在“project==>edit configurations”中,分別建立“Coordinator”“Router”及“EndDevice”三種設備的項目設置。無線傳感器網絡代碼包括協調器代碼、路由器代碼、傳感器節點代碼。這些代碼都在同一個工程文件中,通過條件編譯的方式將代碼分成不同的功能。
4.1 協調器節點設計
在一個Zigbee無線網絡中,協調器作為網絡的中心節點最先啟動。復位上電以后,首先進行系統初始化。完成之后,就會掃描DEFAULT_ CHANLIST指定的信道,最后選擇一個合適的信道建立網絡,等待有子節點加入時,就會發出入網響應。子節點加入網絡成功后,協調器接收到傳來的數據包,解析出數據源的短地址、溫度和濕度值并將其傳送給PC顯示出來。其流程圖如圖3所示。

4.2 子節點設計
路由器和終端設備啟動后,將掃描DEFAULT_CHANLIST指定的頻道。首先進行初始化,然后申請加入網絡成功之后,通過JionAsRouter= TRUE?判斷是否為路由器。如果是,則等待終端設備傳來的溫濕度數據,接收后再轉發給協調器。如果是終端設備,傳感器節點在不同工作模式下功耗大不一樣,為了降低功耗,它平時應該處于休眠模式,被喚醒后才將數據發給父節點,發送完后再次進入休眠模式。通信協議應該簡單有效,發送節點信息時使用短地址發送,使得節點的運算開銷盡量小,這樣可大大延長節點的壽命。子節點通信流程如圖4所示。

傳感器節點每隔一段時間采集一次溫度、濕度值,然后把數據打包傳輸給父節點,如果傳輸成功,節點進入休眠狀態;如果傳輸不成功,就再重新采集數據傳輸數據,直到成功為止。溫濕度傳感器燒寫步驟:在項目的應用層(APP)中添加Humidity.c和Humidity.h文件,然后在操作系統接口文件OSAL_SampleApp.c中的任務數組tasksArr[]添加任務函數osalTaskAdd(Humidity_Init,Humidity_ProcessEvent,OSAL TASK_PRIORITY_LOW),最后運行程序沒有錯誤后,把程序燒寫到傳感器節點即可。
4.3 低功耗設計
為了使節點有更長的生存時間,對傳感器節點進行休眠設置。CC2430芯片采用0.18 μm CMOS工藝生產,工作時的電流損耗為27 mA;在接收和發射模式下,電流損耗分別低于27 mA和25 mA。CC2430的休眠模式和轉換到主動模式時間超短,不會產生很大的時間延遲。Z—Stack提供了兩種sleep模式,LITE和DEEP(PM2/PM3)。PM2模式比較省功耗而且可以被定時喚醒;PM3模式最省電但是只能被外部中斷喚醒。系統在進入低功耗模式前,必須保證沒有需要處理的消息或其他事件。當系統需要周期性地喚醒執行一些事件時使用PM2模式,如果當前沒有任務那么將進入PM3模式。開啟休眠模式如下:首先確認在配置文件f8wConflg.cfg中的DRFD_RCVC_ALWAYS_ON定義為FALSE;第二步,在IAR的Optio ns->C/C++Compiler->Defined symbols中添加編譯選項POWER_SAVING;第三步,在Options->Linker->Linker command line里面把8w2430. xel改為f8w2430pm.xel;第四步,查看是否進去低功耗模式,在osal.c文件中osal_start_system()中以下部分加斷點,看是否進入。

5 測試結果
采用一個協調器、一個路由器和3個溫濕度傳感器節點測試,各個節點與協調器相距大約50米。首先打開電源,待協調器建立網絡之后,路由器和終端節點就開始申請加入網絡。等待底板上的信號指示燈閃爍后,就表明有節點成功加入網絡,終端節點開始周期性地采集周圍環境的溫度濕度值。采集一次數據后,指示燈熄滅,說明此時終端節點進入低功耗模式。協調器通過RS232與PC相連,通過串口調試助手顯示數據,設置波特率為115200b/s,無校驗位,8位數據位,1位停止位。某一時刻采集到各點的溫度濕度值如圖5所示(小端格式十六進制顯示)。根據SHT10數據手冊,實際溫度=0.04x溫度值-39.6,實際濕度=-4++0.648x濕度值-7.2x10-4×濕度值2,經計算實際溫度約為27.5℃,實際濕度約為51.6%RH。

6 結束語
文中以CC2430為核心實現了溫度濕度監測系統的設計,在傳感器SHT10的配合下,完成了對環境溫度濕度的無線監測。在硬件方面為模塊化設計,具有擴展性,加上相應的傳感器可以測其他因素如光照、氣體濃度等,可以監測更多的環境因素;軟件方面簡化通信協議,并使終端休眠,降低了其功耗,延長了節點使用壽命。在使用過程中可以通過在Zigbee協調器及路由器上添加TI公司的2.4 GHZ射頻前端CC2591來增加網絡的覆蓋范圍,或者增加GPRS模塊來進行更遠程的無線監測。實用性高,可擴展性強,可廣泛應用在倉儲系統、中央空調系統、溫室大棚、精密儀器的實驗室和溫度濕度條件要求嚴格的環境中,市場前景廣闊。
c++相關文章:c++教程
路由器相關文章:路由器工作原理
路由器相關文章:路由器工作原理
土壤濕度傳感器相關文章:土壤濕度傳感器原理 溫濕度控制器相關文章:溫濕度控制器原理
評論