2.1 功能描述
本系统旨在结合SOPC技术和无线通信技术(GPRS),实现一个具有监控和报警功能的能应用于多种场合(室内、仓库、车内等)的无线防盗监控系统,根据项目组成员对监控系统的市场需求调研、分析和实际设计的软硬件设施条件,本系统主要具有以下实用功能:
(1)现场查看
使用者通过手机向监控系统发送短信息(现场查看请求短信),系统收到短信息后,向使用者回复带有当前时刻现场图片与信息的彩信(MMS);
(2)现场监听
使用者通过手机或电话座机拨打监控系统号码,监控系统判断来电号码权限并自动接听,通过这种方式使用者可以听到现场声音;
(3)实时存储
监控系统开始工作后,不断采集现场图片并压缩数据,如果系统处于监控状态则只监控不存储图像;系统处于报警状态但没有发现异常状况时,每三分钟存储一幅图像到SD卡,发生异常时以最快速度存储图像。SD卡容量大、价格低,可以连续存储很长时间,而且由于我们在系统中实现了文件系统(FAT32)协议,所以SD卡取下后,可以方便地在PC机、PSP、手机、PDA等智能终端上查看图片;
(4)侦测报警
监控系统中集成了GPS和人体感应器件,可以在监控的同时实现智能侦测报警,当监控系统处于室内(住宅、仓库等)模式时,系统会根据图片间差异和人体感应信息进行判断,一旦出现意外情况则根据设置通过电话、短信、彩信、电子邮件等方式进行报警;当系统处于车内模式时,主要根据GPS信息(速度、位置等信息)和GPRS信息(基站信息)进行侦测,一旦判断出车被非法移动,则通过上述方式进行报警并不断报告GPS信息和基站信息以便实现跟踪;
(5)手动报警
如果出现紧急情况,如室内煤气泄露、户主在家被盗窃者威胁、车主在车上被挟持等情况,户主或车主可以通过一个隐蔽的按键进行手动报警;
(6)短信设置
为方便使用,系统的所有参数都可以通过短消息的方式进行设置,这些参数包括:用户管理(设置管理员,添加用户,删除用户,密码设置等),报警方式的切换以及监控模式的切换等;
(7)多监控模式
监控系统支持室内(静止)模式和车内(运动)模式,可以通过拨键或短信方便的切换模式。
为了实现2.1中所描述的功能,本系统的软硬件设计按功能主要划分为图像采集、图像压缩、数据存储、显示模块、GPRS模块、GPS模块和人体感应模块,各部分的基本设计原理如下:
(1)图像采集
图像传感器采用130万像素CMOS数字传感器MT9M011,传感器配置和图像采集模块采用VHDL来设计,以自定义模块的方式集成到SOPC中;
(2)图像压缩
考虑到图片压缩格式的通用性,在本系统中图片的压缩格式为JPG,YUV分量的抽样比例为4:1:1,量化因子可调;JPG压缩算法中的FDCT耗时较大(FDCT部分采用最快速的ANN算法后,速度仍不能满足实时性要求),在设计中拟采用自定义模块的方式进行加速处理;
(3)数据存储
本设计综合考虑成本、存储容量、通用性、使用方便性等因素,决定采用SD卡作为非易失性存储设备。要将压缩后的文件数据存至SD卡并在其他终端(PC机、PDA、MP3等)上方便地浏览查看,需要实现SD卡读写和文件系统两部分内容,其中SD卡读写通过用VHDL设计的SD卡控制器控制,可以实现SD卡数据的按扇区读写,文件系统(FAT32)在SD卡读写的基础上采用软件实现;
(4)显示模块
为了方便地在本地看到监控画面,系统采用320×240分辨率的真彩液晶屏作为显示设备,显示模块用硬件描述语言(VHDL)进行设计,不需要CPU参与控制,值得一提的是:液晶屏是可选设备,断开它与整个系统的连接不影响监控系统的正常工作;
(5)GPRS模块
GPRS无线通信模块通过通用RS232接口与开发板相连,主要完成短信息的收/发、彩信的发送、语音电话的接/打等;
(6)GPS模块和人体感应模块
GPS模块和人体感应器使用都比较简单,为了更好地贯彻SOPC的设计理念,在系统设计中采用自定义模块的方式驱动并使用GPS模块和人体感应器,在软件中只需要读指定的寄存器,就可以得到期望的信息。
为了使系统美观并便于携带,设计时将GPRS芯片、GPS芯片、摄像头和人体感应器集成到一块扩展板上。扩展板通过GPIO插槽与DE1开发板相连,使用简单,外形美观大方。
2.3 系统工作状态设计
本系统涉及五种工作状态,分别介绍如下:
室内监控状态:系统对室内环境进行监控,用户可以通过短信息请求彩信或短信,从而得知室内情况。
室内报警状态:系统对室内环境进行监控,如果发生异常情况,则向用户发送彩信、短信以通知用户室内情况异常。
车内监控状态:系统检测车的地理位置,用户可以通过短信息请求彩信或短信,从而得知车所在的地理位置。
车内报警状态:系统检测车的地理位置,如果车被非法移动,系统向用户发送彩信、短信以通知用户目前车所在的具体的地理位置。
紧急按键报警:紧急情况下,用户只需要按紧急报警键就可以实现紧急报警。
2.4 系统工作截图
手机作为本系统一个重要的终端,能够显示用户管理,系统给用户发送的短信,彩信等。图2.1是系统反馈的短信。
图2.1 系统反馈短信
图2.2分别显示了室内模式报警时系统发送给用户的短信和彩信。
图2.2 室内报警短信和彩信
图2.3显示了车内模式报警时系统发送给用户的彩信。
图2.3车内报警彩信
(Revision: 20 / 2009-09-13 11:08:28)
5.1 图像采集模块
图像采集是本系统通过图像判断是否有人非法进入的前提。本系统采用130万像素的CMOS摄像头。它可工作在多种模式下,本系统中配置成1280×1024模式,采用X2模式读取数据,进行一定的抽取之后读取到的数据为320×240×3。摄像头的RGB颜色分量分布是第0行GRGRGR……,第1行BGBGBG……,此后依次重复,如图5.1所示。读取数据时,取第0行的R分量和G分量,第一行的B分量,由此得到320×240的真彩图像。
图5.1 摄像头RGB分量分布
图像采集模块采用了如图5.2所示的设计方案。当模块没有工作时,整个模块处于初始状态。当CPU向模块写采集数据命令时,模块开始采集数据。它首先检测FRAME帧信号的下降沿,保证采集过程从一帧的起始位置开始,采集到一帧完整的图像。帧有效期间,进行行计数和像素计数,使模块在偶数行(0行为偶数行,第一行为奇数行)采集RG分量,并把它们拼接成16比特的数据存入数据位宽为16位的双口RAM中,便于CPU读写。奇数行的时候采集B分量,并在采集B分量的过程中,把双口RAM中的RG分量写入到SRAM,实现乒乓操作。B分量写入另外一个16比特位宽的双口RAM,数据采集RG分量时把B分量写入SRAM。如此反复,直到一帧数据采集完毕,模块进入数据读取状态。在数据读取状态下,CPU只能对模块进行读操作,对模块的所有写命令都会被忽略。CPU把所有的数据读取到内存后,要把R, G, B分量重新组合起来合成对应的像素。读取数据结束后重新回到初始状态,为下一次数据采集做准备。
图5.2 摄像头模块框图
5.2 人体传感模块
本系统在判断是否有人非法入侵时的一项重要判断标准就是人体传感器的感应信息。当室内或车内不应该有人出现,而人体传感器却感应到人的存在,系统就发送报警信息。系统所使用的人体传感器只有三根线,一根电源,一根地,一根信号线,控制极其简单。检测到人的存在时,该传感器信号可设置成两种形式,即方波或者高电平,本系统中传感器设置成方波。传感器一旦检测到人类活动,就置状态寄存器为有效状态。通过查询状态寄存器可知道是否有人活动。
5.3 SD卡模块
5.3.1 SD卡概述
SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。一片大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。
SD卡按照存储容量大致可以分为普通SD卡和SDHC卡两种,其支持的协议分别为SD1.1和SD2.0。SD1.1协议中规定地址偏移为字节偏移,所以其支持的最大容量是2^32=4GB,SD2.0将地址偏移改为扇区偏移(扇区固定大小为512字节),所以SD2.0支持的最大容量为2048GB,出于高性能和兼容性的考虑,本系统兼容两种SD协议,即系统会自动判断卡类型并选择不同的读写方式,无需手动指定卡类型。
5.3.2 SD卡工作时序和工作流程
SD卡的工作模式有SD和SPI两种,前者时序复杂,数据传输速率快,后者时序通用简单,但速度较慢,本系统所用的实验平台DE1只为SD卡连了4根线(数据线只有1根),只能工作在SPI模式,所以本系统中SD卡控制器的设计采用SPI方式,SD卡的工作流程如图5.3所示。
初始化之后进行的SD卡读写操作时序如图5.4,图5.5所示
图5.4 SD卡读时序
图5.5 SD卡写时序
SD卡的控制器由硬件实现。按照SD卡的基本工作时序和Avalon总线接口协议,用VHDL设计电路,使其能够兼容SD1.1和SD2.0协议(支持普通SD卡和高容量SDHC卡),再利用SOPC Builder工具集成到SOPC系统中,最终用C语句实现对SD卡的基础读写操作。
5.4 LCM显示模块
为便于观察摄像头采集到的数据,系统采用真彩液晶屏实时显示图像。本系统采用的真彩液晶屏分辨率为320X240,工作时钟为25MHz。数据在每个时钟的上升沿输出到液晶屏,组织方式为R,G,B。由此可得每行数据输出为960,一共240行。摄像头采集到的数据传送到液晶屏显示的过程如图5.6所示。
图5.6 摄像头和液晶屏的数据传送
摄像头的行,场,像素时钟,直接与液晶的行,场,像时钟相连接,由于摄像头被配置成1280X1024的skipX2模式,所以实际的像素点为320X256,当摄像头数据来到,而液晶的处于消隐期间,此时把摄像头的数据存入双口RAM中,在液晶需要数据时,再把对应的点的R,G,B数据送出到液晶。因为摄像头的帧频率为50Hz左右,而液晶的刷新频率要求为80Hz左右,所以把液晶的尾消隐延长,使液晶对数据的要求速率降低,这就意味着液晶一行的像素时钟要增加,下一行的摄像头数据来到时,液晶刚好需要数据。但在实际测试过程中,如果液晶一行的像素时钟大于2048时,液晶便不能正常显示,所以工程中一行的像素时钟设计为1770左右。
5.5 GPS模块
GPS是一块集成模块,在系统中用作车载模式下的汽车地理位置反馈装置。上电后它大约每一秒钟发回一帧数据,每帧数据包含几个协议,本设计中只用到两个协议,它们分别是$GPRMC,与$GPGGA.下面分别来对这两个协议进行说明。
例如$GPRMC协议信息为:$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,,*10
该协议均以逗号为分隔,$GPRMC为信息头,161229.487为时间信息,16点12分29秒487毫秒(在工程解析时,不需要毫秒),A标志此信息有效,如果为V则说明此信息为无效信息,3723.2475纬度,N标志为北纬,12158.3416为经度,W标志为西经,0.13为速度信息,309.62为航向,120598为日期98年5月12日。
$GPGGA 中若协议信息为:$GPGGA,161229.487,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M,,,0000*16
该协议同样以逗号为分隔, $GPGGA为信息头,161229.487为时间信息,3723.2475,N,12158.3416,W为经纬度信息,1说明是有效数据,07为卫星的个数,后面的9.0为海拔,M标志海拔的单位是米。
系统中用VHDL硬件描述语言解析GPS协议,分别解析了$GPRMC与$GPGGA。系统每接收一次上面两个协议就对其进行解析,并且更新寄存器,CPU可随时读取GPS信息。
5.6 GPRS模块
本系统的GPRS模块采用了iWOW公司的TR800。通过向模块发送AT指令,TR800可以实现短信的收发,电话的自动接听,和彩信的收发。TR800通过串口芯片RS232与FPGA进行通信。串口波特率为115200,数据位8位,无奇偶校验,1位停止位,无数据流控制。
对TR800的语音,短信和彩信都是通过AT指令来设置的,下面对语音,短信和彩信的设置做简要介绍。
5.6.1语音设置
根据系统需求,当房屋主人或车主要求监听室内或车内发生的情况时,TR800的语音部分要能自动接听,并调节语音增益使声音尽可能清晰。通过发送指令ATS0=2可以实现两声后自动接听;发送AT+ARXG=6,使语音输出增益等级为6,增益为0DB;发送AT+ATXG=5设置语音输出音量为5,发送AT+ATXG=20使语音输入增益为0DB。
5.6.2短信设置
TR800有两种工作模式,TEXT模式和PDU模式。TEXT模式只支持缺省的英文字母和数字,不支持汉字;PDU模式在TEXT的基础上支持汉字。由于本系统使用过程中要用到中文,所以TR800工作在PDU模式下。设置PDU模式是通过发送命令AT+CMGF=0实现的,若发送AT+CMGF=1将使TR800工作在TEXT模式下。此外,还要对TR800接收短信进行一定的设置。本系统中发送AT+CNMI=2,2,0,0,0,第一个参数和第五个参数取默认值,第2个2的含义是接受到短信时无提示,直接通过串口传送,不存储短信;第三个参数0表示没有CBM指示到TE;第4个参数0表示无短信报告。
下面以一个简单的例子说明发送短信的过程。例如要发送短信短信“你好”给号码13635466526。发送的步骤是:
1)发送AT+CMGS=19,19是要发送的信息的总长度(不含信息长度字节本身),算法是15+信息内容长度,单位为字节,一个汉字两个字节。其中15是一些参数设置的长度。
2)在“>”后输入0011000D91683136456625F6000801044F60597D(具体设置,BCD格式目标地址和要发送的短信的长度,内容等)
3)发送十六进制1A, 即Ctrl-Z
接收短信时,短息是有固定格式的,按照格式可以把短信的内容解析出来。例如接收到短信:+CMT: ,34
0891683108200305F0040D91683136456625F60008907091419511230E77ED4FE16
3A565366D4B8BD5002E
按照PDU格式的短信接收格式,短信的内容可以解析为:短信接收测试。短信中还含有短信来源地址,时间戳等内容。
5.6.3彩信设置
发送彩信时有几个必须设置的参数,例如接入点,代理网址,通讯模式等,这些参数的设置也是通过AT指令实现的。
1)基本配置
AT$MMSBEARER=1,"cmwap",, 设置接入点,1为默认值,"cmwap"是中国的接入点名称,后面两个参数是用户名和密码。其基本格式为AT$MMSBEARER=1,"","","
";
AT$MMSPROXY="10.0.0.172",80 设置代理或网址(IP),80为端口号;
AT$MMSCOMMMODE=2 设置MMS通讯模式为通过代理,若为 3 则直接通信
2)设置彩信编码方式
AT$MMSCS="UCS2" "DEF"为ASCII编码,"UCS2"为Unicode编码;
3)编辑彩信
AT$MMSW=0 复位发送彩信的各个参数;
AT$MMSW=1,1 设置目的号码或邮件地址,第二个一表示接下来要输入的号码有效,若为 0 则号码被忽略;
AT$MMSW=5,1,1设置彩信的内容。第二个参数是插入文本的页码,取 0 移除所有链接,1-10时把内容添加到对应的页码。第三个参数为 0 表示忽略所有内容,为 1 表示要设置彩信内容。
彩信收发过程中要用到Xmodem协议,所谓Xmodem协议指的是串口通信中广泛用到的一种异步文件传输协议。分为标准Xmodem和1k-Xmodem两种,前者以128字节块的形式传输数据,后者字节块为1k即1024字节,并且每个块都使用一个校验和过程来进行错误检测。在校验过程中如果接收方关于一个块的校验和与它在发送方的校验和相同时,接收方就向发送方发送一个确认字节 (ACK)。由于Xmodem需要对每个块都进行认可,这将导致性能有所下降,特别是延时比较长的场合,这种协议显得效率更低。
Xmodem协议的控制字符和帧结构如下图所示:
图5.7 Xmodem帧格式
按照Xmodem协议,如果传送的文件不是128的整数倍,那么最后一个数据包的有效内容肯定小于帧长,不足的部分用CTRL- Z(0x1A)来填充。
Xmodem传输由接收方启动,方法是向发送方发送"C"(CRC校验)或者NAK(累加和校验)。启动传输后,发送方以每次128字节的数据加上包头,包序号,包序号反码,末尾加上校验和,打包成帧格式传送。发送完一帧数据就等待对方的确认字节ACK。收到ACK表示数据已被正确接收,发送方可以进行下一帧传输;但如果收到了NAK,则表示接收方要求重传刚才发送的数据包;而收到CAN则表示接收方要求无条件停止传输。当所有数据发送完毕后,发送方要发送EOT字节通知接收方,接收方发送ACK确认。Xmodem传输的具体流程如图5.8所示。
图5.8 Xmodem传输流程
5.7 FAT32文件系统的实现
FAT32文件系统的FAT表有32位,共232簇,如果一簇32KB的话,FAT32可以支持高达2048GB的分区。如果FAT表常驻内存,那么它占用的内存资源将很大,同时对处理器造成很大压力。因此本系统工作时只是不断的新增文件或目录,而不对文件进行删除或修改操作。创建文件的流程如图5.9所示:
图5.9 FAT32系统中创建文件夹流程
FAT32文件系统采用浮动FDT,即没有专门的FDT区,FDT内容存在数据区。初始化为一簇,可存128个文件或目录。当根目录下超过128个时,则在FAT表中寻找空簇,然后将原来的FDT簇与新簇相连形成簇链,这样根目录的文件或目录数目不受限制,只要磁盘分区还有空间,就可以继续新建文件或目录。
采用以上方法设计后的SD卡结构如图5.10所示:
图5.10 SD卡结构
5.8 JPEG压缩编码的实现
5.8.1 JPEG压缩编码概述
JPEG(Joint Photographic Experts Group)标准有两种基本的压缩算法:以离散余弦变换(Discrete Cosine Transform,DCT)为基础的有损压缩算法和以预测为基础的无损压缩算法,本系统采用的是有损压缩算法。压缩比为25:1的情况下,非图像专家难以找出压缩后的图像与原始图像的区别。这在保证图像质量的同时去除了冗余信息,为系统的图像存储和传输节省了很多资源。
5.8.2 JPEG压缩处理流程
JPEG压缩处理流程如图5.11所示。
图5.11 JPEG压缩处理流程
根据压缩流程,首先要进行的是颜色空间的转换。颜色空间转换公式如式(1)所示。本系统中为加快运算速度,采用查表法设计,避免了大量的乘法运算,而用加法取而代之。
(1)
颜色空间转换完成后要进行抽样。根据人眼的视觉特性,可以降低UV分量的比例而不影响整个图像的视觉效果,因此系统设计时采用了Y: U: V =4: 1: 1的抽样比例。即每四组数据才抽样一次U分量和V分量。不压缩的时候,Y:U:V = 1: 1: 1,也就是YUV交替分布,压缩后每出现四个Y分量才取1个U分量和1个V分量。Y:U:V = 1: 1: 1和Y: U: V =4: 1: 1的抽样示意图如图5.12所示。
图5.12 YUV压缩比4:1:1与不压缩对比示意图
抽样后要进行DCT变换。如果直接按照离散余弦变换公式进行计算,程序的耗时会很大,难以满足系统实时性的要求。系统设计中的DCT采用了AAN算法,极大提高了运算速度。
本系统在变换后采用的量化为Z形扫描和量化,这样可以去除人眼不敏感的高频分量,保留低频分量。系统对直流系数和交流系数分别进行霍夫曼编码。至此,JPEG压缩算法全部完成。
5.9 手机端跟踪软件设计
跟踪软件是本系统的扩展部分,借助该设计,可以在Windows Mobile智能手机上将收到的短信中的GPS信息提取出来,并在Google静态地图上动态绘制标记点和路线,从而使监控或跟踪更加直观方便。该软件从功能上主要分为两部分,即拦截含有特定内容的短信(短信内容中包含GPS信息)和在Google静态地图上显示标记和行车路线,下面分别讲述。
5.9.1短信拦截
在Window Mobile系统中,信息相关功能由tmail.exe来负责,WMSDK的例程中有一个拦截特定内容短信并删除的实例,本设计中的短信拦截部分基于这个例程,在修改拦截内容和短信处理代码后,生成新的dll,然后再软件中调用该dll并修改注册表使系统具有拦截含GPS短信的功能。
5.9.2 Google地图显示标记与路线
Google地图按实现技术主要分三种:Google Earth、Google Maps和Google静态地图,其中Google Earth提供的接口为COM API接口,不能在WM系统中使用,而Google Maps提供的接口为JavaScript,WM系统中的IE浏览器对JavaScript支持很不完善,所以也不能使用,本设计中使用的方式是Google静态地图,拦截到GPS信息后,提取其中的经纬度信息,并根据经纬度在Google静态地图中显示路线,目前该部分已经实现,不过由于手机GPRS网络传输速度较慢,在实时跟踪时会出现延时。
5.10 Nios II系统构建
根据系统设计需求,在Nios II系统中添加的必要外设有:充当内存的SDRAM,串行芯片EPCS,固化程序的FLASH,调试用的串口JTAG,系统时钟,辅助时钟,一些按键,拨键,LED灯,以及自定义模块:SD卡,人体传感器,GPS模块,摄像头等。在SOPC Builder中构建的系统如图5.13所示。
图5.13 Nios II系统构建
5.11 系统任务设计与调度
本系统涉及到的模块较多,为简化设计,使用了uC/OS-II操作系统。根据系统工作需要,我们设计了六个任务:初始化任务,短信彩信回复任务,按键处理任务,短信接收及处理任务,GPS信息及人体传感器任务,图像采集及存储任务。
整个系统的运行以及各个任务的调度如下:
系统上电后,首先进行各个硬件模块的初始化,软件内各数据结构的初始化,如果初始化不成功,例如,SD卡没有插入,GPRS没有信号,摄像头没有安放到位等,则点亮对应的LED灯以提示系统初始化不成功,同时系统退出运行状态。初始化成功后也会点亮对应的LED以表示初始化成功。此后系统通过读取模式选择拨键是值获得用户要求的工作模式:室内模式或车内模式。初始化完毕,系统进入任务调度,任务5采集现场图像并压缩成JPEG格式。任务4隔一段特定时间,读取GPS模块信息,从而获得时间,日期,经度,纬度,海沷,速度等。如果GPS模块未能成功获得GPS信息,则通过GPRS读取基站信息。任务3对接收的短信进行处理,此时,用户可以通过发短信请求彩信或短信以获得现场情况,管理员用户还可以进行用户管理。任务1在用户要求彩信,短信时发送彩信,短信。对于合法用户的操作,系统都会发送短信以通知用户系统的响应情况,对于不合法用户的信息,系统将不做响应。监控状态下只进行监控,不报警。从监控状态到报警状态需要用户用短信启动。报警状态启动时,系统根据工作模式对现场进行监控。没有异常情况时,系统每3分钟存入一幅图片到SD卡中;当处于车内模式时,模块根据读取的GPS经度,纬度速度信息进行判断位置是否发生变化,如果变化,则说明异常情况发生,进行异常情况的报警,发送一条彩信,以后每30秒比较GPS信息,如果变化,则把当前的GPS经纬度速度信息以短信方式通知用户。这些信息在PC机上用Google Earth软件可以画出车辆移动的路线(如果没有GPS信息,则发送基站信息,提示用户当前车的大概位置),也可以在WM智能手机上利用我们设计的跟踪软件查看当前位置及行车路线。此时,任务5以最快的速度采集车内图像,压缩并将其存入到SD卡。用户可以在发生异常情况的时候,关闭报警,让其进入监控模式。当系统被设置于工作在室内报警状态时,系统不断监控环境。没有人出现时,系统以每3分钟的速度存储现场图像;当系统检测到人的存在,则表明发生了异常情况。此时系统首先发送一条包含现场图像的彩信,以后每30秒发送短信提示用户室内发生了异常情况,直到用户做出处理。任务5以最快速度采集压缩图像并存入SD卡中。同理,当用户做出处理后,可以发送短信息关闭报警,让其进入监控状态。
(Revision: 9 / 2009-09-13 11:31:05)