李延 張發(fā)生
摘要:針對(duì)布設(shè)線纜監(jiān)測(cè)室內(nèi)溫濕度的傳統(tǒng)方式存在的布線復(fù)雜、成本較高、維護(hù)難及擴(kuò)展性較差等不足,結(jié)合Zigbee及嵌入式開發(fā)技術(shù),提出一種基于Zigbee協(xié)議棧的ZStack室內(nèi)溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)方案。系統(tǒng)使用射頻芯片CC2530、處理器STC89C52和溫濕度傳感器DHT21,具有結(jié)構(gòu)簡(jiǎn)單、可靠性與擴(kuò)展性好、布點(diǎn)靈活等特點(diǎn),為ZStack應(yīng)用開發(fā)及智能家居環(huán)境調(diào)控的研究及實(shí)現(xiàn)提供重要的理論及應(yīng)用基礎(chǔ)。
關(guān)鍵詞關(guān)鍵詞:Zigbee;ZStack;溫濕度監(jiān)測(cè);智能家居
DOIDOI:10.11907/rjdk.143967
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2015)002009403
基金項(xiàng)目基金項(xiàng)目:
作者簡(jiǎn)介作者簡(jiǎn)介:李延(1990-),男,湖南邵陽(yáng)人,中南林業(yè)科技大學(xué)計(jì)算機(jī)與信息工程學(xué)院碩士研究生,研究方向?yàn)橹悄軝z測(cè)與自動(dòng)控制。
0引言
在物聯(lián)網(wǎng)時(shí)代,智能家居發(fā)展已成為一種趨勢(shì),而溫度、濕度與人們的日常生活息息相關(guān),影響著安全、舒適的生活體驗(yàn)。因此,對(duì)這些環(huán)境參量進(jìn)行監(jiān)測(cè)和調(diào)節(jié)在智能家居生活中必不可少。采用鋪設(shè)電纜的傳統(tǒng)方式,當(dāng)需要監(jiān)測(cè)和控制的對(duì)象較多時(shí),布線繁瑣、維護(hù)和升級(jí)困難,成本高、靈活性差等一系列的問題就凸顯出來(lái)\[13\]。
ZigBee技術(shù)是一種新興的短距離、低復(fù)雜度的雙向無(wú)線網(wǎng)絡(luò)技術(shù),具有能耗低、成本低、網(wǎng)絡(luò)容量大、時(shí)延短和安全等特點(diǎn)\[4\]。此外,ZigBee還具備自組織網(wǎng)絡(luò)的功能,能實(shí)現(xiàn)網(wǎng)絡(luò)自我功能恢復(fù)。ZigBee技術(shù)以其經(jīng)濟(jì)、可靠、高效等優(yōu)點(diǎn)在物聯(lián)網(wǎng)中有著良好的應(yīng)用前景\[5\]。
1系統(tǒng)總體設(shè)計(jì)方案
系統(tǒng)使用單片機(jī)STC89C52作為節(jié)點(diǎn)控制器,使用數(shù)字溫濕度傳感器DHT21(AM2301)構(gòu)建節(jié)點(diǎn)傳感器單元,使用TI無(wú)線射頻芯片CC2530搭建無(wú)線網(wǎng)絡(luò)節(jié)點(diǎn)??紤]到家庭住房較密集、面積較大等特點(diǎn),以及Zigbee節(jié)點(diǎn)網(wǎng)絡(luò)容量大的特性,整個(gè)系統(tǒng)采用星型拓?fù)浣Y(jié)構(gòu)的連接方式。為驗(yàn)證方案的可行性,本設(shè)計(jì)選用3個(gè)終端節(jié)點(diǎn),分別安裝在室內(nèi)3個(gè)不同方位。
如圖1所示,3個(gè)終端節(jié)點(diǎn)作為監(jiān)測(cè)節(jié)點(diǎn),實(shí)時(shí)檢測(cè)房間內(nèi)的溫濕度,并將其定時(shí)傳送至協(xié)調(diào)器。協(xié)調(diào)器節(jié)點(diǎn)通過串口與PC機(jī)相連,接收到溫濕度數(shù)據(jù)后通過串口將其發(fā)送至PC機(jī)。在PC上設(shè)置好串口號(hào)、波特率等參數(shù)后,即可在串口調(diào)試窗口上顯示出協(xié)調(diào)器接收到的溫濕度數(shù)據(jù)。
2硬件設(shè)計(jì)
2.1終端節(jié)點(diǎn)硬件設(shè)計(jì)
如圖2所示,終端節(jié)點(diǎn)由控制模塊、傳感器模塊、無(wú)線模塊和電源模塊組成??刂颇K采用高性能、低功耗的8位微控制器STC89C52,按照一定的時(shí)序讀寫數(shù)字溫濕度傳感器DHT21來(lái)獲取區(qū)域內(nèi)的溫濕度,單片機(jī)獲得溫濕度后通過串口將具體的數(shù)據(jù)發(fā)送給射頻芯片CC2530,再由射頻收發(fā)器終端節(jié)點(diǎn)將溫濕度值發(fā)送給協(xié)調(diào)器。
圖2終端節(jié)點(diǎn)硬件
2.2協(xié)調(diào)器節(jié)點(diǎn)硬件設(shè)計(jì)
網(wǎng)絡(luò)協(xié)調(diào)器承擔(dān)著網(wǎng)絡(luò)組建、網(wǎng)絡(luò)管理以及收集監(jiān)測(cè)節(jié)點(diǎn)的數(shù)據(jù)并上傳給PC機(jī)的任務(wù),是一個(gè)ZigBee全功能設(shè)備。在本系統(tǒng)中,協(xié)調(diào)器節(jié)點(diǎn)的硬件電路比較簡(jiǎn)單,射頻芯片采用TICC2530,同時(shí)使用PL2303模塊(STC下載器)連接協(xié)調(diào)器和PC機(jī)。
2.3主要模塊
(1)無(wú)線模塊。
本系統(tǒng)使用TI公司的CC2530無(wú)線射頻芯片。該芯片使用的8051CPU內(nèi)核是一個(gè)單周期的8051兼容內(nèi)核,它有3個(gè)不同的存儲(chǔ)器訪問總線(SFR、DATA 和CODE/XDATA),以單周期訪問SFR、DATA和主SRAM。它還包括一個(gè)調(diào)試接口和一個(gè)擴(kuò)展中斷單元。另外,CC2530具有電源管理功能,可以實(shí)現(xiàn)工作模式的切換,從而保證了芯片的低功耗性能。芯片內(nèi)部提供了一個(gè)IEEE 802.15.4兼容的無(wú)線收發(fā)器,RF內(nèi)核控制模擬無(wú)線模塊,提供了MCU和無(wú)線設(shè)備之間的一個(gè)接口,可以發(fā)出命令、讀取狀態(tài)、自動(dòng)操作和確定無(wú)線設(shè)備事件的順序。此外,無(wú)線設(shè)備還包括一個(gè)數(shù)據(jù)包過濾及地址識(shí)別模塊。
(2)傳感器模塊。
DHT21數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。它應(yīng)用數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長(zhǎng)期穩(wěn)定性。該產(chǎn)品具有品質(zhì)卓越、響應(yīng)快、抗干擾能力強(qiáng)、性價(jià)比高等優(yōu)點(diǎn)。外接3個(gè)接口分別為VCC、SDA和GND,SDA用于微處理器與DHT21之間的通訊和同步。
3軟件設(shè)計(jì)
單片機(jī)STC89C52的軟件開發(fā)平臺(tái)選擇Keil uVision4,Zigbee協(xié)議棧ZStack的應(yīng)用開發(fā)平臺(tái)選擇IAR Embedded Workbench。其中,ZStack的應(yīng)用開發(fā)需先下載并安裝ZStack軟件包(使用ZstackCC25302.5.1a)。
3.1ZStack協(xié)議棧
ZStack是TI公司推出的Zigbee2007協(xié)議棧,是Zigbee協(xié)議的具體實(shí)現(xiàn),它相當(dāng)于一個(gè)小型的操作系統(tǒng),包括14個(gè)文件目錄:App、HAL、MAC、MT、NWK、OSAL、Profile、Securitey、Services、Tools、ZDO、ZMAC、ZMain、Output。TI ZStack協(xié)議??傮w上由硬件抽象層HAL、操作系統(tǒng)抽象層OSAL和Zigbee協(xié)議層組成\[6\]。HAL層提供Timer、I/O、UART等硬件資源的API,OASL層負(fù)責(zé)任務(wù)管理。用戶可以使用協(xié)議棧提供的API 進(jìn)行應(yīng)用程序開發(fā),在開發(fā)過程中完全不必關(guān)心ZigBee協(xié)議的具體實(shí)現(xiàn)細(xì)節(jié)\[7\]。Z-Stack系統(tǒng)采用任務(wù)輪詢的機(jī)制,各層任務(wù)初始化之后便進(jìn)入查詢等待的低功耗模式,如果有事件發(fā)生,系統(tǒng)便被喚醒,中斷并處理發(fā)生的事件,處理完后再次進(jìn)入低功耗模式。若幾個(gè)事件同時(shí)發(fā)生,系統(tǒng)便根據(jù)事件的優(yōu)先級(jí)依次進(jìn)行處理\[7\]。協(xié)議棧工作流程如圖3所示。
3.2ZStack無(wú)線收發(fā)程序設(shè)計(jì)
對(duì)于Zigbee部分軟件設(shè)計(jì),采用基于協(xié)議棧ZStack的應(yīng)用開發(fā)方式,節(jié)點(diǎn)無(wú)線收發(fā)的程序設(shè)計(jì)按照節(jié)點(diǎn)種類的不同分為兩類,即終端(監(jiān)測(cè)節(jié)點(diǎn))程序設(shè)計(jì)與協(xié)調(diào)器程序設(shè)計(jì)。兩類程序的架構(gòu)基本一致,由于功能實(shí)現(xiàn)要求不同,存在一定差異,主要表現(xiàn)在以下方面:
(1)通訊方式設(shè)置。
Zigbee的通訊方式主要有3種:點(diǎn)播、組播、廣播。點(diǎn)播,顧名思義是點(diǎn)對(duì)點(diǎn)通信,也就是2個(gè)設(shè)備之間的通訊,不容許有第三個(gè)設(shè)備收到信息;組播就是將網(wǎng)絡(luò)中的節(jié)點(diǎn)分組,組員發(fā)出的信息只有組號(hào)相同的組員才能收到;廣播就是1個(gè)設(shè)備上發(fā)出的信息所有設(shè)備都能接收到。
本系統(tǒng)由于終端之間并不要求通訊,只是與協(xié)調(diào)器相互通信,因此將所有的終端監(jiān)測(cè)節(jié)點(diǎn)都設(shè)置為點(diǎn)播方式,目標(biāo)地址設(shè)置為協(xié)調(diào)器的網(wǎng)絡(luò)地址:
SampleApp_Point_DstAddr.addrMode=
(afAddrMode_t)Addr16Bit;
SampleApp_Point_DstAddr.addr.shortAddr=0x0000;
而對(duì)于協(xié)調(diào)器來(lái)說,為便于協(xié)調(diào)和管理所有的子節(jié)點(diǎn),宜采用廣播的方式讓所有的子節(jié)點(diǎn)都能收到信息,因此將地址信息設(shè)置為:
SampleApp_Periodic_DstAddr.addrMode =
(afAddrMode_t)AddrBroadcast;
SampleApp_Periodic_DstAddr.addr.shortAddr = 0xFFFF;
(2)串口通信。
串口通信的程序設(shè)計(jì)包括串口初始化、串口發(fā)送和串口接收,其中初始化部分包括配置串口號(hào)、波特率、流控、校驗(yàn)位等。比如,在工程配置選項(xiàng)中的C/C++ Compiler一欄選擇preprocessor,然后在Defined symbols下的白色書寫框中輸入定義的符號(hào),如果輸入ZTOOL_P1,編譯后系統(tǒng)則選擇串口0進(jìn)行相關(guān)的操作;若輸入ZTOOL_P2,則選中串口1。在mt_uart.h文件中編寫串口初始化宏參數(shù),例如#define MT_UART_DEFAULT_BAUDRATE、HAL_UART_BR_115200,將波特率設(shè)置為115200bps。
ZStack協(xié)議棧上開發(fā)的串口應(yīng)用可以分為接收部分和發(fā)送部分,接收部分是終端節(jié)點(diǎn)通過串口接收單片機(jī)采集到的溫濕度數(shù)據(jù),而發(fā)送部分則是協(xié)調(diào)器通過串口將數(shù)據(jù)發(fā)送給PC機(jī),具體如下:
接收部分(見圖4):終端節(jié)點(diǎn)的Zigbee模塊通過串口接收單片機(jī)采集到的溫濕度數(shù)據(jù),并通過RF將其發(fā)送至協(xié)調(diào)器節(jié)點(diǎn)。
發(fā)送部分(見圖5):協(xié)調(diào)器節(jié)點(diǎn)的Zigbee模塊將監(jiān)測(cè)終端傳來(lái)的數(shù)據(jù)呈送給PC機(jī),以方便用戶通過PC機(jī)了解當(dāng)前室內(nèi)所有房間溫濕度情況。
(3)事件及處理方式。
終端監(jiān)測(cè)節(jié)點(diǎn)主要功能是將數(shù)據(jù)定時(shí)上報(bào)給協(xié)調(diào)器。終端事件來(lái)源于串口接收到的數(shù)據(jù),將其無(wú)線發(fā)送給設(shè)置好的目標(biāo)地址(協(xié)調(diào)器);協(xié)調(diào)器的事件則來(lái)源于無(wú)線接收到一幀數(shù)據(jù),其處理方式是通過串口發(fā)送給PC機(jī)。
圖4接收部分流程圖5發(fā)送部分流程
3.3數(shù)據(jù)采集單元
終端監(jiān)測(cè)節(jié)點(diǎn)數(shù)據(jù)采集單元由單片機(jī)STC89C52和數(shù)字溫濕度傳感器DHT21組成,單片機(jī)使用單總線的方式控制DHT21輸出溫度和濕度,輸出數(shù)據(jù)的格式為:
40bit數(shù)據(jù)=16bit濕度+16bit溫度+8bit校驗(yàn)
如圖5所示,在獲取5字節(jié)數(shù)據(jù)之后即可從中得到溫度和濕度值。
for(i=0;i<5;i++)
Sensor_Data\[i\]= Read_SensorData();
其中,Sensor_Data\[0\]、Sensor_Data\[1\]存儲(chǔ)的是濕度量,Sensor_Data\[2\]、Sensor_Data\[3\]存儲(chǔ)的是溫度量,因此,溫濕度分別為:
humidity = Sensor_Data\[0\]*256+Sensor_Data\[1\];
temperature=Sensor_Data\[2\]*256+Sensor_Data;若接收到的前32bit數(shù)據(jù)為:0000000111110101_0000000100011010,那么,humidity = 1*256+245=501,temperature = 1*256+26=282,得到最終相對(duì)濕度和溫度。
4結(jié)語(yǔ)
針對(duì)傳統(tǒng)溫濕度監(jiān)測(cè)中布設(shè)線纜方式存在的布線復(fù)雜、成本高、維護(hù)不便以及擴(kuò)展性能較差等不足,本文提出了一種基于ZStack的室內(nèi)溫濕度監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)方案,并給出了主要模塊的軟硬件設(shè)計(jì)框圖和流程圖。本設(shè)計(jì)結(jié)合了Zigbee和嵌入式技術(shù),為Zigbee的應(yīng)用開發(fā)以及智能家居的智能調(diào)控提供了理論和實(shí)踐指導(dǎo)。
參考文獻(xiàn)參考文獻(xiàn):
\[1\]新浪地產(chǎn).智能家居行業(yè)的現(xiàn)狀與困境\[EB/OL\]. http://dichan.sina.com.cn/zt/zhinengjiaju.
\[2\]NAZMIYE BALTAOZKAN, BENJAMIN BOTELER, OSCAR AMERIGHI.European smart home market development: public views on technical and economic aspects across the United Kingdom,Germany and Italy\[J\]. Energy Research&Social Science,2014(3):6577.
\[3\]姚凱旋. 基于ARM的智能家居系統(tǒng)的研究與設(shè)計(jì)\[D\]. 太原:太原理工大學(xué),2012.
\[4\]NAVEEN SASTRY,DAVID WAGNER.Security considerations for IEEE 802.15. 4 networks\[C\]. In Proceedings of the 3rd ACM Workshop on Wireless Security,2004:3242.
\[5\]闞鳳龍. ZigBee無(wú)線通信技術(shù)在智能家庭中的應(yīng)用研究\[J\]. 科技廣場(chǎng),2008(8):5859.
\[6\]高守瑋,吳燦陽(yáng).ZigBee 技術(shù)實(shí)踐教程\[M\].北京:北京航空航天大學(xué)出版社,2009:229230.
\[7\]張奇松,尹航. ZSTACK剖析及其在無(wú)線測(cè)溫網(wǎng)絡(luò)中的應(yīng)用\[J\]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2009,18(2):103105.
責(zé)任編輯(責(zé)任編輯:陳福時(shí))