基于嵌入式智能家居报警系统的实现设计
基于嵌入式智能家居报警系统的实现设计,基于,嵌入式,智能家居,报警,系统,实现,设计
摘 要近年来,随着人们生活水平质量的提高,越来越多的高科技产品呈现在我们的眼前。家居环境的智能化成为了人们迫切改善的方向,原因在于智能化家居能为人们提供舒适健康的生活环境,给住户们一种前所未有的安全感,使得他们能在千里之外也能安心地学习与工作。以此同时,在嵌入式技术飞快发展的趋势下,人们可以设法将智能家居监控技术、web服务器、GPRS报警和嵌入式技术结合在一起,设计出具有网络报警功能的嵌入式智能家居报警系统,促进智能化家居的发展和推广。本论文以装有嵌入式linux系统的虚拟机作为开发平台,核心处理器利用基于ARM11架构的32位S3C6410,结合外围的USB摄像头、SIM800A的GPRS模块等组成硬件平台。在该硬件平台上对Linux 内核和根文件系统等进行编译和移植,利用V4L2架构和motion检测技术对视频进行采集和分析,为了进一步提高带宽的利用率,采用H.264视频压缩的技术,搭建Boa服务器并通过TCP/IP协议进行数据的传输。经系统测试及结果演示,服务器运行比较稳定,对可疑物体也能及时抓拍并启动GPRS进行短信报警,用户还可以通过浏览器查看摄像头抓拍的当时场景。关键词:V4L2;motion检测;H.264压缩技术;boa服务器;GPRSIAbstractIn recent years, with the improvement of peoples quality of life, more and more high-tech products have appeared before our eyes. The intelligentization of the home environment has become a direction that people urgently need to improve. The reason is that the intelligent home can provide people with a comfortable and healthy living environment, giving the residents an unprecedented sense of security and enabling them to learn comfortably and safely in thousands of miles away. jobs. At the same time, with the rapid development of embedded technology, people can find ways to combine smart home monitoring technology, web server, GPRS alarms and embedded technology to design an embedded smart home alarm system with network alarm function. Promote the development and promotion of smart homes.This paper takes the virtual machine with embedded linux system as the development platform. The core processor uses the 32-bit S3C6410 based on the ARM11 architecture, combined with the peripheral USB camera, the GPRS module of the SIM800A and so on to form the hardware platform. The Linux kernel and the root file system are compiled and transplanted on this hardware platform. The video is collected and analyzed using the V4L2 architecture and motion detection technology. In order to further increase the bandwidth utilization, the H.264 video compression technology is used to build The Boa server transmits data through the TCP/IP protocol. Through system test and result demonstration, the server runs relatively stable, and the suspicious object can also be snapped and started GPRS to send a short message alarm. The user can also view the scene captured by the camera through the browser.Key words: V4L2;motion detection;H.264 compression technology;boa server;GPRS- IV -目 录摘 要IAbstractII1 绪论11.1 选题背景及意义11.2 国内外研究现状与发展趋势11.2.1 国外智能家居发展现状11.2.2国内智能家居发展现状22 智能家居报警系统的设计42.1 系统需求分析42.2 系统总体功能设计42.2.1 系统硬件平台的设计42.2.2 系统软件平台的设计43 硬件平台的简介63.1 S3C6410处理器63.2 6410开发板63.3 USB摄像头63.4 GPRS报警模块73.4.1 GPRS模块简介73.4.2 GPRS模块使用步骤84 软件平台的简介94.1 虚拟机及linux94.2 建立交叉编译环境94.3 内核配置和驱动移植94.3.1 摄像头驱动104.3.2 摄像头测试105 系统关键技术及解决125.1 视频采集V4L2架构125.1.1 V4L2接口简介125.1.2 V4L2视频采集程序125.2 视频H.264压缩技术155.2.1 视频H.264压缩简介155.2.2 视频H.264压缩新特性165.2.3 视频H.264编译码器165.3 网络传输技术185.3.1 Boa服务器185.3.2 Boa移植185.4 motion检测技术195.4.1 motion检测原理195.4.2 motion检测移植205.5 GPRS报警短信设计215.5.1 GPRS模块初始化流程215.5.2发送英文短信(TXET模式)226 系统测试236.1 系统测试环境搭建236.2 系统测试步骤及结果23结论25参 考 文 献26附录一 外文译文28附录二 外文原文32致 谢38大连大学学位论文版权使用授权书39基于嵌入式智能家居报警系统的实现1 绪论1.1 选题背景及意义在日新万变的现代科技社会中,许多智能化产品已经渐渐的步入我们的生活,人们对生活质量的要求越来越高。科技产品的智能化让我们的生活千变万化,从以前传统的模拟监控到数字化网络监控,到现在的嵌入式智能化监控,拥有先进的图像处理压缩技术,大大的降低了宽带的占用率;但伴随高科技产品的大量使用及人们对盈利的疯狂追求欲望,人们的家居环境变得越来越不安全。就如防盗网的设计,为了大量节省人力、财力和时间,生产出大量劣质的防盗网在市场上出售,导致人们家中容易出现入侵及偷盗事件的发生,严重威胁了室内人们的安全。此外,出差在外或者家中好多天没人在的情况下,如果没有采取正确的安防措施,家中也会有入侵等突发情况的发生。当你的手机收到一条入侵的报警短信,这时,你就可以直接报警或者找物业管理部门,并且能快速地处理事件。有了嵌入式智能家居报警系统,即使远在千里之外,也能时时刻刻的掌握我们监控地方的异常情况。早已步入了信息、图像处理和网络快速发展时代的我们,身边就有着亲密接触的微型嵌入式产品-手机,从我们以前所知的大哥大,到如今极微小的全屏智能手机,都是嵌入式技术取得的成就,智能家居就是利用先进的嵌入式技术,让家居生活变得更加安全、舒适和高效。在这样的时代背景需求下,文中提出了基于嵌入式智能家居报警系统实现的相关设计方法,利用市场上通用的USB摄像头及其对可疑入侵的视频处理算法相结合的监控系统,同时启动GPRS模块发送短信报警,以达到实现网络远程实时监控家中的异常情况的目的。可帮助监管人员及时注意情况,并采取有效的防范措施。因此,本文研究基于嵌入式智能家居报警系统有着强大的实用价值。1.2 国内外研究现状与发展趋势1.2.1 国外智能家居发展现状在上个世纪七十年代,智能家居就开始流行于美国,并且在欧洲得到广泛的应用。现在,在国外的商场及市场上也出现了大量的智能家居产品,我们最先知道的“智能家居”是集大成者的盖茨之家。当进入盖茨的家时,我们就像是迈进了几个世纪以后的科技家庭,它是一个把先进计算机技术、通信技术、网络技术将与家居生活有关的各种子系统有机地融合在一起的智能家居系统1。帮助我们实现由传统被动静止结构转变为具有能动性智能状态的家居环境,并且能够提供全方位的信息交换功能,以达到与外界保持畅通无阻的交流。智能家居重视人与环境的协调,以达到人们想要的更具有人性化的生活环境。据相关数据统计,在2015年全球智能家居市场已达到了485亿美元,预计在2018年市场将达到710亿美元的规模。其中,智能家居市场主要集中在美国、日本、德国、中国和英国这些科技比较发达的国家。下面我们就分别看一下这几个国家的智能家居情况。(1)在美国,智能家居的市场容量在不断地增长,从2014年的34.04亿美元到2016年的97.125亿美元,平均每年增长将近30亿美元,并且它的智能家居领域主要在这五个方面:家庭娱乐、家庭智能化、家庭安防、生活能用的管理以及家庭环境的辅助功能上,其中前三者的市场容量最大,在2014年每个家庭投入1213.7美元到智能家居上(不包括我们平时所用的智能手机,电脑等控制设备),到了2016年已达到了1317.46美元。在这三年期间,这个数字并没有太大的变化,并且预计在2020年将会减少到853美元。可见,美国智能家居正在飞速的发展,但是人们的花销却不会随之增加,美国的智能家居正处于主要以设备制造为主,市场处于挣扎的阶段。(2)在日本,2016年的智能家居市场收入已经达到了1129亿美元,它的智能方面不仅体现在室内的用电器上,而且还添加通过相关的生物认证实现识别系统的功能。就如用户的家门,即使我们没用手去打开,但门入口处的摄像头能自动的识别是用户还是外来人员。当是用户时,就会自动的开门。而且在家中的便器垫上也能安装相关的测量仪器,比如血压计、体重仪等,使得人们随时都能关注到自己的健康情况。智能家居在日本的家庭普及率是1.29%,预计再过两年以后,这个数字将达到7.09%。可见,日本也是一个智能家居行业发展迅速的国家。(3)在德国,智能家居行业收入占据极大的份额,平均收入金额已达到1970.15美元。其中,2016年它在家庭中的普及率达到了1.21%,预计在未来的两年中,这个数字将达到6.23%,智能家居早已经深入到每个普通家庭中。(4)在英国,据市场研究机构调研发现,2015年,拥有智能家居系统的家庭数量增长了30%,由前一年的307万户增长至400万户,占据全国家庭的14%,在实现智能家居方面,平均每个家庭花费了约2474元,预计在2020年,智能家庭的普及率将达到5.28%,从这个数据中可以看出,人们对智能家居的关注度越来越高。1.2.2国内智能家居发展现状所有三级标题都按此格式修改智能家居在中国一共经历了四个阶段。1994-1999年间,处于萌芽阶段的中国,智能家居行业还只是处于一个概念认识和相关产品认知的层次。全中国只有在经济比较发达的深圳有几家公司代理销售智能零件产品,并且大多都是卖给在国内居住的外籍居民。2000年-2005年间,中国处于刚刚出现智能家居的阶段。先后在北京、深圳、上海等几个地区出现了研发生产企业,并且智能家居的技术培训体系方面也在不断的完善。时间段是过去时了,可是还说“基本不会”,这个是将来时所以你看看这么修改,或者干脆这句去掉?因为我觉得没有用2006-2010年间,智能家居行业处在徘徊的阶段。源于在上一时期厂商过度夸大了智能家居的功能,而事实上智能家居产品并没有那么强大的功效,最主要的是还忽略了对相关代理的技术培训和经济扶持,再加上用户的高投诉率,导致在2005-2007年间,大约几十家智能家居生产厂家退出市场,连续几年销售额出现不断下降的恶劣趋势。2011-2020年间,我国处于融合演变的阶段。智能家居市场出现明显增长的趋势,这趋势不仅表现在产品的快速发展方面,智能家居还能够跟协议与技术标准相互融合,逐渐成为时代的主流2。2 智能家居报警系统的设计2.1 系统需求分析本设计系统主要由浏览器、web服务器、GPRS模块和用户手机构成。基于Linux系统环境下开发的boa服务器作为本设计的服务器。驱动USB摄像头进行控制,利用V4L2软件架构进行视频的采集,由H.264视频编码进行压缩,并把相关数据保存在boa服务器中。此外,还利用motion检测是否有运动入侵检测,当有入侵时,系统通过串口发送AT命令启动GPRS模块自动向用户手机发送英文短信报警。此时,用户可以启动系统访问并获取由摄像头捕抓到的运动数据图像,以此达到智能家居报警系统的设计功能。2.2 系统总体功能设计2.2.1 系统硬件平台的设计本文以S3C6410作为系统的主控制器,PC机作为宿主机,USB摄像头作为视频的采集部分,利用SIM800的GPRS模块作为系统的报警部分。其系统硬件如图2.1所示3。SDRAMRJ45接口RS232串口0RS232串口1USB摄像头(ZC301) NAND FLASHCPU单元S3C6410GPRS模块PC宿主机USB转接线图2.1 系统设计硬件框图2.2.2 系统软件平台的设计本设计利用Linux操作系统具有可裁剪、可移植性、运算高性能和易维护性等多种优点,采用移植V4L2架构的ZC301摄像头内核进行视频数据的采集,然后利用H.264视频压缩编码技术变成视频流进行网络传输,为后面视频motion检测及短信报警做充足地准备。它们的代码具有可开源性,并且都能从网上获得,进行相应地修改及编译之后,烧写到开发板即可实现相应的操作功能,大大的降低开发的成本。开始V4L2视频采集摄像头驱动移植程序视频分析线程视频解压 传输线程H.264视频编码B/S网络传输浏览器/服务器结束motion视频检测可疑移动物体?GPRS短信报警YN图2.2 系统设计软件框图3 硬件平台的简介3.1 S3C6410处理器本设计选用以内核ARM11的S3C6410作为控制处理器,该板子拥有大量的接口,它可以通过USB接口连接摄像头,串口与PC 机的USB接口相连。它是一个32位具有强大的硬件编解码单元(能支持MPEG4/H.263/H.264编译码器及vc1解码等)和完善的外设(包括存储器及视频处理、音频处理、图像处理等硬件加速器)性价比高的RISC多媒体应用处理器,而且拥有高达667MHZ的运行频率,能为2.5G和3G通信服务提供优化的H /W性能4。3.2 6410开发板6410开发板支持Mobile DDR和多种NAND Flash等功能,是基于三星公司最新的ARM11处理器S3C6410。6410板子上配有多种高端接口(USB、摄像头、以太网等接口)和相关传感器,用户可以利用接口进行额外的扩展和开发。“核心板+底板”相结合组成了板子的结构,并且两者之间有4组高质量的进口连接器5。6410板子是严格的按照国内外电子产品认证标准设计的,拥有稳定的CPU内核芯片,能够保证程序运动高速有序的进行。它不仅能支持多种操作系统,还能支持最高版本的图像界面QT。其代码都是开源性的,所以在开发中较为流行6。3.3 USB摄像头摄像头为视频输入设备,有两种类型,分别是模拟摄像头和数字摄像头。本文选用中星微的 ZC301数字摄像头。此摄像头支持的image格式只有JPEG,具有良好的兼容性、性价比较高。其原理是通过镜头把物体变成光学图像后,有关器件再把其投射到CMOS图像传感器表面上,COMS的传感器具有较多的优点,比如较高的集成度,功耗低(不到CCD的1/3)7。凡事都有双重性,其缺点就是噪声较大,对光源要求较高,然后转为电信号,经过 A/D(模数)转换后变为数字信号,再送到DSP芯片中加工处理,DSP芯片的不同会影响图片格式的差异。其结构框图如3.1所示每一章的图都要重新编号,比如从3.1 开始。图3.1 USB数字摄像头原理图该摄像头的最大分辨率为640480,最小分辨率为160120,经过该摄像头内部的DSP芯片处理后,输出视频流数据量会大大减少,这样就能提高USB 输出到处理器这一过程的速度。而且,移植该摄像头驱动程序还会对输出的 JPEG 视频流进行解码8。3.4 GPRS报警模块3.4.1 GPRS模块简介本文选用的是SIMCOM公司推出的一款高性能工业级的SIM800作为短信报警的硬件部分,上电自动开机,操作简单方便,它的工作频段在900MHz和1800MHz这两个频段上。SIM800A可以在很低的功消耗下实现语音、SMS(短信,彩信)、GPRS 数据的传输。同时,其还推出了具有TTS(本地文本语音播报功能)和蓝牙 3.0 功能的两款升级模块9。在外围硬件的设计上,SIM800A板对电源保护和抗干扰功能上下了很大的功夫,电源采用开关电源模块的方式进行供电,其利用效率非常高。不仅能支持USB直接供电,而且还带有电源使能引脚,高电平时供电,低电平时断电并且功耗为0,在出现死机的情况下,用户可以通过程序进行板子的重启10。SIM 卡采用最主流的 MICRO卡座,质量十分坚固,同时还添加 ESD 静电保护电路。SIM800A板支持RS232 串口和 TTL 串口控制,可以自由的接入开发板或其他硬件设备,支持 5V-18V 的宽电压供电,灵活适应不同的供电系统,电压越高,电流越小,给开发板的电源压力就越小,还给系统提供包括语音通话、短信、GPRS数据传输、文本播报(TTS)和基站定位的相关控制功能11。3.4.2 GPRS模块使用步骤(1) 接线方法如表3.1所述表3.1 GPRS模块接线功能表引脚名称功能T_RX连接单片机的UART_RXT_TX连接单片机的UART_TXGND连接单片机的GNDV_MCU让 T-RX 和 T-TX 引脚电平逻辑和 V_MCU 一致若接的 5v,则 T-RX 和 T-TX 引脚逻辑电平为 5v;若接的 3.3v,则 T-RX 和 T-TX 引脚逻辑电平为 3.3v;该引脚是单片机板子的电压引脚对GPRS 模块的 TTL 逻辑电平的调整,并不能作为GPRS模块的供电来使用。电脑端:使用USB转串口线连接GPRS模块,直接使用串口工具发送AT命令控制本模块;设备端:连接6410上的USB接口或者连接设备上引出的四根导线,修改配置程序后,系统的输出来控制本模块。(2)启动GPRS模块给GPRS模块接上电源后,按下PWR_KEY键至少1秒以上,其次,烧写相关程序到模块上,然后需要相关调试助手进行串口的调试13。当串口显示出信号的强度和相关运营商,说明该模块可以进行正常的通信,如果不成功,问题可能出现在以下情况:检查GPRS模块上串口旁边的两个跳线位置。观察LED灯闪的状态,如下表3.2所示。表3.2 LED灯与SIM800工作状态LED灯闪状态SIM800工作状态熄灭SIM800没有工作60ms 亮/800ms熄灭SIM800 没有找到服务(GSM 卡无服务)60ms 亮/3000ms熄灭SIM800 连接到服务信号60ms 亮/300ms熄灭SIM800 正在 GPRS 通讯 没有任何标点符号,有点乱 看的不是很明白检查下这个SIM卡和我们模块的金属接触点,如果是micro SIM卡的用户,可以找个卡套,排除接触不良的情况。4 软件平台的简介4.1 虚拟机及linux虚拟机(Virtual Machine)是指经由软件模拟具备硬件系统全部功能、运行在一个完全隔离环境中的计算机系统。进入虚拟系统后,在这个全新自立的虚拟系统里面能进行所有地操作,还可以自力安置运行软件和储存相关数据。其具备独立的桌面,不会对其他系统产生任何地影响,可以在两个不同的操作系统之间相互切换14。虚拟系统不能拖慢电脑地开机时间,其运行程序也非常迅速。为了在windows和Linux系统之间的切换,本设计利用VMware Player软件装有一个Linux系统,安装虚拟机后,进入Ubuntu系统官网上下载Ubuntu系统,然后在虚拟机中进行相关代码的修改和编译。在当今嵌入式领域应用最广泛的操作系统linux,它最大的优点就是可以根据硬件平台进行深层度地定制。在我们日常生活中所使用的嵌入式手持终端中绝大多数使用的是Linux内核。Linux诞生也离不开unix,unix是一款可以免费获得但又不能用于商业用途的操作系统,在1991年,linux刚诞生的初期,linux系统具有完全免费并且它的传播遵守GUN的计划。又与unix非常类似,被称为like unix。Linux系统操作十分稳定,不仅其代码免费开源,而且还支持多用户、多CPU、多任务及多线程。多个用户可以在不同平台下进行操作,同时,还可以为不同的用户设计不同的操作权限15。因此,Linux迅速地成为嵌入式开发者的宠儿。4.2 建立交叉编译环境在嵌入式开发过程中,程序的修改、编译和运行通常是在不同环境下进行。一般的修改与编译都是在用户PC机上,而运行则在开发板中,这两者属于不同的体系结构,所以在两者间需建立其相关联的编译环境。一般情况下,我们用的是交叉编译工具arm-linux-gcc进行编译,其程序代码开源,进行修改、编译后,通过TFTP进行程序移植,就能顺利地作用于嵌入式系统。其中,本设计包括对内核、摄像头设备驱动、boa服务器、motion运动检测和串口驱动GPRS等应用程序的移植,开发板才能实现监控报警的功能操作16。4.3 内核配置和驱动移植内核配置主要步骤有以下几步:在飞凌官网下载内核源码,复制到ubantu系统下,对内核配置makefile 文件进行修改,包括系统ARM架构和编译器arm-linux-。然后执行make menuconfig命令可以选择具体配置的设备17。在Drivers中选择设备驱动程序,在子菜单中添加对摄像头的支持和NFS文件挂载(用于测试时程序的修改),配置完成后,保存配置后退出,再执行命令make dep创建内核依赖关系,其次执行make zlmage生成压缩的内核镜像文件,最后把生成的zlmage内核映像文件下载到目标平台的Flash,这样就完成了本设计内核相关的配置和移植。4.3.1 摄像头驱动(1) 进入配置菜单输入 make menuconfig命令(2) 依次选择如下配置选项:Device Drivers -(毫无疑问,只要是添加驱动都是要进入这个选项) * Multimedia support -(显然视频摄像头属于多媒体范畴)* Video capture adapters -(视频捕获也即是摄像头) * V4L USB devices -(我们采用的是USB摄像头) * GSPCA based webcams -(万能摄像头驱动) * ZC3XX USB Camera Driver(我们采用的具体USB摄像头对应的驱动程序)(3) 保存配置文件,退出配置模式,开始编译配置好的内核输入make uImage ARCH=arm CROSS_COMPILE=arm-linux-编译配置好的内核,将新内核下载到开发板并启动,挂载NFS文件系统进入下一阶段的测试18。4.3.2 摄像头测试(1)插上USB摄像头通过超级终端查看开发板串口打印的信息,且USB摄像头在开发板系统里对应设备文件是/dev/video2。如果驱动使能成功一般会有如下信息输出:input: zc3xx as /devices/platform/s3c2410-ohci/usb1/1-1/input/input2gspca: video2 created(2)利用camera.c文件在ubantu系统下编译出可执行应用程序。在编译之前修改/dev/video2文件设备,然后再根据设备文件修改open函数,如果传递给open函数的参数不是本摄像头所对应际设备文件,那么打开就会有多种错误结果的出现。有可能失败,也可能打开某个文件导致抓取的图片是空的等情况。进行修改后,利用以下代码进行编译:arm-linux-gcc -g camera.c o camera得到的camera就是可执行文件,将它通过TFTP方式复制到开发板文件系统的根目录,并在超级终端串口控制台执行./camera命令19。有时候,虽然我们在内核中加载了USB摄像头的驱动,但有时驱动代码本身有bug,导致我们也无法正确打开的USB摄像头,因此,还需要对驱动代码进行修改。 由于OK6410新版本(3.0.1)的内核的dev_open函数有错误,实际v4l2_file_operations结构体的open成员是作为函数指针调用。他的函数名是int dev_open(struct file *file),而v4l2_file_operations的open成员的定义是int (*open) (struct node*,struct file *);所以通过open成员函数指针调用dev_open的时候会出现打开失败的结果。要把v4l2_file_operations的open成员的定义改为int (*open) (struct file *)。也要在v4l2-dev.h中struct v4l2_file_operations做相应的改动。gspca.c中的变为:dev_open(struct file *file) dev_close(struct file *file)修改后,gspca.c中定义没有变化,v4l2-dev.h中struct v4l2_file_operations的改为:int (*open) (struct file *)int (*release) (struct file *)由于ZC301摄像头参照gspca标准,其它摄像头可能参照uvc标准20,为今后开发其它摄像头考虑,还需要修改/driver/media/video/uvc/uvc_v4l2.c中uvc_v4l2_open(struct inode *inode,struct file *file)函数和uvc_v4l2_release(struct inode *inode,struct file*file)函数,修改为:uvc_v4l2_open(struct file *file) uvc_v4l2_release(struct file *file)最后,修改:v4l2_open()函数下打开文件一行修改为ret = vdev-fops-open(filp) v4l2_release()函数下释放文件一行修改为vdev-fops-release(filp);重新编译内核,内核源码目录/arch/arm/boot/下找到zImage,烧录到开发板上,烧录到开发板后,插上摄像头,/dev/下可以得到video0,表示ZC301摄像头设备驱动。其驱动成功效果图如图4.1所示图 4.1 摄像头驱动成功效果图 图和标题应该放在一页5 系统关键技术及解决5.1 视频采集V4L2架构5.1.1 V4L2接口简介V4L2全名是Video For Linux 2,是Linux内核给开发者用于音、视频驱动统一接口。包括采集接口、输出接口、传输视频接口、视频间隔消隐信号接口和收音机接口等。而本设计运用的是视频采集接口,该接口负责从USB摄像头读取视频流,可以利用回调函数(如read()、write()、ioctl()等函数)对摄像头频率、帧频、压缩格式等功能进行设置21。然后交给处理器进行分析处理,该框架只能运行在Linux操作系统上。由应用层、内核层和物理层三层组成,其整体架构如图5.1所示。应用程序V4L2应用接口V4L2核心Video设备驱动Video设备接口驱动Video设备接口摄像头显示器应用层内核层物理层图5.1 V4L2架构示意图5.1.2 V4L2视频采集程序要完成基于V4L2视频数据的收集,第一要使系统支持视频设备(USB摄像头),即驱动的加载,对视频设备属性进行相应的更改,比方放缩、裁剪等,实现对设备I/O通道管理使用ioctl()函数,其命令是extern int ioctl(int _fd, unsigned long int _request, ) _THROW;_fd为设备ID号,_request为具体命令标识符,然后才开始采集,其视频采集编程逻辑流程图如5.2所示22。a. 一般操作流程(1)打开摄像头设备文件int fd = open(dev_name,O_RDWR|O_NONBLOCK,0);(2)用VIDIOC_QUERYCAP函数查询并获取到USB摄像头的设备属性,该设备是否有输入输出功能可以查看。int ioctl(int fd, int request, struct v4l2_capability *argp);ioctl (fd, VIDIOC_QUERYCAP, &cap);struct v4l2_capabilityu8 driver16; / 驱动名字u8 card32; / 设备名字u8 bus_info32; / 设备在系统中的位置u32 version; / 驱动版本号u32 capabilities; / 设备支持的操作u32 reserved4; / 保留字段;(3)选择USB视频装备的视频输入,有些视频装备可以有多个视频输入。VIDOC_S_INPUT,struct v4l2_input(4)设置视频的的视频帧状态(如宽和高度)和制式(如PAL,NTSC)。利用VIDIOC_TRY_FMT函数查询设备支持驱动格式,利用VIDIOC_G_FMT和VIDIOC_S_FMT函数读取和设置频捕获格式,本设计的捕获的宽高设为320240,输出YUV420格式。fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;fmt.fmt.pix.width = 320;fmt.fmt.pix.height = 240;fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;ioctl (fd, VIDIOC_S_FMT, &fmt) ;(5)向驱动申请缓冲,一般不超过5个。利用的函数体结构ioctl (fd, VIDIOC_REQBUFS, &req);相关语气如下所示:req.count = 4;req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;req.memory = V4L2_MEMORY_MMAP;ioctl (fd, VIDIOC_REQBUFS, &req);(6)应用程序和设备数据交换有3种方式(直接读写、内存映射、用户指针),本设计直接利用内存映射方式。struct v4l2_requestbuffersu32 count; enum v4l2_buf_type type; enum v4l2_memory memory; u32 reserved2;(7)开始视频采集利用VIDIOC_STREAMON函数进行相关判断,然后把数据从缓存区读取出来用函数VIDIOC_DQBUF,以达减少内存的占用。最后利用VIDIOC_STREAMOFF函数结束采集过程,最后关闭摄像头。打开摄像头设备文件查询并获取设备属性选择USB视频设备输入设置帧格式向驱动申请缓存申请物理内存开始视频采集帧缓冲出队列应用程序处理帧缓进入队列是否采集结束停止关闭设备否图5.2 基于V4L2视频采集编程模式逻辑图5.2 视频H.264压缩技术 5.2.1 视频H.264压缩简介下面举个例子,假如摄像头以10帧/秒的速度采集图像,在采集程序中设定一帧图像大小为600400(以像素为单位),采用4:2:0格式,那么一帧图像大小就为6004001=240000Byte。一秒钟传输的数据量就是24000010=2.4Mbyte,可见数据量巨大。那么图像信息必然就会给存储容量、网络通信带宽及处理器的处理速度带来巨大的压力,这就需要在传输数据之前采取压缩编码技术进行压缩。本文采用移植开源代码方式进行H.264视频压缩,其在系统结构、编码方法、变化、运动补偿等方面提出了大量的新概念。在视频质量一样情况下,采取H.264方式比M-JPEG和MPEG-4相比,H.264编码可使数字视频大小减少80%和50%以上,其误码率降低到接近50%;在误码率同等情况下,其信噪比明显提高23。H.264压缩编码技术分为11个功能等级和7个类别,每个等级的分辨率都不一样,等级越高分辨率也越高,并且在每个等级上都有各自的宽带、内存空间和性能的好坏程度。等级不同,比特率(单位传送二进制数)和编码速率(每秒宏块数)也不同,一张图像被分为若干宏块,一个宏块由一个亮度像素块(一般为1616)和两个色度块(由图像采样格式而定,如YUV4:2:0的色块就为88)组成。在视频编码中以宏块为单位,编码后形成片组成连续的码流。本文采用的是H.264中的基本类别,能够实现低延时,对实时监控很有用。其编码技术从算法上分成一个负责视频压缩的视频编码层(VCL)和一个适应网络传输的网络提取层(NAL),对视频数据更好的封装和传送。5.2.2 视频H.264压缩新特性(1)预测编码为了减缩图像的空间和时间冗余,H.264利用在给定帧中相邻宏块空间的相关性,预测其周围宏块,然后用预测值与给定值相减后的残值进行存储和传输,H.264不仅支持以往视频编码特性,在运动估计补偿方面还添加了4个特性,分别是可以分成不同大小和形状的宏块、利用1/4或者1/8高精度的亚像素活动矢量(而H.263半像素精度估计后的残值更小,在精度一样下,H.264在帧间编码所需的码率更小)、多帧预测的功能和相关的滤波器。(2)整数DCT变换传统的DCT,会造成解码后数据的漂移,而H.264采取整数DCT经过由整数的加减和移位方式就没有太大误差,之前的MPEG4采取的是8x8DCT的浮点数变换,而H.264采用的是4x4余弦DCT的整数变换,虽然在变换中有误差,但是在反变换和量化(H.264有52种量化步长,以复合率为12.5%递进)过程中,其误差较小,而且计算量也大大的减少了24。(3)熵编码H.264中对待所有的编码符合采取统一的编码CAVLC,对于相关的编码,可以采用自适应二进制编码(CABAC),使得编码后更接近图像的信息熵。5.2.3 视频H.264编译码器其编码器采取变换和预测的混合编码方式,Fn-1是该图像中前面已编码好的图像,然后利用行运动补充MC估计ME得出的估计值PRED(图中用P表示帧内编码的预算值)。二者再进行相减,得到的值进行变换和量化,最后经过熵编码。H.264编码器流程如图5.3所示。然后,其解码器就是编码器的逆过程,其流程图如图5.4所示。 字号不对图5.3 H.264编码器图5.4 H.264译码器5.3 网络传输技术5.3.1 Boa服务器Boa服务器是运行与unix或者linux下的一个小巧高效的单任务web服务器,只有60KB的执行代码。本系统boa服务器采用B/S的网络结构模式。其工作流程图如图5.5所示。CGI是一个外部程序,是HTTP服务器本地或远程应用程序通信的接口,将其编译移植后能作用在Boa服务器上,提供同客户端HTML页面的接口,也是web服务器实现浏览器与服务器的交互通道,web服务器接受浏览器发送来的信息,调用CGI程序进行处理,而CGI再调用本系统的应用程序motion抓拍完成图像的显示。HTML是一个预先保存的静态页面文件,用来创建与平台无关的超文本档的标记语言,写入“|%”与“|”之间,在服务器运行时就会自动处理和替换设计配置文件和指定替换的内容。在浏览器中输入板子IP地址时,是通过HTML请求从服务器获取静态网页,还需要添加CGI脚本虚拟路径所对应的实际路径cgi-bin/cgictest(就是所移植的根文件目录),才能调用CGI程序,进而调用系统的其他应用程序,更加地安全。浏览器Boa服务器CGI程序motion程序摄像头摄像头驱动HTML网页IPIP+cgi-bin/cgictestTTt图5.5 Boa工作流程图5.3.2 Boa移植(1)下载Boa源码下载 boa-0.94.13.tar.gz,cgictest.cgi和index.html.解压:# tar xzf boa-0.94.13.tar.gz。(2)修改源代码由于编译器版本过高,需将compat.h文件中的#define TIMEZONE_OFFSET(foo) foo#-tm_gmtoff改为:#define TIMEZONE_OFFSET(foo) foo-tm_gmtoff(3)然后执行./configure命令生成makefile文件(4)修改生成的makefile:默认生成的makefile是针对X86平台的,而开发板是嵌入式平台的,需要修改编译器。把Makefile的31行和32行:CC = gcc CPP = gcc -E更改为CC = arm-linux-gccCPP = arm-linux-gcc -E(5)使用make命令编译Boa服务器文件,然后移植boa到6410开发板* 修改配置文件boa.conf 。将#ServerName www.your.org.here修改为:ServerName www.your.org.here*用户权限修改为root: User rootGroup root*修改Doument Root地址,即html文件存放位置:DocumentRoot /usr/local/boa*修改输入访问板子IP地址时服务器的显示静态页面:DirectoryIndex index.html*修改cgi程序存放的位置:以http:/IP/cgi-bin-cgictest 的方式运行cgi程序,cgi程序放在ScriptAlias /cgi-bin/ /var/www/cgi-bin/目录下(6)将配置好的文件通过TFTP移植到开发板中,启动boa服务器。5.4 motion检测技术5.4.1 motion检测原理对可疑人入侵时,本设计采用的是motion检测技术,其实现方法有背景减除、时间差分和光流法。本设计选用背景减除法,原理是利用当前图像和背景图像进行差分处理,并且定时的更换背景模型,当大于门限阈值时,则该图像就被认定为有可疑入侵,系统就会通过串口发送AT命令启动GPRS模块进行短信报警,并且能够提供完整的数据特征。其缺点就是受光干扰比较严重,检测流程图如5.6所示。已采集的图像序列计算图像序列的标准差作为背景帧采集图像计算当前帧与背景帧的差分超过设定阈值?短信报警YN图5.6 motion检测流程图5.4.2 motion检测移植motion检测是一种开源,支持动作捕获的视频捕捉工具软件,对其进行相应地修改并移植到开发板即可使用,其移植步骤命令如下:(1)tar xvf motion-3.2.12.tar.gz(2)cd motion-3.2.12(3)./configure -prefix=$PWD/_install -host=arm-linux 生成makefile(4)make make install(5)拷贝./_install/bin下的程序motion到开发板根文件系统的/usr/sbin下。(6)在开发板根文件系统目录创建/var/run/motion目录(7)将./_install/etc下的配置文件 motion-dist.conf使用文本编辑器打开进行修改,然后拷贝到开发板根文件系统/etc/motion目录下,以motion.conf为命名控制motion运行。5.5 GPRS报警短信设计5.5.1 GPRS模块初始化流程AT / 测试串口通讯是否正常OK AT+CPIN? / 查询SIM卡是否注册+CPIN: READYOKAT+CSQ / 查询信号质量+CSQ: 18,0 /31为最强OKAT+CREG? / 查询模块网络注册状态+CREG: 0,1 /0代表关闭网络注册结果码,1代表注册到了本地网络OKAT+CGATT? +CGATT: 1 /覆盖到GPRS网络,如果返回0,则可能是SIM卡内没钱或覆盖不到OK以上全部正常在进行其它功能操作。相关的AT主要有:AT+CPMS / 查询SIM卡内短消息使用状态AT+CNMI / 新消息指示设置AT+CMGF / 选择短消息格式 AT+CSCS / 编码设置AT+CSCA / 查询、设置SMS服务中心号码AT+CSMP / 设置短消息文本模式参数AT+CMGS / 发送短消息AT+CMGR / 读取短消息AT+CMGD / 删除短消息AT+CMGDA / 删除所有短消息5.5.2发送英文短信(TXET模式)串口端代码为了全文上下一致都用括号 标号的形式吧:(1) 发送:AT+CMGF=1返回:AT+CMGF=1说明:AT+CMGF=1:设置短信模式为TEXT。(2) 发送:AT+CSCA=+8613800411500返回:AT+CSCA=+8613800411500说明:AT+CSCA:设置设置信息中心号,各地联通/移动手机短信中心号不同,请按实际使用,经过查询,如本人使用GSM搭载大连移动手机卡,中心号查询为:+8613800411500。(3) 发送:AT+CMGS=1872089063返回:AT+CMGS=1872089063说明:AT+CMGS:设置接收方手机号。(4) 发送信息内容:something move 注意:发送短信内容时不需加回车,直接发送即可。返回:something move发送结束:1A(结束符,十六进制发送,串口助手左侧hex打钩)6 系统测试 格式不对 修改6.1 系统测试环境搭建当所有设计完成后,连接 USB 摄像头、开发板、PC机、GPRS模块等相关连接线。系统的硬件实物连接图如图6.1所示:图6.1硬件实物连接图6.2 系统测试步骤及结果开发板上电后,通过超级终端可以看到移植系统内核的所有信息,然后开始配置板子 IP 地址。通过执行指令:#ifconfig eth0 169.254.4.110,使得PC机的本地连接IP(PC机本地IP地址为169.254.4.148)与板子IP处于同一网段,构成一个小型局域网,配置成功后可以通过#ifconfig查看配置后串口的相关网卡信息,如图6.2所示:图6.2串口打印信息输入#ls命令,可以查看烧写到板子上的所有程序,为了避免占用串口终端,本设计把Boa服务器和motion检测设为后台进程,烧写移植后,上电开发板后就能自启动。而GPRS报警模块serial程序设置为本系统的前台程序,需要在超级终端执行#./ serial,在摄像头触发动作可使系统进行抓拍并向GPRS模块发送短信报警,在电脑的浏览器中输入开发板上配置的IP地址169.254.4.110。可以查看到Boa服务器的HTML静态页面,再输入cgi-bin-cgictest的脚本,即可看到调用CGI程序处理再调用motion检测所抓拍的图像
收藏
编号:1731302
类型:共享资源
大小:16.20MB
格式:ZIP
上传时间:2019-11-04
25
积分
- 关 键 词:
-
基于
嵌入式
智能家居
报警
系统
实现
设计
- 资源描述:
-
基于嵌入式智能家居报警系统的实现设计,基于,嵌入式,智能家居,报警,系统,实现,设计
展开阅读全文
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。