基于ZigBee與ARM的遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
摘要:針對(duì)有線組網(wǎng)方式布線復(fù)雜、維護(hù)困難的問題,提出了一種基于ZigBee無線組網(wǎng)技術(shù)和嵌入式Web服務(wù)器,對(duì)家庭環(huán)境進(jìn)行遠(yuǎn)程監(jiān)控的實(shí)現(xiàn)方法。采用厥度傳感器DHT11實(shí)現(xiàn)溫濕度的采集,煙霧傳感器MQ2監(jiān)測(cè)廚房煙霧濃度是否超標(biāo),人體紅外感應(yīng)模塊實(shí)現(xiàn)家庭安防。并且通過紅外技術(shù)控制空調(diào)和加濕器或熱水器的打開或關(guān)閉,從而實(shí)現(xiàn)對(duì)囟群褪度的調(diào)節(jié),對(duì)熱水器的遠(yuǎn)程控制。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)體積小、功耗低、運(yùn)行穩(wěn)定,具有一定的實(shí)際意義。
本文引用地址:http://www.ex-cimer.com/article/201610/308144.htm在炎熱的夏季,下班回家后才把空調(diào)打開,卻還是很熱;想洗熱水澡,發(fā)現(xiàn)熱水器還沒有加熱;有急事需要出門,結(jié)果忘記關(guān)閉空調(diào)。為了解決上述問題,急需要一套對(duì)家電的遠(yuǎn)程控制系統(tǒng)。于是,本文將ZigBee技術(shù)結(jié)合嵌入式Web服務(wù)器,實(shí)現(xiàn)了一種對(duì)家庭溫濕度等環(huán)境因素的遠(yuǎn)程監(jiān)控,讓人們的生活更加方便、舒適。
1 系統(tǒng)概述
本設(shè)計(jì)需要在家庭內(nèi)部建立網(wǎng)路,將各種電器、傳感器納入其中,以實(shí)現(xiàn)集中管理。家用電器位置容易改變,數(shù)量也容易變化,相對(duì)距離較短;ZigBee技術(shù)是一種符合國(guó)際標(biāo)準(zhǔn)的新型短距離無線通信技術(shù),具有低功耗、低成本、容量大、安全性高、抗干擾性強(qiáng)等優(yōu)點(diǎn);文中應(yīng)用ZigBee技術(shù)組建家庭無線網(wǎng)絡(luò),接線簡(jiǎn)單,性能穩(wěn)定可靠,功耗低,實(shí)時(shí)性好。
嵌入式Web服務(wù)器實(shí)現(xiàn)家庭網(wǎng)絡(luò)與外部網(wǎng)絡(luò)的連接。由于HTML語言的標(biāo)準(zhǔn)統(tǒng)一性,只要該嵌入式Web服務(wù)器接入Internet,就可以使用任意一種接入Internet的Web瀏覽器接收和發(fā)送信息,實(shí)現(xiàn)對(duì)家庭網(wǎng)絡(luò)中傳感器數(shù)據(jù)的顯示,對(duì)家用電器的控制。
本設(shè)計(jì)的總體框架如圖1所示,ZigBee網(wǎng)絡(luò)包括網(wǎng)絡(luò)協(xié)調(diào)器和終端節(jié)點(diǎn)。協(xié)調(diào)器和搭建了Web服務(wù)器的ARM9芯片通過串口接在一起,而ARM9又通過網(wǎng)口以網(wǎng)線連接路由器,進(jìn)而接入Internet。遠(yuǎn)程客戶端是連網(wǎng)的個(gè)人電腦,電腦上安裝有普通瀏覽器程序,通過普通瀏覽器登陸服務(wù)器,然后實(shí)現(xiàn)對(duì)ZigBee終端節(jié)點(diǎn)的傳感器數(shù)據(jù)的顯示和對(duì)執(zhí)行電器的控制。
根據(jù)系統(tǒng)功能應(yīng)用,選用星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。此網(wǎng)絡(luò)結(jié)構(gòu)中有唯一的協(xié)調(diào)器,它是整個(gè)網(wǎng)絡(luò)的核心,負(fù)責(zé)網(wǎng)絡(luò)的建立和維護(hù)。協(xié)調(diào)器將終端節(jié)點(diǎn)上傳的傳感器數(shù)據(jù)通過串口發(fā)送給嵌入式web服務(wù)器,將嵌入式web服務(wù)器傳過來的指令解析,并將控制命令下發(fā)給終端節(jié)點(diǎn)。
終端節(jié)點(diǎn)定期采集傳感器數(shù)據(jù),并上傳給網(wǎng)絡(luò)協(xié)調(diào)器;當(dāng)協(xié)調(diào)器下發(fā)控制命令時(shí),根據(jù)命令激勵(lì)紅外二極管發(fā)射紅外遙控信號(hào)。執(zhí)行電器的紅外接收端接收到紅外信號(hào)后,執(zhí)行相應(yīng)的操作。
2 硬件電路
嵌入式Web服務(wù)器以ARM9為硬件平臺(tái),采用S3C2440芯片作為主處理器,主頻400 MHz,最高533 MHz,SDRAM作為內(nèi)存,F(xiàn)lash作為內(nèi)核和文件系統(tǒng)存儲(chǔ)芯片。
ZigBee模塊主芯片采用CC2430,它是Chipcon公司推出的用來實(shí)現(xiàn)嵌入式ZigBee應(yīng)用的片上系統(tǒng)。它結(jié)合一個(gè)高性能2.4GHzDSSS射頻收發(fā)器核心和一顆工業(yè)級(jí)小巧高效的8051控制器。該芯片采用0.18μmCMOS工藝,工作電流損耗為27 mA,在接收和發(fā)射模式下,電流損耗分別低于27 mA或25mA。
監(jiān)控系統(tǒng)的主要參數(shù)要視具體應(yīng)用場(chǎng)合而定,此系統(tǒng)的應(yīng)用針對(duì)的是家庭,而人們對(duì)家庭環(huán)境的要求,最基本的就是溫度、濕度要合適,此外要防火防盜。家庭室內(nèi)環(huán)境溫度的范圍一般為0~35℃之間,相對(duì)濕度范圍在20~80%RH之間;當(dāng)環(huán)境溫度在18~25℃,相對(duì)濕度在40%~70%,時(shí),人體感覺最舒適?;诖?,選用數(shù)字溫濕度傳感器DHT11,它是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。測(cè)量范圍是:相對(duì)濕度20~90%RH,溫度0~50℃;測(cè)量濕度的精度為±5%RH,測(cè)量溫度的精度為±2℃,均能滿足要求,并且抗干擾能力強(qiáng)、性價(jià)比較高。其它傳感器選擇煙霧傳感器MQ2、HR-SR501人體紅外感應(yīng)模塊。
傳感器MQ2保證正常工作的電壓為5 ±0.2 V,而CC2430的供電電壓為2~3.6 V,因此采用升壓模塊對(duì)其升壓后再給MQ2供電。圖2為Zig Bee終端節(jié)點(diǎn)的部分電路連接圖,如圖所示電源VCC經(jīng)過升壓后再連接到傳感器模塊MQ2的電源端,然后MQ2的數(shù)字輸出端連接ZigBee終端節(jié)點(diǎn)的通用I/O口P0.1。升壓電路功耗低,提供的電流也能滿足MQ2正常工作的要求。
為了降低成本,結(jié)合紅外技術(shù)來實(shí)現(xiàn)對(duì)家用電器的控制。這樣,每個(gè)房間只需一個(gè)ZigBee終端節(jié)點(diǎn),其I/O端口除了連接傳感器外其余的還作為控制信號(hào)輸出端口使用??照{(diào)遙控器按鍵是開關(guān)量,又多是兩節(jié)干電池供電,因此ZigBee終端節(jié)點(diǎn)的I/O端口可以和空調(diào)遙控器上的幾個(gè)按鍵直接相連,這樣既能遠(yuǎn)程控制,又可以在本地通過遙控器控制空調(diào)的開關(guān)、溫度的調(diào)節(jié)。而電熱水器和加濕器沒有配套的遙控,因此在ZigBee終端節(jié)點(diǎn)連接5 mm紅外發(fā)射管,采用軟件調(diào)制技術(shù),激勵(lì)紅外二極管發(fā)射紅外遙控信號(hào)來實(shí)現(xiàn)對(duì)電熱水器和加濕器的遠(yuǎn)程控制,原理圖如圖3所示。
電熱水器和加濕器的開關(guān)處要增加一紅外接收電路。紅外接收電路由低成本低功耗的PIC單片機(jī)PIC12F629、紅外一體化接收頭、繼電器組成。
3 軟件設(shè)計(jì)與實(shí)現(xiàn)
3.1 ZigBee網(wǎng)絡(luò)協(xié)調(diào)器節(jié)點(diǎn)
采用TI公司半開源的Zstack協(xié)議棧-ZigBee2006,具體版本號(hào)為ZStack-1.4.3-1.2.1,既縮短了研發(fā)周期又能增強(qiáng)系統(tǒng)的穩(wěn)定性。
協(xié)調(diào)器節(jié)點(diǎn)的程序設(shè)計(jì)主要包括協(xié)議棧的配置和應(yīng)用層軟件的開發(fā)。圖4是協(xié)調(diào)器的程序流程圖。
本文采用的是雙向綁定的方法,因?yàn)榻壎ū碇唤⒃诎l(fā)起綁定的一方,對(duì)于被綁定方是不知道綁定方的綁定地址的。故而采取雙向綁定的方法,來實(shí)現(xiàn)協(xié)調(diào)器和終端節(jié)點(diǎn)的雙向通信。
由于終端節(jié)點(diǎn)有多個(gè),故而采用順序綁定的方法,即先設(shè)置綁定節(jié)點(diǎn)1,成功之后設(shè)置綁定節(jié)點(diǎn)2,依此類推直到綁定所有終端節(jié)點(diǎn)。在函數(shù)void zb_BindConfirm(uint16 commandId,uint8 status)中,標(biāo)志位count每完成一次協(xié)調(diào)器到終端節(jié)點(diǎn)的綁定,其值增一,以此記錄該綁定哪個(gè)終端節(jié)點(diǎn)。再利用if語句實(shí)現(xiàn)對(duì)終端節(jié)點(diǎn)的設(shè)置綁定事件,進(jìn)而完成綁定工作。
在正常工作狀態(tài)下的協(xié)調(diào)器,當(dāng)有按鍵按下時(shí),會(huì)進(jìn)入應(yīng)用層進(jìn)行處理。調(diào)用函數(shù)zb_SendDataRequest(uint16 destination,uint16 commandId,uint8 len,uint8*pData,uint8 handle,uint8 txOptions,uint8 radius)向終端節(jié)點(diǎn)發(fā)送數(shù)據(jù),由于不同終端節(jié)點(diǎn)的comma ndId不同,因此協(xié)調(diào)器只向commandId相匹配的終端節(jié)點(diǎn)發(fā)送數(shù)據(jù)。終端節(jié)點(diǎn)根據(jù)接收到的數(shù)據(jù)去做相應(yīng)處理。
3.2 ZigBee終端節(jié)點(diǎn)
終端節(jié)點(diǎn)上電后,進(jìn)行初始化,然后去發(fā)現(xiàn)網(wǎng)絡(luò)并加入網(wǎng)絡(luò)、進(jìn)行綁定等操作。之后進(jìn)入正常丁作狀態(tài),終端節(jié)點(diǎn)每隔10S采集一次傳感器數(shù)據(jù),將數(shù)據(jù)存儲(chǔ)在數(shù)組pData中,然后調(diào)用發(fā)送函數(shù)zb_SendDataRequest(OxFFFE,SENSOR_REPORT_CMD_ID,12,pData,0,AF_ACK_ REQUEST,0),將所有數(shù)據(jù)一次性發(fā)送給協(xié)調(diào)器節(jié)點(diǎn)。圖5是終端節(jié)點(diǎn)程序流程圖。
4 嵌入式web服務(wù)器
嵌入式Web服務(wù)器以linux為操作系統(tǒng),通過搭建BOA服務(wù)器,實(shí)現(xiàn)對(duì)瀏覽器頁面訪問請(qǐng)求響應(yīng)以及數(shù)據(jù)的發(fā)送等功能。此外,結(jié)合CCI技術(shù)編寫HTML靜態(tài)網(wǎng)頁和CGI程序,移植了嵌入式數(shù)據(jù)庫SQlite,用以存儲(chǔ)合法用戶的用戶名和密碼,實(shí)現(xiàn)對(duì)登錄用戶的客戶驗(yàn)證功能;并且還能存儲(chǔ)由串口傳送來的傳感器數(shù)據(jù),通過CGI程序調(diào)用數(shù)據(jù)庫的最新數(shù)據(jù),由BOA服務(wù)器返回給瀏覽器實(shí)現(xiàn)對(duì)家庭傳感器數(shù)據(jù)的實(shí)時(shí)顯示。
ARM9除了BOA服務(wù)器一直在運(yùn)行,還有串口應(yīng)用程序也在不斷監(jiān)聽是否有數(shù)據(jù)需要接收或者發(fā)送。設(shè)計(jì)所用ARM9開發(fā)板有3個(gè)UART,選用串口1,主要寄存器設(shè)置如下:
CPHCON=0xa00;
ULCON1=0x03;//數(shù)據(jù)格式為8位,一停止位,無校驗(yàn)位
UCON1=0x05;//時(shí)鐘源為pclk,查詢方式
UBRDIV1=(PCLK/(115200 x 16)-1);//設(shè)置波特率115200
5 系統(tǒng)測(cè)試
本設(shè)計(jì)以一個(gè)協(xié)調(diào)器和5個(gè)終端節(jié)點(diǎn)為例進(jìn)行測(cè)試,5個(gè)終端節(jié)點(diǎn)分別放在5個(gè)房間-客廳、主臥室、次臥室、衛(wèi)生間、廚房?jī)?nèi),協(xié)調(diào)器節(jié)點(diǎn)和嵌入式Web服務(wù)器放在主臥室。在PC機(jī)上打開瀏覽器,輸入http://192.168.1.230,即出現(xiàn)登陸頁面,輸入用戶名、密碼認(rèn)證成功后,即出現(xiàn)主頁面,如圖6,是本系統(tǒng)默認(rèn)主頁面,顯示內(nèi)容為房間名稱、電池電量、溫濕度、是否有人活動(dòng)等情況,默認(rèn)情況下空調(diào)、加濕器都是關(guān)閉的。
如圖7所示,通過選擇頁面上空調(diào)的開啟選項(xiàng),瀏覽器將命令傳給CGI程序,CGI程序調(diào)用應(yīng)用程序,使ARM9經(jīng)由串口發(fā)送2個(gè)字節(jié)控制命令給ZigBee網(wǎng)絡(luò)協(xié)調(diào)器,1個(gè)字節(jié)裝載的是房間編號(hào)信息,即ZigBee終端節(jié)點(diǎn)的網(wǎng)絡(luò)地址,另一個(gè)字節(jié)裝載的是控制命令數(shù)據(jù)。網(wǎng)絡(luò)協(xié)調(diào)器將命令下發(fā)給客廳中的ZigBee終端節(jié)點(diǎn),ZigBee終端節(jié)點(diǎn)將控制命令數(shù)據(jù)譯成對(duì)P2.1口輸出低電平,相當(dāng)于空調(diào)遙控器開關(guān)按鍵按下,空調(diào)相應(yīng)打開。再在頁面上選擇空調(diào)調(diào)節(jié)溫度選項(xiàng)“降溫”,然后點(diǎn)擊“提交”按鈕,經(jīng)由相似過程,ZigBee終端節(jié)點(diǎn)控制P1.2輸出低電平,相當(dāng)于空調(diào)遙控器降溫按鍵按下,客廳溫度降低,在網(wǎng)頁上點(diǎn)擊3次按鈕“提交”,客廳溫度降至25℃。
通過實(shí)驗(yàn),可以知道本系統(tǒng)能能實(shí)現(xiàn)以下功能:對(duì)家庭各個(gè)房間的溫度和濕度實(shí)時(shí)顯示,能遠(yuǎn)程調(diào)節(jié)溫度和濕度,遠(yuǎn)程打開熱水器開關(guān)對(duì)其加熱,當(dāng)房間有人活動(dòng)時(shí)能在監(jiān)控頁面顯示出來,廚房煙霧濃度是否超標(biāo)也能在頁面顯示。
6 結(jié)束語
文中所述的遠(yuǎn)程監(jiān)控系統(tǒng)應(yīng)用在家庭環(huán)境中,既能實(shí)現(xiàn)遠(yuǎn)程監(jiān)測(cè)家中各個(gè)房間的溫濕度狀況,也能控制家中空調(diào)、加濕器的打開或者關(guān)閉狀態(tài)從而調(diào)節(jié)溫濕度,營(yíng)造一個(gè)舒適宜人的環(huán)境。煙霧傳感器能實(shí)現(xiàn)煙霧濃度超標(biāo)檢測(cè),使用人體紅外模塊可實(shí)現(xiàn)家庭安防功能。電池電量檢測(cè)能即時(shí)提醒更換電池。若對(duì)本設(shè)計(jì)做微小改動(dòng),添加房間數(shù)量或減少數(shù)量,或者改變傳感器類別實(shí)現(xiàn)其他功能,可擴(kuò)展性較強(qiáng)。
評(píng)論