随着3G网络技术的快速发展以及3G手机各项功能的增强,使得利用3G手机实现随时随地的视频监控已成为可能。而嵌入式技术作为当今IT业的热门技术,各种嵌入式芯片如DSP,ARM,SOC等被广泛应用于数码、安防、交通信号采集、远程医疗等领域,可以预见未来便携式多功能的个人医疗数字服务终端会像手机一样普及,用户可以随时随地地将自己重要的生理信息实时、准确、快速地传送到远程医疗中心或家庭护理专家处,从而得到医生的专业建议和指导,实现远程医疗监护的应用。文献中的无线监控系统也用到ARM9芯片和WinCE操作系统,但对软件设计部分论述不清晰,文献论述的基于ARM的无线视频监控系统只介绍了简单的硬件结构和程序流程图,没有给出实验结果,文献只给出了仿真图,文献论述的基于3G的手机远程监控系统也只介绍了简单的系统框图和应用实例,并没有实验结果,文献均采用ARM9内核嵌入式芯片,且采用Linux操作系统,但是都没有实验验证,且主要论述的是Linux内核编译。本文设计一种基于ARM9芯片的3G手机嵌入式视频采集系统,该系统与参考文献所论述的视频采集系统相比,具有体积小、能耗低、更新维护方便、开发难度低等特点。
1 系统硬件结构
本系统的硬件平台实物如图1,鉴于系统的可靠性、可扩展性、可维护性,本系统采用模块化的设计原则,整个系统的视频采集系统硬件由3个部分构成。
图1 硬件平台实物
1.1 微系统核心模块
该模块是由嵌入式微处理器S3C2440A,NANDFALSH接口电路、SDRAM接口电路和总线接口电路组成。S3C2440是三星公司基于ARM920T内核的32位RISC微处理器芯片,为手持设备及一般类型的应用提供低价格、低功耗、高性能小型微控制器的解决方案。采用了新的总线架构AMB-A,其内核还实现了MMU,Harvard高速缓冲体系结构。另外其加强的ARM体系结构MMU支持WinCE,Linux和EPOC32等操作系统,支持ARM调制体系结构,支持从NAND FLAsH存储器启动。而且,它还集成了丰富的片上功能,如LCD控制器、UART接口、USB主从接口、I2C接口、CAM IF单元等。
SDRAM虽掉电不能保存数据,但它有非常高的读写速度,故适合主程序的运行。本系统采用2片32MB型号为HY57V561620的芯片级联构成64MB的SDRAM存储器,该芯片的内部存储结构是4Banks×4M×16b,共4个Bank。NAND FLASH存储系统采用三星公司的K9F1208U0M芯片,存储容量为64M×8b。核心模块与外设控制模块的接口连接由总线接口实现。
1.2 视频采集模块
该模块采用Micro2440开发板自带的CMOS摄像头接口,直接使用友善之臂提供的CAM130摄像头模块,该模块由一个130万像素的CMOS图像传感器OV9650及其接口电路、电源电路组成。选择CMOS传感器是因为它有集成度高、体积小、功耗低、编程方便、易于控制、成本低等优点,并且该类型的传感器正向低噪声和高灵敏度等方向发展,故CMOS传感器是目前低像素图像采集系统的最佳选择。接口电路将图像信号进行A/D转换和处理,传送到处理器的CAM IF。微系统核心模块通过I2C串行总线实现对传感器的控制。电源电路由电源转换芯片AS1117为摄像头提供1.8V和2.8V电压,其中2.8V电压是通过可调压芯片分压得到(即为图2中的VDD_CAM)。该模块的供电电压为3.3V,与微系统核心模块的供电电压是一致的,无需另外单独提供。
1.3 外设控制模块
该模块由LCD与触摸屏接口电路、JTAG调试接口电路、USB主从口电路、复位电路、电源电路、RS232串口电路等构成。LCD与触摸屏接口电路用于显示应用程序编写完成后采集的视频数据、接受用户的外部控制命令等,起到人机接口的作用。JATG调试接口提供硬件调试的功能,它遵循IEEE 11491标准,利用边界扫描技术,通过边界扫描链实现对芯片输入输出信号的观察控制。JATG在本系统中的一个重要功能就是将引导加载程序Bootloader烧写进开发板,用于进一步的内核加载。USB主口用于外接U盘、移动硬盘和鼠标等支持USB总线接口的设备,可以扩展存储空间。USB从口则用于向系统烧写WinCE内核文件以及系统与PC机之间的通信。复位电路采用既有电源监控和数据保护又有看门狗作用的专门复位芯片MAX811来保证系统出现异常时能可靠复位。RS232用于通过超级终端或DNW工具查看Bootloader程序启动的情况以及扩展串口通信功能。该处的电源电路提供5V(为整个系统提供外部电源)、3.3V(核心模块、外设控制、图像采集模块供电)和1.3V(核心模块供电)。
2 图像传感器接口电路与工作原理
摄像头使用的是CAM130模块,其中的图像传感器为OV9650,该部分原理图及接口电路如图2所示。
图2 CAM130模块原理图及OV9650接口电路
OV9650与处理器的接口包括SCCB(串行摄像机控制总线)接口、数据输出接口和控制接口等3部分。
SCCB接口起到传递处理器提供的初始化OV9650内部寄存器参数的作用,其数据线SIOD和时钟线SIOC,相当于I2C总线中的SDA与SCL。也就是说,SCCB起到I2C总线的作用。OV9650是I2C总线的从器件,S3C2440是对应的主器件。I2C总线采用串行方式从高位到低位传输字节数据,每个字节传输完后,主控制器将SDA置为高电平并释放,等待从设备发送确认信号。OV9650内嵌了一个10位A/D转换器,对应有10个数据输出口D[0:9]。输出图像数据的格式可以为10位原始RAW,RGB或经过内部DSP转换的8位RGB/YCbCr。本系统选择的微处理器芯片S3C2440的CAMIF单元支持8位的YUV/YCbCr格式,故需将OV9650的数据接口D[9:2]与CAM IF的数据口CAMDATA[7:0]相连接。OV9650的XVCLK用于接收CPU输出的24MHz的工作时钟。OV9650内部产生的帧同步信号VSYNC、行同步信号HREF、像素时钟信号PCLK等3个时钟信号传入ARM芯片中,用于控制图像采集。每一个VSYNC脉冲表示一帧图像数据采集的开始,HREF的高电平则表示采集一行图像数据,图像传感器按从左到右的顺序在每个PCLK脉冲过程中依次采集一个字节的数据,直到一帧图像数据全部采集完成。
3 3G图片传输流程
图片传输流程图如图3所示,3G手机向MINI2440开发板发送短信请求发照片,ARM9控制中心接收到信息,发送出文件名与文件大小,TCP服务器收到信息接收完图片并关闭窗口,同时向3G手机回馈图片已接收完毕的信息,接着3G手机向服务器发送请求接收照片,TCP服务器向3G手机发送图片数据,直到图片接收完毕,当接收完毕,3G手机向服务器反馈图片接收完毕。
图3 3G图片传输方案
有关Micro2440开发板发送图片及3G手机接收图片的部分程序如下所示:
4 应用软件设计及实验结果
操作系统与硬件平台间采用虚拟串口进行通信,EVC在实现串口数据通信中存在2个局限性:一是EVC不支持串口通信控件MScomm,另一个是WinCE不支持重叠I/O操作。因此,要采用WinCE的API函数和多线程技术进行数据串口通信的底层开发。Windows API函数将串口视为文件,对于串口的操作类似于对于普通文件的操作。在EVC环境中,通过调用CreateFile函数来打开串口,设置串口读写模式:
因为WinCE不支持重叠I/O,所以CreateFile的第6个参数不能设置为:FILE_FLAG_OVER_LAPPED,这里设置成通用常数“0”,否则串行通信处理将被系统信息阻塞。
打开串口以后,可以使用串口初始化函数SetCommState()来获取串口当前的配置,如串口号、波特率、奇偶校验、数据位、停止位等:
应用程序开发是在EVC集成开发环境中进行的。用EVC的AppWizard向导建立基于MFC的对话框程序架构,在进行页面布局“图像显示区域”、“初始化”、“接听”、“拨号”、“挂机”等按钮后,为各种按钮添加各种消息响应时间以及完成对各按钮进行的设置,以响应用户期待的命令。“初始化”按钮是进行3G网络的初始化。“接听”按钮就是响应3G手机发送给开发板的命令,“拨号”按钮所需进行的设置有对方号码、拨号时发送的消息以及服务器IP和端口号,设置完这些就可进行拨号等待响应了;“挂机”按钮实现退出应用程序和关闭摄像头驱动的功能。实现这些按钮的单击事件响应函数的添加是比较容易的,在EVC环境中直接双击按钮,进入代码编辑区就可进行编程调试。这里给出“初始化”和“拨号”按钮的部分代码,…后面为省略的部分。
系统应用软件开发完成之后,在3G手机应用程序中打开手机主控端软件,单击“初始化”按钮完成“拨号”前的设置,将信息发送给Mi-cro2440开发板,等待响应,顺利地采集图片并最终显示到3G手机上,图4为3G手机主控终端软件界面及图片显示结果。
图4 3G手机主控终端软件界面及图片显示结果
5 结语
该系统实现基于ARM9平台和WinCE操作系统,通过CMOS摄像头采集现场照片信息,然后通过WCDMA无线网络连接到万维网服务器,手机端设计出满足条件的软件,最终在3G手机上实现图片监控的功能。该系统具有实时性较好、成本较低、便于携带等优点,非常适合在安保、交通、手持设备、家电、学校巡防等方面的应用,它是实现视频监控部分的重要组成部分。目前只实现了图像的传输及在3G手机上的显示,视频部分的传输显示,由于时间原因,还暂时没有完成。下一步将采用合适的视频压缩编码算法如H.264,MPEG4编解码技术,实现视频监控功能。