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

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

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

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

?

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

?


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

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

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

?

?


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

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