基于ARM嵌入式移动图像监控系统的设计

2013-01-15 09:33张洪涛杨名军范羖豪
湖北工业大学学报 2013年2期
关键词:邮件嵌入式报警

张洪涛,杨名军,葛 林,裴 浩,范羖豪

(1湖北工业大学电气与电子工程学院,湖北 武汉430068;2北京工业大学软件学院,北京100081)

长期以来移动图像监控系统都是监控领域中的热点.它以方便、直观、信息内容丰富等优点,在很多行业有着广泛应用.例如工业控制、仓库管理、银行、私人车库等领域.目前,在基于嵌入式移动图像监控的研究中对移动图像进行采集和处理,主要采用DSP、ARM及DSP和ARM组合.

本系统以高性能低功耗的ARM9芯片为处理器,Linux为系统,来实现移动图像的监控和传输.

1 系统总体方案设计

整个系统由图像采集模块、报警模块、传输模块、PC服务器等组成.系统以S3C2440为中央控制和数据处理中心,完成对移动图像的采集和传输、系统报警.传输到PC端后,PC自动将图像压缩并发到指定的邮箱.

2 硬件部分设计

本系统的微处理器选用三星公司ARM9内核的S3C2440[1]芯片,系统时钟采用400MHz的工作主频,最高可达533MHz.它集成有SDRAM、Nor-Flash及 NandFlash,外 设 有 RS-232 串 口、USB Host接口、IIC接口、IIS接口、以太网接口及下载引导程序的JTAG接口等.可以满足移动图像采集和传输的硬件需求.

本系统的主要硬件结构如图1所示.

图像采集模块使用中星微ZC301P[2]芯片的摄像头,ZC301P芯片最高支持VGA(Video Graphics Array)分辨率(640×480).在 VGA模式下速率可达到15帧/s,在 CIF(Common Intermediate Format)(352×288)和 SIF(Standard Image Format)(320×240)模式下速率可达到30帧/s.ZC301P芯片内部集成了JPEG压缩引擎、CMOS图像感光芯片和USB设备控制接口,通过它采集得到移动的图像,再通过USB接口传输到s3c2440中去处理.

图1 系统硬件结构图

报警模块使用飞利浦(Philips)公司生产的语音芯片 UDA1341[3],UDA1341提供了标准的IIS(Inter-IC Sound)接口,IIS总线是飞利浦公司为数字音频设备间传输音频数据而制定的一种总线标准.UDA1341可直接和S3C2440内置IIS总线控制器的引脚连接,该控制器是用来实现到外部一个8/16位立体声 Audio Codec IC的接口.

传输模块采用 DM9000[4]网卡芯片,DM9000是一款完全集成的,单芯片快速以太网MAC(数据链路层)控制器.它集成了一个一般处理接口,一个4K双字的SRAM和自适应的10/100MPHY(物理层)收发器.是为了使高性能和低功耗进程兼容3.3V和5V的输入输出电压.此外DM9000还支持介质无关接口,用来与家用电话线网络设备或其他收发器的质无关接口相连接.该DM9000网卡芯片为了支持不同的处理器接口访问内部存储器支持8、16和32位.100MBps下5类非屏蔽双绞线和10MBps下3类、4类、5类非屏蔽双绞线可以与DM9000网卡芯片的物理层接口连接.这是与IEEE 802.3u规格相符的.它有自动协调功能,可以自动完成配置以适合其线路带宽.还支持背压模式半双工流量控制模式及IEEE 802.3x全双工流量控制.

3 软件部分设计

移动图像监控系统的终端软件设计以开源的Linux为操作系统,Linux系统支持多种硬件平台,有良好的网络功能及丰富的设备驱动等特点[5].根据终端硬件设备及其应用的需要进行内核配置,裁剪出合适的内核.监控系统终端的应用软件是建立在硬件平台和Linux操作系统上的.

3.1 应用程序

制作好合适的系统移植到开发板后,移植Madplay用于报警模块中播放报警音乐.移植Madplay所需四个软件包分别为zlib-1.2.3.tar.gz,libmad-0.15.1b.tar.gz,libid3tag-0.15.1b.tar.gz和 madplay-0.15.2b.tar.gz.分别解压、编译安装后会生成可以在ARM开发板上运行的二进制文件madplay.

移动图像检测采用的是motion方案,在Linux系统下,视频设备的各种操作通过V4L(Video for Linux)实现.移动图像检测算法采用帧间差分法,其思想是将前后两帧图像逐像素求差值,计算改变点数.当改变点构成的区域占图像的比例大于某个值时认为有物体进入.应用程序运用V4L提供的接口函数实现设备的操作.motion中使用的API(Application Programming Interface)接口是 V4L.

修改配置文件motion.conf的主要配置选项:

daemon off //关掉daemon模式

locate on //将移动区域用矩形框起来

videodevice/dev/video0//设置加载USB摄像头的设备文件

width 320

height 240 //采集图像的大小

framerate 5 //摄像头每秒采集的帧数

quality 85 //图像压缩质量

threshold 5000//设置阀值,当两帧图像变化的像素点超过阀值时,则认为图像变化

threshold_tune off//使用阀值自动调节

ffmpeg_video_codec swf //视频编码器

jpeg_filename%v-%Y%m%d%H%M%S-%q//图像保存文件名的命名格式

snapshot_interval 0 //自动采集图片

target_dir/root/motion //图像保存路径

on_event_start/motion/appon//检测到移动时执行里面的文件

gap 5//检测到移动后5s没有移动就触发移动结束指令on_event_end

on_event_end/motion/appoff

//检测到移动后若连续5s检测不到移动则执行该文件

移动图像检测主程序流程如图2所示.

图2 程序流程图

判断是否有图像变化主要看pic.txt中的记录是1还是0.

pic_fd = open("pic.txt",O_RDWR|O_CREAT,0666);

lseek(pic_fd,0,SEEK_SET);

ret=read(pic_fd,pic_buf,1);

系统睡眠标志sleep_flag=1时系统睡眠.

报警标志play_flag=1时系统正在报警.

子进程创建孙子进程播放MP3报警,fd=fork();

if(fd==0)

//调用madplay播放器

execl("/motion/madplay","madplay",song_name,NULL);

#define THREE_ALARM 3*60

alarm(THREE_ALARM);//添加定时器

因为图片保存在/root/motion目录下,system("ls/root/motion|wc-l>count.txt");可以将统计图片的张数写入count.txt文件中,打开文件后从文件开始读取数据.

cnt_fd= open("count.txt",O_RDWR|O_CREAT,0666);

lseek(cnt_fd,0,SEEK_SET);

ret=read(cnt_fd,buf,10);

当图像变化时将全局变量con_cnt加1.

con_cnt++;

定时器时间到判断图像运动次数是否超过20次.

if(con_cnt>=20)

3.2 邮件系统

在pc端安装msmtp和mutt用于自动发邮件.msmtp是基于GPL发布,专门负责发送邮件的客户端软件.它有支持 DNS模式、TLS/SSL、IPv6、多用户、服务器端认证等特性.

编译和安装msmtp

mutt是Linux下的一个邮件客户端,基于GPL发布.它跟一般的 Windows邮件客户端不同,mutt是邮件用户代理(MUA),因此不可以单独使用来发送邮件.它需要结合邮件传输代理才能发邮件.

编译和安装mutt,由于pc上的Linux系统能用yum工具,直接用yum命令安装mutt.

#yum install mutt

安装完成后要手动建立一个配置文件,

#vi/etc/Muttrc

set sendmail = "/usr/local/msmtp/bin/msmtp" #msmtp命令路径

set use_from=yes

set realname="yangming.j@163.com"

set editor="vi"

保存退出.

通过一个shell脚本自动将图像压缩后发给指定的邮箱.用tar-cf motion.tar motion来压缩文件.用压缩文件的 MD5(Message-Digest Algorithm 5)值来判断文件夹中的图像是否变化,进而确定是否将压缩的图像发送邮件.用echo"motion"|mutt–s"picture"–a/root/motion.tar 76931006@qq.com来发邮件,最后用conrtab每5min执行这个脚本一次.

4 测试结果

当摄像头前的物体移动时,发出报警声,邮箱收到来自yangming.j@163.com的压缩文件(图3).

图3 邮件

解压后其中的一张图像见图4.

图4 图像

当定时器3min到图像运动次数超过20次,系统开始休眠.在串口终端的显示如图5所示.

图5 串口终端显示

5 结束语

本文设计了一种基于ARM的嵌入式移动图像监控系统,实现了对移动图像的检测和处理,系统报警及将采集的图片自动发送给指定的邮箱等功能,在实际运行中有良好的效果.

[1] 孙 弋.基于S3C2440的嵌入式Linux开发实例[M].西安:西安电子科技大学出版社,2010.

[2] 赵晓军.基于ARM的嵌入式无线视频监控系统[J].微型机与应用,1674-7720(2010)16-0054-03.

[3] 宋宝华.Linux设备驱动开发详解[M].北京:人民邮电出版社,2010.

[4] 韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2008.

[5] 孙 琼.嵌入式Linux应用程序开发详解[M].北京:人民邮电出版社,2006.

猜你喜欢
邮件嵌入式报警
基于James的院内邮件管理系统的实现
来自朋友的邮件
CMailServer
一封邮件引发的梅赛德斯反弹
LKD2-HS型列控中心驱采不一致报警处理
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
2015款奔驰E180车安全气囊报警
死于密室的租住者
奔驰E260车安全气囊报警