《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > 基于蓝牙的智能家居中视频防盗监控的设计与实现

基于蓝牙的智能家居中视频防盗监控的设计与实现

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

    摘 要: 介绍了基于蓝牙的智能家居视频防盗监控系统的软件设计。在ARM9(S3C2410)" title="ARM9(S3C2410)">ARM9(S3C2410)和Linux2.6.14上实现了USB蓝牙驱动、USB摄像头驱动" title="摄像头驱动">摄像头驱动,介绍了Linux2.6下蓝牙通信的实现过程,最后实现了在PC监控机和ARM9(S3C2410)间图像的采集和传输。
    关键词: ARM9  Linux2.6.14  蓝牙 智能家居

 

    随着多媒体技术和网络技术的迅猛发展,大型的智能家居系统成为一种发展趋势。理想的智能家居系统应具有以下功能:
    (1) 住宅视频监控防盗、报警;
    (2) 火警、烟警、有毒气体泄露报警;
    (3) 各类家用电器控制;
    (4) GSM短信息远程报警。
    在这些功能中,家庭内的安全防盗显得尤为重要。如果智能家居内采用有线方式布线,会大大影响房间的美观,并且使用也不够便利。
    蓝牙技术传输可靠并能穿越障碍物,功耗低、成本低廉、组网方便灵活,是一种有效的无线通信手段。本文采用蓝牙技术设计并实现了一种智能家居中的视频防盗监控系统,取得了满意的效果。
1 系统总体设计和工作流程
    系统主要包括ARM9处理器(S3C2410)、家庭内PC机、远程PC监控机、蓝牙模块" title="蓝牙模块">蓝牙模块、USB摄像头几部分,其结构框图如图1所示。ARM9处理器负责对整个家居设备的管理,由于智能家居内许多家电都是通过蓝牙无线传感网络来工作的,因此家庭内的PC机必须负责保存数据并对蓝牙无线传感网络进行数据融合处理。

 


    系统工作流程如下:如果远程PC监控机发送启动监控命令,则激活摄像头。在对摄像头完成初始化之后,就将进行图像的采集。采集的图像以文件的形式被送入蓝牙模块,此时的蓝牙模块已经进入了以太网仿真模式,因此可以通过SOCKET通信将图像发送到家庭内的PC机。最后通过互联网发送到远程的PC监控机。
2 USB蓝牙模块驱动和USB摄像头驱动
2.1 USB蓝牙模块驱动

    在Linux系统内核配置过程中,进入Networking Support选项的Bluetooth subsystem support子选项,选择L2CAP protocol support、BNEP protocol support(Malticast filter support和Protocol filter support)这几项,其作用就是使内核支持蓝牙协议中的L2CAP和BNEP协议。然后进入Bluetooth device drivers,选择HCI USB driver。至此,就完成了内核对于USB蓝牙的支持。
    完成内核对蓝牙的支持后,下一步是移植Linux蓝牙协议栈的库(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(服务发现协议后台进程)、hciconfig(检查HCI接口并开启蓝牙设备)和hcitool(扫描蓝牙设备的地址)等几个进程文件。
2.2 USB摄像头驱动
    USB摄像头使用的是市场上广泛应用的采用中芯微公司的ZC301芯片的摄像头,这种摄像头采用硬件压缩方式,截取到的图片是JPEG格式,这样可以大大减少由于软件压缩所耗费的时间,便于网络多媒体的应用。Linux内核并未包括这种摄像头,因此必须针对嵌入式 Linux环境,打入摄像头驱动补丁文件usb-2.6.12LE06.patch.tar.gz。将该文件解压缩,然后放入/kernel2.6.14/drivers/usb目录,用命令path-pl 3 Linux2.6下蓝牙无线通信的实现
    整个通信过程如下:
    (1)USB蓝牙的传输驱动程序(drivers/bluetooth/hci_usb.c)将信息注册到Linux USB核心。当USB蓝牙插入时,主机控制器设备驱动程序会枚举它并给它分配地址,同时读取设备描述符中所包含的设备信息。如果枚举期间读取的设备描述符与hci_usb驱动程序注册到Linux USB核心的信息相匹配,这个驱动程序就能添加进USB设备[1]
    (2)在S3C2410上运行hcid、sdpd、hciconfig、hcitool四个蓝牙工具文件。在S3C2410一侧的蓝牙设备能够被发现并被成功分配唯一地址的基础之上运行pand--listen--role NAP,这样将允许蓝牙监听服务器。
    (3)PC机上插入USB蓝牙,运行命令hciconfig hci0 up、hcid-f/etc/bluetooth/hcid.conf、hciconfig-a、hcitool scan
后,启动蓝牙设备,并能够检查到S3C2410一侧的蓝牙设备,可以根据蓝牙设备对应的物理地址用pand connect-c XXXX(物理地址)来连接2个蓝牙设备[2]
    (4)在个人局域网建立的基础之上,BNEP就可以将自己作为以太网(TCP/IP)设备注册到Linux网络层。可以通过命令ifconfig bnep0来改变蓝牙接口IP地址。BNEP模块和用户模式pand后台进程实现了Bluetooth个人区域网(PAN)。
4 智能家居中的视频监控软件流程
4.1 USB摄像头图像采集软件流程

    该系统正常工作时,整个设计有两个关键的部分:一是摄像头如何采集图像;二是如何进行图像的传输。
    为了实现监控,获得视频数据是一个重要环节。系统是在嵌入式Linux系统平台上采用Video4Linux编程来获取图像的[3]。摄像头图像采集流程如图2所示。Video4Linux是Linux中关于视频设备的内核驱动,它为针对视频设备的应用编程提供一系列接口函数,用户通过open、write、read、ioctl等函数来实现对设备文件的操作。采集程序实现过程:调用函数fd=open(“/dev/v4l/video0”,0_RDWR)打开视频设备对应的设备文件/dev/v4l/video0,接着利用ioctl函数分别调用VIDIOCGCAP、VIDIOCGPICT、VIDIOCSPICT来获得设备相关信息、读取图像信息、修改图片中的depth=8信息(对应的格式是JPEG)并设置图片格式为320×240,在完成了设备的初始化后,就可以截取视频图像了。调用realloc(vd->pFramebuffer, (size_t)vd->framesizeIn)函数,得到的返回值就是图像所需要的内存空间首地址vd->pFramebuffer,然后用read()函数直接读取设备就能得到图像,采集一帧的时间约为38ms,图像效果很清晰。最后计算图像大小(JPEG图像的有效段从1 024B开始,以0xFF、0xD9结束)并送入传输部分。

 

 


4.2 图像的无线和有线传输软件流程
    由于TCP/IP可以直接运行于Bluetooth上,因此家庭内PC机和S3C2410以及家庭内PC机和远程监控机的通信程序均可由SOCKET编程来完成。服务器的工作流程:首先调用s = socket(AF_INET, SOCK_STREAM, 0)来创建socket号,调用bind(s, (struct sockaddr*)&sin, sizeof(sin))函数将其与本机地址以及一个本地端口号" title="端口号">端口号绑定。然后调用listen(s,5)函数在相应的socket上监听,调用accept函数,最后睡眠并等待客户的连接请求,当accept函数接收到一个连接服务请求时,将生成一个新的socket,并通过新的socket将图像内容发送出去。客户接收端程序流程:首先调用gethostbyname(host_name)函数完成域名与IP地址的转换得到服务器的IP地址,然后调用sockfd=socket(AF_INET, SOCK_STREAM, 0)函数创建一个socket号,并设定端口号为1 500,最后调用connect(sockfd, (struct sockaddr*)&sin, sizeof(sin))函数与服务器建立连接,连接成功后接收从服务器发送过来的数据。实验测得用蓝牙传输采集到的每帧图像时的速度约为78kB/s。
参考文献
[1] CORBET J, RUBINI A, KROAH-HARTMA G. 魏永明,耿岳,钟书毅等译.LINUX设 备驱动程序(第3版)[M].北京:中国电力出版社,2006,1.
[2]  ROGER W. Linux Unwired[M]. O’Reilly,2004,4.
[3]  陈赜,秦贵和,徐华中,等.ARM9嵌入式技术及Linux高级实践教程[M].北京:北京航空航天出版社,2005.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。