基于ARM-linux的智能监控系统设计
随着社会的发展和进步,人们的生活步调加快,如家庭生活和工作等环境中会经常出现无人的情况,此时安全问题令人担忧,研制一个适宜的安全监控系统是十分必要的。然而,目前大多智能监控系统需要借助一些传感器,如热红外、烟雾等,来实现智能监控,这样提高了成本,使系统变得复杂,可靠性降低。因此设计一种简易的智能家居监控系统是必要的。本文提出了运动物体检测的设计方案。当有外来入侵者时,系统会追踪运动目标并将其锁定,拍摄记录下其图片,并会发出报警信号,警告入侵者离开。同时系统将会通过GPRS网络发送警告信息和入侵者的图片,让用户可以随时了解监控区域的情况。
本文以嵌入式系统ARM+Linux系统为平台设计了智能家居监控系统。系统采用背景差法实现对视频序列中运动目标的检测,根据检测结果实现报警功能,同时利用GPRS移动通信覆盖区域广阔的特点,以短信和彩信的形式将信息发送到用户手机,从而实现智能监控[1]。
1 监控系统的功能概述及工作流程
本智能监控系统是基于嵌入式ARM-Linux开发的,系统实现图像采集、运动目标检测、现场警报并通过GPRS网络实现短信和彩信的发送。
系统要实现的主要功能有:(1)采用背景差法实现对视频序列中运动目标检测;(2)通过GPRS发送报警短信和检测到的运动目标图像彩信;(3)通过声卡在现场播放报警音乐。
系统工作流程为:首先,运行运动目标入侵检测模块,驱动USB摄像头进行图像数据采集,在ARM处理器中进行运动目标检测算法计算工作。当系统检测到有运动目标入侵时,系统会拍摄下运动目标入侵者的图像并保存在文件夹中。此时,系统将开启现场报警程序模块,通过声卡UDA1341驱动音箱播放报警音乐,来警告非法入侵者离开。同时,系统通过串口发送AT指令来启动GPRS无线模块M20,GPRS模块发送报警短信和入侵者的图片到用户手机。
2 系统硬件平台构建
本系统硬件由以下模块构成:中芯微的USB摄像头zc0301、GPRS彩信模块M20、声卡UDA1341、音箱、三星公司的微处理器S3C2440,256 MB NAND Flash以及64 MB SDRAM。S3C2440微处理器内部集成了ARM公司ARM920T处理器核的32 bit微控制器,其资源丰富,带独立的16 KB指令Cache和16 KB数据Cache,还有NAND闪存控制器及RAM控制器,系统主频最高可达203 MHz[2-3]。本系统硬件结构框图如图1所示。
本系统用USB摄像头zc301进行图像采集,得到JPEG格式图像,通过声卡UDA1341驱动音箱报警,用M20实现彩信图片发送。
3 系统软件设计
本视频监控系统软件是基于ARM-Linux平台开发的。首先在系统上移植Uboot、Linux-2.6.30内核和根文件系统。系统移植zc0301摄像头驱动、声卡UDA1341驱动和串口驱动。系统需要设计基于背景差法的运动图像检测算法的软件实现[4]。报警模块需要移植MP3播放器madplay,设计报警控制程序及GPRS警告信息发送程序。系统的应用软件体系结构如图2所示。
3.1 运动图像检测
视频序列检测为智能视频监控提供了便利。本系统通过运动检测实现自动报警和图片拍摄,而在以往的监控系统中通常是采用人工干预的方式或者增加额外报警电路的方式实现报警功能。通过视频序列检测运动目标则可以提高监控系统的自动化程度,节约人力[1]。运动目标检测和跟踪是视觉领域的重要课题。系统对视频视野内是否有入侵者进行检查,当检测结果超出认定的变化阈值时,系统就会自动报警并拍摄下运动目标的照片。
本文采用背景差法进行运动图像检测。背景差法基于图像序列和参考背景模型相减实现运动物体的检测,它能较好地检测出运动目标有关的所有像素点[1]。由于视频监控系统位置是固定的,场景不会实时变化,因此适合采用背景差法进行运动目标检测[1]。
修改配置文件motion-dist.conf:设置图像大小为320×240,设置摄像头采集速度为30帧/s,设置像素变化检测认定为图像变化的阈值threshold=90,设置当检测到有图像变化时,把运动区域用矩形框起来等配置信息。
移植motion:首先进入源码包交叉编译#./configure、#make和#make install,这样就完成了移植工作。之后#./motion-c motion-dist.conf,即可开始验证运动图像检测。
报警模块是根据motion检测的结果(图像变化超过阈值90)作出报警反应。报警模块移植了MP3播放器madplay及报警音乐播放处理程序。当检测到图像像素变化达到阈值时,则开始播放MP3报警音乐。
3.2 短信发送
短信的发送方式有TEXT模式和PDU模式两种,本文采用TEXT模式向用户发送报警短信。发送英文短信的主要步骤如下:
(1)打开串口;
(2)初始化串口参数;
(3)发送AT+CMGF=1命令,通知手机模块采用TEXT模式;
(4)发送AT指令AT+CMGS="150968807501",通知手机模块用户的电话号码;
(5)添加发送的警告信息内容;
(6)发送结束,关闭串口。
3.3 彩信发送
运动目标检测部分在检测到运动目标入侵时会拍摄下运动目标的图像,将其存储在/root/motion文件夹下。发送彩信时则将读取相关图片,并采用彩信发送的指令发送彩信[5]。发送彩信的步骤为:
(1)发送指令AT+QIFGCNT=1,以配置场景;
(2)发送AT+QICSGP=1,"CMWAP"设置接入点;
(3)发送指令AT+QIREGAPP以设置用户名及密码,通常默认为空;
(4)发送AT+QIACT激活GPRS;
(5)发送AT+QILOCIP查询本机IP是否连上GPRS;
(6)发送AT+QMMSW=1,1,"150968807501"设置目标手机号码;
(7)发送AT+QFUPL="pic_name.jpg",2 644,即上传图片并起名为pic_name.jpg,图片大小为2 664;
(8)发送AT+QMMSEND=1,发送彩信。
应用软件部分代码如下:
/*pic.txt用于记录文件pic.txt记录是否有图像变化。1:有图像变化0:没有图像变化*/
pic_fd=open("pic.txt",O_RDWR|O_CREAT,0666);
read(pic_fd,pic_buf,1);
if(pic_buf[0]==′1′) /*检测到有图像变化*/
start_playMP3(); /*播放MP3报警音乐函数*/
send_text(); /*发送文本短信*/
fd=open(pic_name.jpg,O_RDWR,0777));
len=read(fd,buff);
send_MMS("150968807501",len,buff);/*发送彩信*/
strcpy(uart_buff,AT_QIDEACT);
strcpy(ptr1_code,AT_QMMSEND);
Send_AT_Command(ptr1_code); /*发送彩信*/
Send_AT_Command(uart_buff); /*断开连接*/
return 0;
- REDIce-Linux--灵活的实时Linux内核(11-12)
- linux文件系统基础(02-09)
- Linux标准趋向统一(11-12)
- linux基础技术(02-09)
- LINUX的目录树(02-09)
- 在Windows下启动Linux(02-09)