《電子技術(shù)應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 業(yè)界動態(tài) > 基于藍牙的智能家居中視頻防盜監(jiān)控的設計與實現(xiàn)

基于藍牙的智能家居中視頻防盜監(jiān)控的設計與實現(xiàn)

2008-07-18
作者:曾 劍, 王 玲

??? 摘 要: 介紹了基于藍牙的智能家居視頻防盜監(jiān)控系統(tǒng)的軟件設計。在ARM9(S3C2410)" title="ARM9(S3C2410)">ARM9(S3C2410)和Linux2.6.14上實現(xiàn)了USB藍牙驅(qū)動、USB攝像頭驅(qū)動" title="攝像頭驅(qū)動">攝像頭驅(qū)動,介紹了Linux2.6下藍牙通信的實現(xiàn)過程,最后實現(xiàn)了在PC監(jiān)控機和ARM9(S3C2410)間圖像的采集和傳輸。
??? 關(guān)鍵詞: ARM9? Linux2.6.14? 藍牙 智能家居

?

??? 隨著多媒體技術(shù)和網(wǎng)絡技術(shù)的迅猛發(fā)展,大型的智能家居系統(tǒng)成為一種發(fā)展趨勢。理想的智能家居系統(tǒng)應具有以下功能:
??? (1) 住宅視頻監(jiān)控防盜、報警;
??? (2) 火警、煙警、有毒氣體泄露報警;
??? (3) 各類家用電器控制;
??? (4) GSM短信息遠程報警。
??? 在這些功能中,家庭內(nèi)的安全防盜顯得尤為重要。如果智能家居內(nèi)采用有線方式布線,會大大影響房間的美觀,并且使用也不夠便利。
??? 藍牙技術(shù)傳輸可靠并能穿越障礙物,功耗低、成本低廉、組網(wǎng)方便靈活,是一種有效的無線通信手段。本文采用藍牙技術(shù)設計并實現(xiàn)了一種智能家居中的視頻防盜監(jiān)控系統(tǒng),取得了滿意的效果。
1 系統(tǒng)總體設計和工作流程
??? 系統(tǒng)主要包括ARM9處理器(S3C2410)、家庭內(nèi)PC機、遠程PC監(jiān)控機、藍牙模塊" title="藍牙模塊">藍牙模塊、USB攝像頭幾部分,其結(jié)構(gòu)框圖如圖1所示。ARM9處理器負責對整個家居設備的管理,由于智能家居內(nèi)許多家電都是通過藍牙無線傳感網(wǎng)絡來工作的,因此家庭內(nèi)的PC機必須負責保存數(shù)據(jù)并對藍牙無線傳感網(wǎng)絡進行數(shù)據(jù)融合處理。

?


??? 系統(tǒng)工作流程如下:如果遠程PC監(jiān)控機發(fā)送啟動監(jiān)控命令,則激活攝像頭。在對攝像頭完成初始化之后,就將進行圖像的采集。采集的圖像以文件的形式被送入藍牙模塊,此時的藍牙模塊已經(jīng)進入了以太網(wǎng)仿真模式,因此可以通過SOCKET通信將圖像發(fā)送到家庭內(nèi)的PC機。最后通過互聯(lián)網(wǎng)發(fā)送到遠程的PC監(jiān)控機。
2 USB藍牙模塊驅(qū)動和USB攝像頭驅(qū)動
2.1 USB藍牙模塊驅(qū)動

??? 在Linux系統(tǒng)內(nèi)核配置過程中,進入Networking Support選項的Bluetooth subsystem support子選項,選擇L2CAP protocol support、BNEP protocol support(Malticast filter support和Protocol filter support)這幾項,其作用就是使內(nèi)核支持藍牙協(xié)議中的L2CAP和BNEP協(xié)議。然后進入Bluetooth device drivers,選擇HCI USB driver。至此,就完成了內(nèi)核對于USB藍牙的支持。
??? 完成內(nèi)核對藍牙的支持后,下一步是移植Linux藍牙協(xié)議棧的庫(bluez-libs-2.17.tar.gz)和工具包" title="工具包">工具包(bluez-utils-2.17.tar.gz)。在指定了交叉編譯器和安裝路徑并運行安裝命令后,bluez-libs庫生成libbluetooth.so.1.17等3個庫文件,bluez-utils工具包生成hcid(HCI后臺進程)、sdpd(服務發(fā)現(xiàn)協(xié)議后臺進程)、hciconfig(檢查HCI接口并開啟藍牙設備)和hcitool(掃描藍牙設備的地址)等幾個進程文件。
2.2 USB攝像頭驅(qū)動
??? USB攝像頭使用的是市場上廣泛應用的采用中芯微公司的ZC301芯片的攝像頭,這種攝像頭采用硬件壓縮方式,截取到的圖片是JPEG格式,這樣可以大大減少由于軟件壓縮所耗費的時間,便于網(wǎng)絡多媒體的應用。Linux內(nèi)核并未包括這種攝像頭,因此必須針對嵌入式 Linux環(huán)境,打入攝像頭驅(qū)動補丁文件usb-2.6.12LE06.patch.tar.gz。將該文件解壓縮,然后放入/kernel2.6.14/drivers/usb目錄,用命令path-pl 3 Linux2.6下藍牙無線通信的實現(xiàn)
??? 整個通信過程如下:
??? (1)USB藍牙的傳輸驅(qū)動程序(drivers/bluetooth/hci_usb.c)將信息注冊到Linux USB核心。當USB藍牙插入時,主機控制器設備驅(qū)動程序會枚舉它并給它分配地址,同時讀取設備描述符中所包含的設備信息。如果枚舉期間讀取的設備描述符與hci_usb驅(qū)動程序注冊到Linux USB核心的信息相匹配,這個驅(qū)動程序就能添加進USB設備[1]。
??? (2)在S3C2410上運行hcid、sdpd、hciconfig、hcitool四個藍牙工具文件。在S3C2410一側(cè)的藍牙設備能夠被發(fā)現(xiàn)并被成功分配唯一地址的基礎之上運行pand--listen--role NAP,這樣將允許藍牙監(jiān)聽服務器。
??? (3)PC機上插入USB藍牙,運行命令hciconfig hci0 up、hcid-f/etc/bluetooth/hcid.conf、hciconfig-a、hcitool scan
后,啟動藍牙設備,并能夠檢查到S3C2410一側(cè)的藍牙設備,可以根據(jù)藍牙設備對應的物理地址用pand connect-c XXXX(物理地址)來連接2個藍牙設備[2]。
??? (4)在個人局域網(wǎng)建立的基礎之上,BNEP就可以將自己作為以太網(wǎng)(TCP/IP)設備注冊到Linux網(wǎng)絡層??梢酝ㄟ^命令ifconfig bnep0來改變藍牙接口IP地址。BNEP模塊和用戶模式pand后臺進程實現(xiàn)了Bluetooth個人區(qū)域網(wǎng)(PAN)。
4 智能家居中的視頻監(jiān)控軟件流程
4.1 USB攝像頭圖像采集軟件流程

??? 該系統(tǒng)正常工作時,整個設計有兩個關(guān)鍵的部分:一是攝像頭如何采集圖像;二是如何進行圖像的傳輸。
??? 為了實現(xiàn)監(jiān)控,獲得視頻數(shù)據(jù)是一個重要環(huán)節(jié)。系統(tǒng)是在嵌入式Linux系統(tǒng)平臺上采用Video4Linux編程來獲取圖像的[3]。攝像頭圖像采集流程如圖2所示。Video4Linux是Linux中關(guān)于視頻設備的內(nèi)核驅(qū)動,它為針對視頻設備的應用編程提供一系列接口函數(shù),用戶通過open、write、read、ioctl等函數(shù)來實現(xiàn)對設備文件的操作。采集程序?qū)崿F(xiàn)過程:調(diào)用函數(shù)fd=open(“/dev/v4l/video0”,0_RDWR)打開視頻設備對應的設備文件/dev/v4l/video0,接著利用ioctl函數(shù)分別調(diào)用VIDIOCGCAP、VIDIOCGPICT、VIDIOCSPICT來獲得設備相關(guān)信息、讀取圖像信息、修改圖片中的depth=8信息(對應的格式是JPEG)并設置圖片格式為320×240,在完成了設備的初始化后,就可以截取視頻圖像了。調(diào)用realloc(vd->pFramebuffer, (size_t)vd->framesizeIn)函數(shù),得到的返回值就是圖像所需要的內(nèi)存空間首地址vd->pFramebuffer,然后用read()函數(shù)直接讀取設備就能得到圖像,采集一幀的時間約為38ms,圖像效果很清晰。最后計算圖像大小(JPEG圖像的有效段從1 024B開始,以0xFF、0xD9結(jié)束)并送入傳輸部分。

?

?


4.2 圖像的無線和有線傳輸軟件流程
??? 由于TCP/IP可以直接運行于Bluetooth上,因此家庭內(nèi)PC機和S3C2410以及家庭內(nèi)PC機和遠程監(jiān)控機的通信程序均可由SOCKET編程來完成。服務器的工作流程:首先調(diào)用s = socket(AF_INET, SOCK_STREAM, 0)來創(chuàng)建socket號,調(diào)用bind(s, (struct sockaddr*)&sin, sizeof(sin))函數(shù)將其與本機地址以及一個本地端口號" title="端口號">端口號綁定。然后調(diào)用listen(s,5)函數(shù)在相應的socket上監(jiān)聽,調(diào)用accept函數(shù),最后睡眠并等待客戶的連接請求,當accept函數(shù)接收到一個連接服務請求時,將生成一個新的socket,并通過新的socket將圖像內(nèi)容發(fā)送出去??蛻艚邮斩顺绦蛄鞒蹋菏紫日{(diào)用gethostbyname(host_name)函數(shù)完成域名與IP地址的轉(zhuǎn)換得到服務器的IP地址,然后調(diào)用sockfd=socket(AF_INET, SOCK_STREAM, 0)函數(shù)創(chuàng)建一個socket號,并設定端口號為1 500,最后調(diào)用connect(sockfd, (struct sockaddr*)&sin, sizeof(sin))函數(shù)與服務器建立連接,連接成功后接收從服務器發(fā)送過來的數(shù)據(jù)。實驗測得用藍牙傳輸采集到的每幀圖像時的速度約為78kB/s。
參考文獻
[1] CORBET J, RUBINI A, KROAH-HARTMA G. 魏永明,耿岳,鐘書毅等譯.LINUX設?備驅(qū)動程序(第3版)[M].北京:中國電力出版社,2006,1.
[2] ?ROGER W. Linux Unwired[M]. O’Reilly,2004,4.
[3] ?陳賾,秦貴和,徐華中,等.ARM9嵌入式技術(shù)及Linux高級實踐教程[M].北京:北京航空航天出版社,2005.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。