一种基于MMS的低成本汽车安防系统设计与实现
1.引言
随着人民生活水平的不断提高,个人拥有汽车变得越来越普遍。但是,随之而来的车辆频繁被盗问题渐受关注。传统的汽车安防系统以全球卫星定位系统(以下简称GPS)为核心,这种技术最大的优势是可以定位被盗车辆所处的位置,可以远程控制车辆,但是无法获取图像声音信息不能了解车辆所处的环境,无法有效追捕犯罪嫌疑人。还有一些系统使用 GPRS实时传输图像数据,这种方案受网络带宽的限制严重,图像质量差,对处理器运算能力要求高,系统使用费用高。
针对上述问题,我们提出并设计了一种基于多媒体信息服务(Multimedia Message Service,以下简称MMS)——也就是人们常说的“彩信”汽车安防系统。该系统利用了中国移动的 MMS业务、短消息业务,无线网络覆盖面大,使用费用低廉,操控方法简单。图1所示为基于 MMS的汽车安防系统的应用框图,用户在远程通过短信控制本系统,系统通过在车辆内适当部位安装的摄像头、麦克风获得高质量的图像语音信息,制作成 MMS,通过我们专门针对低成本嵌入式系统研发的MMS发送程序将 MMS发送到用户的终端,从而使用户能更清晰地掌握车辆内外的状况。
2.系统结构
我们使用了如图2所示的硬件框架,本系统以S3C44B0处理器为核心:辅以2M NOR Flash存储引导程序、内核、ROM文件系统;16M NAND Flash承载YAFF文件系统,以弥补 NOR Flash空间不足无法容纳 PPPD、系统应用程序、无法保存系统配置信息的缺陷; 16M SDRAM运行代码、动态数据交换、RAM文件系统;UART0连接CWT2000 GPRS模块,用于收发与用户交互的短信,发送MMS到用户指定的终端; UART1连接C328 JPEG摄像头可以直接获取JPEG格式的高分辨率图像数据。
本系统的软件基于uCLinux操作系统内核版本 2.4.32,图3展示的是本系统的软件结构框图。图3中,内核空间的 MTD、UART驱动、TCP/IP、PPP等在编译内核时必须选择支持, PPPD/Chat拨号程序用于通过 GPRS模块登陆互连网。上述软件结构框图中部分模块在 uCLinux分发版中包含,因此本系统需要实现 JPEG采集、MMS制作、MMS发送、短信收发以及系统控制流程模块。接下来的章节将介绍各模块的实现技术。
3.软件设计
本节将重点介绍图3中的系统控制流程、 JPEG采集、 MMS制作以及 MMS发送模块。由于短信收发模块过于简单,且在许多资料中都有详细介绍,本文不再赘述。
3.1 系统控制流程系统控制流程模块负责对其它模块进行调用,对所有资源进行协调,实现系统设计的工作流程,满足良好的交互性、稳定性。
首先,系统需要初始化,如获取用户终端(手机)号码, MMS发送过程所需的MMS网关、端口、MMS中心地址,这些信息都保存在系统配置文件中,另外还需要初始化一些相关的数据结构。初始化之后系统进入到一个超级循环当中,随时准备接收来自用户终端的命令短信息。目前,命令短信息有两个,其中最重要的是“Get”命令,用以获取 MMS信息;还有一个“Set”命令用以设置用户终端号码,该命令由于流程图的尺寸问题在图 4中省略了。收到“Get”命令之后,系统依次调用JPEG采集模块、 MMS制作模块、GPRS拨号、MMS发送模块。这些模块的调用,除了MMS制作模块,都遵循一个基本原则,我们称之为三次尝试原则。如果某模块调用不成功,将重复三次,三次都失败,将发送错误报告短信到用户终端。比较特殊的是GPRS拨号,在3次拨号失败后将对GPRS模块进行复位,再尝试拨号。该原则符合无线通讯自身的特殊性,可以有效提高程序的效率和稳定性。另外有一点需要注意,在 GPRS状态下是无法发送短信的,因此,拨号登陆成功之后需要断开 GPRS连接才能发送短信。这也是为什么无论 MMS发送是否成功,都必须先断开 GPRS,再发送报错或成功报告短信的原因。
3.2 JPEG图像采集
JPEG图像采集模块通过串口控制 C328 JPEG摄像头直接获取 JPEG图像,这种选择大大降低了处理器的负担。关于该摄像头的硬件信息见参考文献 [1]。该软件模块大部分为顺序过程,后面的过程都建立在前一个过程正确执行的基础上。总体上可以分为三个步骤:初始化 S3C44B0串口、初始化摄像头、获取图像,详细过程如下:
1.初始化 S3C44B0串口,包括: O_RDWR | O_NOCTTY | O_NDELAY方式打开 UART1也就是“/dev/ttS1”[2],设置波特率 57600,8位数据位,1位停止位,无奇偶校验,读写超时设置为 1秒,初始化 jpeg_picture结构体:
struct jpeg_picture
{
int fd; //串口的文件描述符
unsigned char resolution; // 图像分辨率代码
long jpeglength; //图像长度24位表示
unsigned char *pjpeg; // 图像存储地址
};
1 JPEG摄像头,包括:发送 SYNC命令与摄像头建立连接,,发送 Initial命令设置输出 JPEG格式图像、分辨率 640X480,发送 Set Package Size命令设置数据包的大小为 512字节。
2 获取图像,包括:发送 Snapshot命令捕获图像快照并压缩,发送 Get Picture命令获取 Snapshot类型图像,接收 Data命令确认数据类型为 Snapshot以及图像数据大小,并为图像分配对应空间,之后开始接收数据包,每收到一个数据包后发送带有数据包 ID的 ACK命令给摄像头,直到最后一个数据包 ID为 F0F0,数据接收过程结束。
通讯协议采用一种如图 4的应答方式, ACK代表上一个命令或操作成功,NACK则说明失败,确保了通讯稳定。 C328定义的命令是统一的 6个字节长度,起始为固定的 0xAA,然后是命令字节,后 4个字节是与命令相关的参数字节。
3.3 MMS制作
MMS 可以包含静态图像、语音、动态图像等多种多媒体信息 [3 4]。图 5左侧为一个通用 MMS结构,由 MMS信息头、 MMS信息体构成。 MMS信息头包含如何从发送终端将数据发往接收终端的信息[5]。MMS信息体是 MMS的实质内容,可以由多个部分多种类型媒体。本系统中目前仅有 JPEG的图像数据,不需要支持所有格式的多媒体信息,因此可以实现针对多幅 JPEG图像的简化版 MMS制作模块。我们使用了最简化的 MMS信息头,包括:消息类型、事务 ID、版本号、From、To等,详情见表 1。
MMS 编码必须遵循无线会话协议( Wireless Session Protocol,以下简称 WSP)。WSP使用一种与 HTTP/1.1相同的语法描述数据的组织结构,具体可参考 RFC[2068]。HTTP/1.1使用 ASCII字符编码来传输数据,而 WSP为降低传输带宽,将 HTTP/1.1中的一些著名域对应的字符串定义为一个字节,并在对这些紧凑格式编码时加上 0x80,使著名域的编码大于 127(扩展 ASCII字符),从而将它们与普通 ASCII字符区别开。因此 MMS信息头的基本编码格式为:“域编码”+“内容”,详情请参考表 1。编码顺序如下:消息类型、事务 ID、版本号必须依次排在最前面,而 MMS信息体内容类型则应该排在 MMS信息头的最后。
①用字符串表示一个随机数。②国内格式为:长度 +“+86”+“11位手机号” +“/TYPE=PLMN.”
紧跟在 MMS信息头之后的就是 MMS信息体,图 5中所示这部分有:成员数量、成员(图像、文本、声音等)。成员数量是一个变长整形数。 MMS信息体的成员由:成员信息头、成员数据构成。我们的系统中仅有 JPEG图像,所以成员信息头可以编码为: 0x01,YYYY(JPEG图像大小,变长整数),0x9E。最后将 JPEG图像附在成员信息头之后即可完成 MMS制作。注意,由于图像的存储空间为动态分配,之后要将所占内存释放。
3.4 MMS发送
最后,系统使用了项目组针对嵌入式系统开发的 MMS发送简化过程来发送彩信。该简化过程分为三个步骤:建立连接、发送数据、断开连接[6],如图 6所示为发送数据简化过程的时序图。建立连接和断开连接的时序图与此类似,不在这里给出。在该简化过程的实现中,使用了一种直接构造 PDU进行发送的实现方法。协议数据单元( Protocol Data Unit,以下简称 PDU)为 MMS发送时各层所要增加的数据头,而这些数据头很多部分都固定。因此,通过直接发送 PDU的方法,可以避免构造完整无线应用协议栈( WAP),摆脱对多线程的依赖,以及无关操作所需的存储消耗,实现单线程、高效、高速、稳定的 MMS发送。
MMS发送的网络协议栈关系的简化过程仅仅需要嵌入式系统提供 UDP支持,能连接到 GPRS网络,即可发送 MMS到终端。
4.结论与展望
本系统目前已经通过了长沙、深圳、北京、上海等地的测试。项目充分利用了GPRS网络覆盖广泛,通讯质量稳定的特点,提出了一个简单方便的、稳定的、易于扩展的基于 MMS的安防系统框架,为提取犯罪嫌疑人的犯罪证据提供了一种新手段。该框架有较广泛的应用范围,可以为相关行业提供参考。
本文作者创新点:结合了短消息操作简单、彩信直观的特点,在低成本 ARM7平台实现了基于彩信的安防系统;在系统中使用一种直接 PDU构造方法实现了一个简化版的彩信发送过程,该过程实现简单,适合嵌入式系统。
评论
查看更多