基于ZigBee技術(shù)的智能家居系統(tǒng)的設(shè)計(jì)方案
文章出處:http://m.hnvr.cn 作者:中國(guó)一卡通收錄 人氣: 發(fā)表時(shí)間:2012年03月20日
1 引言
隨著信息時(shí)代的到來(lái)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展, 實(shí)現(xiàn)家庭信息化、網(wǎng)絡(luò)化是當(dāng)今智能家居設(shè)備系統(tǒng)發(fā)展的新趨勢(shì)。智能家居系統(tǒng)是將相對(duì)獨(dú)立的家用電器構(gòu)成一個(gè)統(tǒng)一的系統(tǒng), 進(jìn)而實(shí)現(xiàn)對(duì)這些設(shè)備和家庭環(huán)境的智能管理、遠(yuǎn)程監(jiān)控和資源共享。其目的是為人們提供一個(gè)安全、舒適、高效和便利的生活環(huán)境。本文介紹一種基于嵌入式Web 和ZigBee 技術(shù)的網(wǎng)絡(luò)化智能家居系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)方案。
2 系統(tǒng)結(jié)構(gòu)和功能介紹
系統(tǒng)有遠(yuǎn)端PC、嵌入式網(wǎng)關(guān)、USB 攝像頭和ZigBee 組成的家庭內(nèi)部無(wú)線(xiàn)網(wǎng)絡(luò)四部分組成。設(shè)計(jì)思想是在每一個(gè)家庭設(shè)備上都裝上ZigBee 模塊和相應(yīng)傳感器來(lái)組成一個(gè)終端節(jié)點(diǎn),用來(lái)實(shí)時(shí)監(jiān)控設(shè)備的狀態(tài), 并且把采集到的數(shù)據(jù)以無(wú)線(xiàn)方式發(fā)給ZigBee 協(xié)調(diào)器,這樣就由ZigBee 協(xié)調(diào)器和各終端設(shè)備組成了一個(gè)無(wú)線(xiàn)連接的星型結(jié)構(gòu)的家庭內(nèi)部網(wǎng)絡(luò)。嵌入式網(wǎng)關(guān)是系統(tǒng)的中樞,可以把USB 攝像頭采集的視頻信息和來(lái)自協(xié)調(diào)器接收的終端節(jié)點(diǎn)信號(hào)傳送到Internet 上, 這樣就把內(nèi)部網(wǎng)絡(luò)連接到互聯(lián)網(wǎng)上。特別是USB 攝像頭的使用,讓用戶(hù)可以直觀的看到家里的一切變化, 彌補(bǔ)了大部分智能家居系統(tǒng)只可以查看家庭設(shè)備數(shù)字信息的不足。用戶(hù)可以通過(guò)遠(yuǎn)程PC 機(jī)訪問(wèn)家庭內(nèi)部網(wǎng)絡(luò),查看家庭設(shè)備的數(shù)字信息和視頻信息,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控的目的。
3 系統(tǒng)硬件設(shè)計(jì)
3.1 核心處理器模塊
本系統(tǒng)選用S3C2440A 作為核心控制器, 它是Samsung 公司推出的一款基于ARM920T 核的處理器, 采用了16/32 位RISC 處理器, 具有外部存儲(chǔ)器控制器,LCD 控制器,4 通道DMA控制器,三通道UART,兩通道SPI,兩路全速USB 主設(shè)備芯片,帶有MMU 虛擬存儲(chǔ)器單元,這一特性可以移植linux 系統(tǒng)和建立Web 服務(wù)器,主頻400MHz,有130 個(gè)I/O 端口和24 路外部中斷源,有多種通信接口,體積小,功耗和成本低,可靠性高,特別適合作為嵌入式微處理器。
3.2 存儲(chǔ)模塊
NAND FLASH 存儲(chǔ)模塊選擇Samsung 公司生產(chǎn)的K9F1208U0M-YCB0 64M*8bits 的高性能存儲(chǔ)芯片。掉電后信息不會(huì)丟失,用于存儲(chǔ)啟動(dòng)代碼、內(nèi)核和文件系統(tǒng)。
SDRAM 是系統(tǒng)的內(nèi)存, 它不具有掉電保持?jǐn)?shù)據(jù)的特性,其存取速度大大高于Flash 存儲(chǔ)器, 在系統(tǒng)中主要作程序的運(yùn)行空間、數(shù)據(jù)和堆棧區(qū)。系統(tǒng)中SDRAM 選用K4S561632C-TC75芯片。K4S561632C-TC75 的存儲(chǔ)容量為16M*16 位(32M 字節(jié)),數(shù)據(jù)寬度為16 位,由于S3C2440A 是32 位的,外部總線(xiàn)也是32位的, 為了最大限度發(fā)揮處理器的性能, 本系統(tǒng)選用兩片K4S561632C-TC75 芯片并聯(lián)起來(lái),以構(gòu)成32 位內(nèi)存系統(tǒng)。
3.3 以太網(wǎng)接口
系統(tǒng)選用CS8900A 芯片建立網(wǎng)絡(luò)接口。CS8900A 是Cirrus公司生產(chǎn)的一款單芯片、全雙工、全面支持IEEE802.3 標(biāo)準(zhǔn)的高集成以太網(wǎng)控制器。在本系統(tǒng)中網(wǎng)絡(luò)控制器發(fā)揮著重要作用,它負(fù)責(zé)將監(jiān)控?cái)?shù)據(jù)發(fā)送到Internet, 并把來(lái)自Internet 的控制指令傳送至底層。
3.4 攝像頭選擇
對(duì)于圖像采集傳感器,采用以中星微公司的ZC301 感光芯片為核心的USB 攝像頭作為圖像采集模塊。中星微301 系列高清芯片擁有影像光源自動(dòng)增益補(bǔ)強(qiáng)技術(shù),自動(dòng)白平衡、邊緣增強(qiáng)以及伽馬矯正等先進(jìn)的攝像控制技術(shù)。
3.5 ZigBee 模塊
無(wú)線(xiàn)收發(fā)芯片采用Chipcon (已于2006 年被TI 公司收購(gòu))公司生產(chǎn)的CC2430.CC2430 芯片除了整合ZigBee 射頻(RF)前端、內(nèi)存和微控制器外, 還具有128KB 可編程內(nèi)存和8KB 的RAM、模擬數(shù)字轉(zhuǎn)換器(ADC) 、定時(shí)器(Timer) 、AES-128 協(xié)同處理器、看門(mén)狗定時(shí)器以及21 個(gè)可編程I/O 引腳等。因此選擇CC2430 做為無(wú)線(xiàn)收發(fā)部分, 使用起來(lái)非常容易上手。由于CC2430 的高度集成度, 外圍需要很少的器件可以組成最小系統(tǒng)。它結(jié)合Chipcon 公司全球先進(jìn)的ZigBee 協(xié)議棧、工具包和參考設(shè)計(jì),展示了領(lǐng)先的ZigBee 解決方案。其產(chǎn)品廣泛應(yīng)用于汽車(chē)、工控系統(tǒng)、家居系統(tǒng)和無(wú)線(xiàn)傳感器網(wǎng)絡(luò)等領(lǐng)域。
4 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件主要包括移植Linux 操作系統(tǒng),USB 攝像頭驅(qū)動(dòng)的編寫(xiě),ZigBee 協(xié)調(diào)器工作程序和終端設(shè)備的收發(fā)程序,嵌入式Web 服務(wù)器的移植等等。
4.1 移植Linux 操作系統(tǒng)
本系統(tǒng)選用2.6 版本的Linux 內(nèi)核, 首先從ftp://ftp.kernel.org/pub/linux/kernel/下載內(nèi)核源碼。在編譯內(nèi)核前先要修改根目錄下的Makefile 文件:
ARCH=arm
CROSS COMPILE=arm-linux-gcc
然后運(yùn)行make menuconfig 進(jìn)入配置菜單, 選擇需要的選項(xiàng), 配置完成后保存退出, 依次執(zhí)行內(nèi)核編譯命令:make dep ;make clean;make zImage 編譯成功后會(huì)在/linux/arch/arm/boot/下找到編譯好的內(nèi)核鏡像文件zImage.然后可以用Bootloader 菜單命令把內(nèi)核鏡像燒寫(xiě)到NAND FLASH 中。
4.2 USB 攝像頭程序
在Linux kernel 源碼目錄中driver/usb/usb-skeleton.c 提供了一個(gè)基礎(chǔ)的USB 驅(qū)動(dòng)程序。通過(guò)它僅需要修改極少的部分,就可以完成一個(gè)USB 設(shè)備的驅(qū)動(dòng)。重新編譯內(nèi)核生成攝像頭驅(qū)動(dòng)文件,然后執(zhí)行insmod 加載USB 攝像頭驅(qū)動(dòng),Linux 系統(tǒng)就在/dev 目錄下注冊(cè)了USB 視頻設(shè)備/dev/video0.
攝像頭驅(qū)動(dòng)程序安裝好后為了進(jìn)行視頻采集必須加入Video4Linux 模塊,Video4Linux 是Linux 中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng),它為針對(duì)視頻設(shè)備的應(yīng)用程序提供一系列接口函數(shù)。對(duì)于USB 口攝像頭, 其驅(qū)動(dòng)程序中需要提供基本的I/O 操作接口函數(shù)open、close、read、write 等的實(shí)現(xiàn)。對(duì)中斷的處理實(shí)現(xiàn),內(nèi)存映射功能以及I/O 通道的控制接口函數(shù)ioctl 的實(shí)現(xiàn)等, 并把它們定義在struct file_operations 中。這樣當(dāng)應(yīng)用程序?qū)υO(shè)備文件進(jìn)行諸如open、close、read、write 等系統(tǒng)調(diào)用函數(shù)時(shí),Linux 內(nèi)核將通過(guò)file_operations 結(jié)構(gòu)體訪問(wèn)驅(qū)動(dòng)程序提供的函數(shù)。
4.3 ZigBee 協(xié)調(diào)器和設(shè)備節(jié)點(diǎn)程序
ZigBee 家庭無(wú)線(xiàn)網(wǎng)絡(luò)主要負(fù)責(zé)對(duì)現(xiàn)場(chǎng)各種信息的監(jiān)控以及數(shù)據(jù)的采集, 并將內(nèi)部處理過(guò)的數(shù)據(jù)經(jīng)家庭網(wǎng)關(guān)傳送到外部網(wǎng)絡(luò)。本系統(tǒng)中ZigBee 協(xié)調(diào)器主要用于建立無(wú)線(xiàn)網(wǎng)絡(luò),分配地址,向終端節(jié)點(diǎn)發(fā)送控制命令和接收終端節(jié)點(diǎn)的工作狀態(tài),并將接收到的狀態(tài)數(shù)據(jù)全部上傳至Web 服務(wù)器, 最后通過(guò)Internet傳送到遠(yuǎn)端的用戶(hù)端。終端設(shè)備節(jié)點(diǎn)主要有加入網(wǎng)絡(luò),接收控制命令,以及發(fā)送狀態(tài)信息給協(xié)調(diào)器等。協(xié)調(diào)器主程序流程如圖2所示。
4.4 Web 服務(wù)器
Web 服務(wù)器的作用是監(jiān)聽(tīng)用戶(hù)的服務(wù)請(qǐng)求, 并根據(jù)用戶(hù)的請(qǐng)求給出相應(yīng)的服務(wù)。服務(wù)器和客戶(hù)端瀏覽器之間的通信協(xié)議是超文本傳輸協(xié)議HTTP.HTTP 協(xié)議規(guī)定了發(fā)送和請(qǐng)求的標(biāo)準(zhǔn)方式, 瀏覽器和服務(wù)器之間傳輸?shù)南⒏袷郊案鞣N控制信息。
Linux 支持boa、httpd、thttpd 等幾種Web 服務(wù)器, 其中boa 是一款單任務(wù)的Web 服務(wù)器軟件,源代碼開(kāi)放,速度快,性能優(yōu)秀,支持能夠?qū)崿F(xiàn)動(dòng)態(tài)Web 技術(shù)的CGI(Common Gateway Interface)技術(shù),特別適合應(yīng)用在嵌入式系統(tǒng)中。
CGI 提供了一個(gè)Web 服務(wù)器的外部程序通道,運(yùn)行在服務(wù)器上,由瀏覽器輸入觸發(fā),是Web 服務(wù)器和系統(tǒng)中其他程序連接的通道。CGI 程序就是符合這種接口的程序。服務(wù)器接收到用戶(hù)的請(qǐng)求,并將數(shù)據(jù)送給CGI 程序,CGI 程序接收到數(shù)據(jù)后,啟動(dòng)編寫(xiě)好的應(yīng)用程序,并按照用戶(hù)提供的數(shù)據(jù)執(zhí)行。應(yīng)用程序執(zhí)行完成后,返回執(zhí)行結(jié)果,并通過(guò)Web 服務(wù)器傳送給用戶(hù)瀏覽器顯示。
本系統(tǒng)采用了CGI 來(lái)實(shí)現(xiàn)動(dòng)態(tài)Web 技術(shù),CGI 規(guī)定了Web服務(wù)器調(diào)用其他可執(zhí)行程序(CGI 程序)的接口協(xié)議標(biāo)準(zhǔn)。Web服務(wù)器通過(guò)CGI 程序?qū)崿F(xiàn)和瀏覽器的交互,也就是CGI 程序接受瀏覽器發(fā)送給Web 服務(wù)器的信息進(jìn)行處理,將響應(yīng)結(jié)果再回送給Web 服務(wù)器及瀏覽器。CGI 程序可以用多種程序設(shè)計(jì)語(yǔ)言編寫(xiě), 本系統(tǒng)選用C 語(yǔ)言編寫(xiě)的CGI 程序。嵌入式Web 服務(wù)器工作流程如圖3 所示。
5 系統(tǒng)測(cè)試
將服務(wù)器用網(wǎng)線(xiàn)和電腦主機(jī)相連, 服務(wù)器的地址設(shè)為192.168.1.6,電腦主機(jī)地址為192.168.1.8(只要主機(jī)IP 和服務(wù)器IP 處在同一個(gè)網(wǎng)段就可以)系統(tǒng)的網(wǎng)頁(yè)包括家電系統(tǒng)、安防系統(tǒng)和視頻畫(huà)面三個(gè)頁(yè)面,這三個(gè)畫(huà)面可以相互切換, 在瀏覽器輸入服務(wù)器IP 對(duì)系統(tǒng)進(jìn)行測(cè)試,并選擇攝像頭遠(yuǎn)程控制畫(huà)面,攝像頭采集的視頻畫(huà)面截圖如圖4 所示。
6 結(jié)論
本文設(shè)計(jì)的智能家居綜合控制系統(tǒng),采用ZigBee 技術(shù)組建家庭內(nèi)部無(wú)線(xiàn)網(wǎng)絡(luò), 用USB 攝像頭實(shí)時(shí)采集家庭視頻信息,在S3C2440A 為控制核心的硬件平臺(tái)移植嵌入式Linux 操作系統(tǒng)和Web 服務(wù)器完成家庭網(wǎng)關(guān)的設(shè)計(jì),經(jīng)過(guò)實(shí)際測(cè)試,本系統(tǒng)達(dá)到了家庭信息網(wǎng)絡(luò)化的目的,實(shí)現(xiàn)了對(duì)家庭設(shè)備遠(yuǎn)程監(jiān)控的愿望。系統(tǒng)的功能強(qiáng)大,功耗低,實(shí)現(xiàn)簡(jiǎn)單,具有廣闊的應(yīng)用前景。