ImageVerifierCode 换一换
格式:DOC , 页数:30 ,大小:4.40MB ,
资源ID:850258      下载积分:20 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-850258.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于ARM的嵌入式视频监控系统.doc)为本站会员(管**)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

基于ARM的嵌入式视频监控系统.doc

1、目 录前言21 绪论21.1 研究目的和意义21.2 国内外研究现状22 系统总体设计22.1 工作原理22.2 总体结构和功能33 系统硬件设计43.1 FS_S5PC100开发板介绍43.2 串口接口电路的设计43.3 DM9000网络接口电路的设计53.4 USB接口电路设计53.5 各功能模块设计64 系统软件平台构建74.1开发环境的搭建74.2 BootLoader移植94.3 Linux系统移植104.4 Linux驱动移植105 系统功能实现125.1 视频采集模块实现125.2 报警模块实现165.3 GPRS模块实现205.4 WEB控制端的实现206 系统测试236.1

2、测试环境的建立246.2 系统功能测试24参考文献:错误!未定义书签。致谢29淮南师范学院2014届本科毕业论文基于ARM的嵌入式视频监控系统 学生:尉成龙(指导老师:陈广宏 校外指导老师:闵建)(淮南师范学院计算机与信息工程系)摘 要:近年来,视频监控系统有了很快的发展,传统的视频监控已经很难满足现在信息化社会的需要。因此,本文将介绍一种基于ARM的嵌入式视频监控系统,它采用FS_S5PC100开发板,进行BootLoader和嵌入式Linux内核的移植,视频采集通过USB摄像头,视频信息经过处理后,将被发送到互联网的控制终端,用户通过网络控制终端进行现场监控,并能通过GPRS模块将现场异常

3、信息发送给用户;该系统具有体积小、功耗低、可靠性高的优点,具有很高的实用价值。关键词:视频监控;ARM;FS_S5PC100;Linux;视频采集Embedded video surveillance system based on ARMStudent:Chenglong Yu (Faculty Adviser:Guanghong Chen & Jian Min)(Department of Computer & Information Engineering, Huainan Normal University)Abstract:In recent years, the rapid dev

4、elopment of video surveillance system, traditional video surveillance has been difficult to meet the needs of the network information society now.Therefore, this paper will introduce a kind of embedded video surveillance system based on ARM, it uses the FS_S5PC100 development board, the transplantat

5、ion of the BootLoader and embedded Linux kernel, to capture the video through the USB camera, the image information through Internet transmitted to the control terminal, user control terminal on-site surveillance through the network, and the abnormal information sent to the user through the GPRS mod

6、ule;The system has advantages of small volume, low power consumption, high reliability, has the very high practical value. Keywords:Video Surveillance;ARM;FS_S5PC100;Linux;Video Compression前言由于体积小、功耗低、可靠性高的优点,基于ARM嵌入式视频监控系统得到了大力的发展,并在实际项目中广泛的采用。笔者通过实例设计的嵌入式视频监控系统,除了能够实时检测到视频信号外,还能够通过各种传感器探测异常发生,同时向用

7、户发出报警信息。1 绪论1.1 研究目的和意义当今社会是高新科技快速发展的阶段,网络和信息安全越来越被人们所重视。安防系统也逐渐在国家安防、工业生产、电子产品、网络通信系统、无线系统等领域得到了广泛的应用。然而视频监控系统作为安防系统的核心组成部分,由于操作简单、实时可靠、功耗低、稳定性高等优点很快成为人们研究的热点。为此笔者构建了以华清S5PC100开发板、USB网络摄像头、GPRS短信收发器、LCD报警灯、警报发声器和各种传感器为一体的嵌入式视频监控系统。本系统除了能够实时检测到视频信号外,还能够通过各种传感器探测异常发生,同时向用户发出报警信息;本系统有操作简单、实时可靠、功耗低、稳定性

8、高的优点,具有重要的研究意义和实际的应用价值。1.2 国内外研究现状目前国外一些更成熟的网络视频监控产品,它可以接入若干路视频信号,在内部进行图像压缩处理,由服务器接至Internet,用户可以通过网络视频显示终端来进行监控。相比国外,我国也推出了HoPen嵌入式实时操作系统,但目前国内监控企业的关键技术储备不足,自主研发专用硬件平台的困难比较大。此外智能视频监控系统的投入成本高,对于小型企业和个人来说很难接受。2 系统总体设计2.1 工作原理本论文设计的是基于ARM的嵌入式视频监控系统,当用户请求访问视频监控时,Web服务器会调用登陆网页,进入控制界面,通过手动开启嵌入式视频采集程序,系统将

9、网络摄像头采集到视频流信息,经过压缩后通过Internet传输,视频显示终端收到视频流信息后,经过解码将视频信息展现给用户,当系统遇到异常情况时,会触发传感器,系统将遇到的异常信息通过GPRS短信模块向用户发出警告,等待用户的下一步操作。基于ARM的嵌入式视频监控系统的工作原理如图1所示:图1 工作原理图2.2 总体结构和功能本系统采用华清远见的FS_S5PC100开发板,移植嵌入式Linux操作系统,系统控制USB摄像头采集视频信息,系统采集视频流的同时检测传感器信号,当系统遇到异常时向用户发出警报。信息采集模块进行视频信号的采集和各传感器的检测以及警报处理。视频显示终端主要负责异常控制,视

10、频信号的实时显示等。系统总体结构设计如下图2所示: 图2 系统总结结构设计图 此系统采用嵌入式Linux实现,实时采集现场传感器信息和视频信息,通过Internet将数据发送到网络视频显示终端,并能在异常情况下通过GPRS模块发送信息到用户手机上。主要功能如下:(1) 通过USB摄像头采集视频信号;(2)通过温度传感器采集温度数据;(3)通过红外传感器探测是否有人进入现场;(4)系统在异常情况下给用户发送短信报警;(5)用户通过网络验证可以登陆监控系统的主页;(6)用户可以在主页上观察到USB摄像头采集到的现场图像;(7)用户可以在主页上开启和关闭警报器、开启关闭USB摄像头监控功能,抓拍照片

11、和备份照片等;3 系统硬件设计3.1 FS_S5PC100开发板介绍本系统使用的FS_S5PC100开发板上基本资源如表1所示:表1 FS_S5PC100的硬件资源表3.2 串口接口电路的设计在嵌入式系统开发的过程中,通过串口下载代码和调试程序,对本系统的实现非常重要。接口电路如图3所示:图3 串口接口电路图3.3 DM9000网络接口电路的设计DM9000为系统提供连接网络的功能,其接口电路如图4 所示:图4 DM9000接口设计图3.4 USB接口电路设计USB技术将主机与外围设备简单的连接在一起。在进行系统开发时,也可以进行内核、文件系统的下载与烧写,USB接口电路如图5所示:图5 US

12、B接口电路设计图 3.5 各功能模块设计3.5.1 AD模块电路设计FS_S5PC100开发板用的AD转换器是ARM S3C2410自带的一个一路10位的AD转换器。接口电路如下图6所示:图6 AD模块电路图3.5.2 GPRS通信模块本文选用的GPRS模块,自带RS-232通讯接口,可方便的与PC机、ARM、单片机等进行连接,GPRS模块原理如下图7所示:图7 GPRS模块原理图3.5.3 LED模块接口电路设计本系统在led灯用来模拟报警灯,其接口电路如下图8所示:图8 LED灯接口电路图 4 系统软件平台构建4.1开发环境的搭建在本系统的开发过程中,主机环境使用的是Ubuntu10.04

13、操作系统,其内核版本为Linux2.6.35。在装有Windows系统的计算机上安装虚拟Linux操作系统,这样既可以进行交叉编译工作,又能方便与Windows系统进行切换。4.1.1建立交叉编译环境在本文设计中,目标机采用的是华清远见的FS_S5PC100开发板,为了提高开发效率,系统开发时选用arm-none-linux-gnueabi.tar.bz 2交叉编译工具链。安装步骤有:解压工具包、添加环境变量、重启配置文件、工具链的测试等步骤。4.1.2 NFS服务器配置NFS 服务把本地的目录挂载到网络上,以供其他计算机访问这个目录。NFS服务器比较安全,可以保证文件系统不会崩溃。具体安装步

14、骤如下:(1)安装 NFS。$ sudo apt-get install nfs-kernel-server(2)修改 /etc/exports 文件。$sudo vim /etc/exports (3)开启nfs服务。$sudo /etc/init.d/nfs-kernel-server start4.1.3 TFTP 服务器安装与配置TFTP是Trivial File Transfer Protoeol的缩写,是简单文件传输协议,它基于UDP 协议而实现的。具体安装步骤如下:(1)安装 tftpd-hpa、tftp-hpa和xinetd。#sudo apt-get install tftp

15、d-hpa tftp-hpa xinetd(2)修改文件tftpdhpa文件,开启tftp服务器。#vim /etc/default/tftpdhpa(3)创建/etc/xinetd.d/tftp 文件。# sudo vim /etc/xinetd.d/tftp 并在文件中添加如下内容:service tftpprotocol = udpport = 69socket_type = dgram wait = yesuser = nobody server = /usr/sbin/in.tftpd server_args = /tftpboot disable = no(4)创建 tftp 服务

16、器的根目录。# sudo mkdir /tftpboot# sudo chmod -R 777 /tftpboot# sudo chown -R nobody /tftpboot(5)通过xinetd超级服务器启动tftpd。# service tftpdhpa restart(6)登陆本机测试。#tftp 192.168.3.674.2 BootLoader移植4.2.1 BootLoader简介BootLoader是一段引导程序,相当于是PC机上的BIOS,本系统选择移植U-Boot作为Linux的引导程序。开源的Linux引导程序如表2所示:表2 开源的Linux引导程序4.2.2 U-

17、Boot移植U-Boot全称Universal BootLoader,用于多种嵌入式CPU的引导程序。Bootloader的启动过程分为两个阶段,系统引导程序的启动流程如图9所示:图9 U-Boot启动流程图U-Boot移植的关键步骤如下图10所示:图10 U-Boot移植步骤图4.3 Linux系统移植4.3.1 Linux内核编译与配置内核编译分为静态编译和动态编译两种模式。静态编译比较方便、速度快,但是会使内核变得比较大;动态编译会生成.o文件,可以缩小内核大小,但使用较麻烦。静态内核编译与配置的主要步骤有:解压内核、修改内核顶层目录下的Makefile文件、复制配置文件、配置内核、编译

18、内核等。4.4 Linux驱动移植4.4.1 文件系统移植(1)解压源码。(2)进入源码目录进行内核配置。(3)编译内核并安装。(4)进入安装目录下创建其他需要的目录。$ mkdir dev etc mnt proc var tmp sys root (7)复制库文件到安装目录下。(8)删除_install/lib下的所有目录、.o文件和.a文件。(9)文件系统瘦身。$ arm-none-linux-gnueabi-strip lib/*(10)在etc下添加系统启动文件并重新编译内核。(11)设备文件创建。$ mknod dev/console c 5 1网卡驱动移植、USB驱动移植方法同文

19、件系统移植类似。4.4.2 LED驱动移植(1)修改内核配置。$ make menuconfig(2)修改drivers/char/Kconfig和drivers/char/Makefile文件。(3)动态编译LED驱动。$ make menuconfigDevice Drivers - Character devices - FSC100 LED Device Support$ make zImage modules$ cp arch/arm/boot/zImage /tftpboot$ cp drivers/char/fsc100_led_drv.ko /source/rootfs(4)重

20、启开发板,在终端下输入。# mknod /dev/led c 252 0#insmod fsc100_led_drv.ko4.4.5 音乐播放器移植(1)编译zlib并修改Makefile文件。$ ./configure执行make ,make install命令。(2)编译libid3tag。$ ./configure 执行make, make install 命令。(3)编译libmad。$ ./configure 执行make ,make install命令。(4)编译madplay。$ ./configure 执行make ,make install命令。4.4.5 视频服务器的移植(

21、1)配置内核。(2)重新编译内核添加代码。 (3)移植jpeg库。(4)移植mjpg-streamer。 解压源码。 修改makefile中的交叉编译工具链gcc为本系统使用的工具链编译器。 在Makfile文件内添加代码。 编译make。5 系统功能实现5.1 视频采集模块实现系统开发环境和进行驱动移植完成之后,系统运行环境建立起来了。本系统利用嵌入式Linux系统自带的视频采集设备video4linux2完成视频信息的采集,再通过Internet传输到网络视频显示终端,用户可以通过浏览器实时监控以及视频抓拍和备份。5.1.1 实时监控(1)视频采集的基本流程如下图11所示:图11 视频采集

22、流程(2)视频采集处理程序详细步骤: 分配内存。 开始采集视频。 取出FIFO缓存中已经采样的帧缓存。 将刚刚处理完的缓冲重新入队列尾,这样可以循环采集。 停止视频的采集。5.1.2 抓拍抓拍指的是从视频流中保存一帧图像,从而达到获取一张照片的功能。具体工作流程如下图12所示:图12 抓拍的工作流程抓拍功能具体实现:# cd mjpg-streamer-rc63/plugins/output_file# vim output_file.c插入代码:char buf10;int flags = 0; int fd_com = 0; /打开管道的文件描述符stop_num = 0; if ( ac

23、cess(“/tmp/webcom”,F_OK) 0 ) if ( mkfifo(“/tmp/webcom”,0666 ) 0) printf(“ photo fifo create failedn”);fd_com = open (“/tmp/webcom”,O_RDONLY,0666);if (fd = 0 & !pglobal-stop) 后加入if (flags = 0) while(1) reade(fd_com,buf,sizeof(buf);if (strncmp(buf,”three”,6) = 0) flags = 1; bzero(buf,sizeof(buf); brea

24、k;if (strncmp(buf,”single”,3) = 0) flags = 2; bzero(buf,sizeof(buf); break; 在延时程序后加入:stop_num+;if (flags = 1) if ( stop_num 3) stop_num = 0;flsgs = 0;else if (flags = 2)stop_num = 0;flags = 0;5.1.3 数据备份数据备份功能是指利用CGI命令将抓拍的图片从Web服务器下载到本地客户机上保存起来。具体实现代码如下:int cgiMain()FILE *fp;char filebufMAX_FILE_LEN;

25、char cmd512;struct stat sb;sprintf(cmd, %s%s, DOWNLOAD_FILE_PATH, DOWNLOAD_FILE_NAME);stat(cmd, &sb); printf(Content-Disposition:attachment;filename=%s,DOWNLOAD_FILE_NAME);printf(rn); printf(Content-Length:%d, sb.st_size);printf(rn);printf(Content-Type:application/octet-streamrn);printf(rn);sprintf(

26、cmd, %s%s, DOWNLOAD_FILE_PATH, DOWNLOAD_FILE_NAME);if(fp=fopen(cmd, r+b) doint rs = fread(filebuf, 1, sizeof(filebuf), fp);fwrite(filebuf, rs, 1, stdout);while(!feof(fp);fclose(fp);return 1;5.2 报警模块实现 报警模块主要功能是通过传感器检测现场信号,实现无人监控模式下的系统自动监控,当现场温度过高,或者有非法人员侵入,传感器就会检测到异常信号,系统处理后向用户发出警告。用户可以在网络视频控制终端进行开启

27、和关闭,具有威慑警告功能。5.2.1 报警灯 本系统报警灯采用led灯进行模拟显示。具体实现代码如下:#include /*printk */#include /*module_init module_exit */#include /*MODULE_LICENSE*/#include /* cdev */#include /*file_operations */#include /*copy_to_user copy_from_user*/#include #include s5pc100_led.hstruct cdev s5pc100_led_cdev; int s5pc100_led_

28、major = 250;int s5pc100_led_minor = 0;int devno;int num_of_minor = 1; int *vgpg3con;int *vgpg3dat;MODULE_LICENSE(GPL);/*打开设备*/static int s5pc100_led_open(struct inode * node, struct file *filp)return 0;/*打开led灯*/static void led_on(void) *vgpg3con = 0x1111; *vgpg3dat = 0xf;/*关闭led灯*/static void led_o

29、ff(void) *vgpg3con = 0x1111; *vgpg3dat = 0x0;/*设备卸载函数*/static int s5pc100_led_release(struct inode *node, struct file *filp)*vgpg3dat = 0x0;printk(KERN_INFO s5pc100_led close! n);return 0;static int s5pc100_led_ioctol(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) switc

30、h(cmd) case LED_ON: led_on(); break; case LED_OFF: led_off(); break; default: break; return 0;static struct file_operations s5pc100_led_fops = .owner = THIS_MODULE,.open = s5pc100_led_open,.release = s5pc100_led_release, .ioctl = s5pc100_led_ioctol,;#define PGPG3CON 0xE03001C0#define PGPG3DAT 0xE030

31、01C0 + 4/*设备初始化*/static int _init s5pc100_led_init(void)int result;devno = MKDEV(s5pc100_led_major, s5pc100_led_minor); /major 20 | minorresult = register_chrdev_region(devno, num_of_minor, s5pc100_led );if(result)result = alloc_chrdev_region(&devno, 0, num_of_minor, s5pc100_led);if(result)goto err_

32、0;cdev_init(&s5pc100_led_cdev, &s5pc100_led_fops); /初始化字符设备s5pc100_led_cdev.owner = THIS_MODULE;result = cdev_add(&s5pc100_led_cdev, devno, num_of_minor); /注册字符设到内核if(result)goto err_1;vgpg3con = ioremap(PGPG3CON, 4);/将物理地址PGPG3CON 映射为vgpg3convgpg3dat = ioremap(PGPG3DAT, 4);printk(s5pc100_led init!

33、n);return 0;err_1:unregister_chrdev_region(devno, num_of_minor);err_0:return -EINVAL;/*设备退出*/static void _exit s5pc100_led_exit(void)cdev_del(&s5pc100_led_cdev); /注销设备unregister_chrdev_region(devno, num_of_minor);/注销字符设备号printk(s5pc100_led exit! n);module_init(s5pc100_led_init);module_exit(s5pc100_l

34、ed_exit);5.2.2 警报器本系统采用madplay播放报警音乐的方式实现警报功能,具体实现代码较为简单,主要有开启和关闭报警器功能,主要代码以下两句:system(madplay /www/cgi-bin/beep/*.mp3 -r &);/开启警报system(killall -9 madplay);/关闭警报5.3 GPRS模块实现5.31 模式选择GPRS模块有文本方式和PDU模式两种发送短消息的方式;其中文本方式只能发送英文信息,以PDU模式发送短信则可以发送中文信息。本项目采用PDU模式发送中文短信。其基本步骤如下:(1)AT+CMGF=0 设置为PDU模式发送中文编码短信

35、(2)AT+CMGS=信息长度(3)发送短信5.3.3 代码实现GPRS发送短信功能主要代码如下:struct message_info char cnnu16; char phnu16; char message128;struct pdu_info char cnswap32; char phswap32;int send_zh_message(int fd,struct message_info info) char cmgf = 0; char cmgs4 = 0; char ch2 = 0891; char ch3 = 1100; char ch4 = 000800; char ch

36、5 = 0d91; char final200; char *message3 = 128B66544AFF1A5BB691CC7740706B4E86FF01,/警告:家里着火了! 128B66544AFF1A5BB691CC67095C0F5077FF01,/警告:家里有小偷!; 5.4 WEB控制端的实现本系统可通过WEB页面进行远程的访问,这样设计有对用户来说十分方便使用浏览器访问视频服务器实时画面的功能主要由BOA服务器来完成。5.4.1 BOA服务器的安装与配置一、编译步骤:(1)解压源码。$tar xvf boa-0.94.13.tar.tar(2)进入src/,进行配置。$./

37、configure (3)修改Makefile文件、src/compat.h、src/log.c、修改src/boa.c。(4)编译。$sudo apt-get install bison flex$make(5)boa瘦身。$arm-none-linux-gnueabi-strip boa二、配置步骤:(1)创建目录。$sudo mkdir /home/helen/rootfs/etc/boa(2)拷贝boa目录。$sudo cp boa.conf /home/helen/rootfs/etc/boa(3)修改配置文件boa.conf。$sudo vim /home/helen/rootfs

38、/etc/boa/boa.conf(4)将boa拷贝到开发板根文件系统的/etc/boa下。#cp src/boa /home/helen/rootfs/etc/boa/(5)拷贝mime.types文件。#cp /etc/mime.types /home/helen/rootfs/etc(6)最后在主机浏览器输入开发板网址。5.4.2 CGI的安装与使用 CGI(Common Gateway Interface)是外部应用扩展应用程序与WWW服务器交互的一个标准接口。CGI有GET和POST两种接收数据的方式。它们的唯一区别就是:以GET方式接收的数据有长度限制,而用POST方式接收的数据没

39、有长度限制。CGI的安装与使用过程步骤:(1)CGIC的安装。$tar xvf cgic205.tar.gz(2)测试安装。 test.cgi:cgictest.c cgic.h cgic.carm-none-linux-gnueabi-gcc -static cgictest.c cgic.c -o test.cgi(3)执行make命令。(4)在开发板系统上开启boa服务器。5.4.3 HTML网页设计主要编写代码为:安防控制tr   功能选择input name=7Ctrl type=submit class=STYLE11 id=7Ctrl2 value= 开 启 警 灯 /

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922