基于3G手机的视频监控系统设计与实现
V( 为整个系统提供外部电源) 、3. 3 V( 核心模块、外设控制、图像采集模块供电) 和1. 3 V( 核心模块供电) 。
2 图像传感器接口电路与工作原理
摄像头使用的是CAM130 模块, 其中的图像传感器为OV9650, 该部分原理图及接口电路如图2 所示。
图2 CAM130 模块原理图及OV9650 接口电路
OV9650 与处理器的接口包括SCCB( 串行摄像机控制总线) 接口、数据输出接口和控制接口等3 部分。
SCCB 接口起到传递处理器提供的初始化OV9650内部寄存器参数的作用, 其数据线SIOD 和时钟线SI-OC, 相当于I2C 总线中的SDA 与SCL。也就是说, SC-CB 起到I2C 总线的作用。OV9650 是I2C 总线的从器件, S3C2440 是对应的主器件。I2 C 总线采用串行方式从高位到低位传输字节数据, 每个字节传输完后, 主控制器将SDA 置为高电平并释放, 等待从设备发送确认信号。OV9650 内嵌了一个10 位A/ D 转换器, 对应有10 个数据输出口D[ 0: 9] 。输出图像数据的格式可以为10 位原始RAW, RGB 或经过内部DSP 转换的8 位RGB/ YCbCr。本系统选择的微处理器芯片S3C2440的CAM IF 单元支持8 位的YU V/ YCbCr 格式, 故需将OV9650 的数据接口D[ 9: 2] 与CAM IF 的数据口CAMDAT A[ 7: 0] 相连接。OV9650 的XVCLK 用于接收CPU 输出的24 MHz 的工作时钟。OV9650 内部产生的帧同步信号VSYNC、行同步信号HREF、像素时钟信号PCLK 等3 个时钟信号传入ARM 芯片中, 用于控制图像采集。每一个VSYN C 脉冲表示一帧图像数据采集的开始, HREF 的高电平则表示采集一行图像数据, 图像传感器按从左到右的顺序在每个PCLK脉冲过程中依次采集一个字节的数据, 直到一帧图像数据全部采集完成。
3 3G图片传输流程
图片传输流程图如图3 所示, 3G 手机向MINI2440开发板发送短信请求发照片, ARM9 控制中心接收到信息,发送出文件名与文件大小, TCP 服务器收到信息接收完图片并关闭窗口, 同时向3G 手机回馈图片已接收完毕的信息, 接着3G 手机向服务器发送请求接收照片, T CP 服务器向3G 手机发送图片数据, 直到图片接收完毕, 当接收完毕, 3G 手机向服务器反馈图片接收完毕。
图3 3G 图片传输方案
有关Micro2440 开发板发送图片及3G 手机接收图片的部分程序如下所示:
/ / TCP 监听
UINT ListenT hread( vo id * p)
{
/ / 准备接收请求
CGSMW_CameraDlg * pDlg = ( CGSMW_CameraDlg* ) p;
SOCKET s= pDlg??> m_hSo cket;
CStr ing strFileName = temp; / / 得到文件名
st rcpy( temp, buffer + i+ 1) ;
lo ng lFileSize = ato l( temp) ; / / 得到文件大小;
st rFilePath= “ \ 123ARM\ ”+ strFileName; / / 进度条操作,接收并保存文件
CFile file( strFilePath, CFile: : modeCreate | CFile: : mode??Write) ;
long iTemp = 0;
while ( 1)
{
rcv = r ecv ( s, buffer, 1024, 0) ;
if ( rcv = = 0)
{
break;
}
file. Wr ite( buffer, rcv) ;
iTemp + = rcv ;
}
file. Close( ) ;
send( s, “ [ ! %] ” , 4, 0) ; / / 发送接收文件结束请求
int ret1= send( pDlg> m_hSo cket, buffer, iSize, 0) ;
/ / 发送文件的名称和大小
/ / 发送文件
if ( iEnd= = SOCKET_Error)
{
strError. Format( _T( “ Send File: %d”) , er ro r= WSAGetLast Error( ) ) ;
AfxM essag eBox ( strErr or) ;
break;
}
iT mp + = iEnd;
pDlg> m_pro gr ess. Set Pos( iTmp) ;
Sleep( 10) ;
/ / 判断发送是否成功、结束处理
if ( iTmp = = lFileSize)
{
}
CSt ring st rTemp= “发送文件结束” ;
/ / 回复对方接收完毕
pDlg> SendMessag e( NULL, NULL) ;
pDlg> m_cState. SetWindowTex t( st rTemp) ;
/ / shutdow n( ) ;
ExitThread( 0) ;
return 0;
4 应用软件设计及实验结果
操作系统与硬件平台间采用虚拟串口进行通信,EVC 在实现串口数据通信中存在2 个局限性: 一是EVC 不支持串口通信控件MScomm, 另一个是WinCE不支持重叠I/ O 操作。因此, 要采用WinCE 的API 函数和多线程技术进行数据串口通信的底层开发[ 10] 。
Window s API 函数将串口视为文件, 对于串口的操作类似于对于普通文件的操作。在EVC 环境中, 通过调用CreateFile 函数来打开串口, 设置串口读写模式:
H ANDLE m _ hComm = Cr eateFile ( szPor t, GENERIC _READ| GENERIC _WRIT E, 0, NULL, OPEN _ EXISTING, 0,NULL) ;因为WinCE 不支持重叠I/ O, 所以CreateFile 的第6 个参数
- 3G手机的电源管理趋势(10-14)
- 一款用于视频监控摄像头的简单高效的LED驱动器(10-16)
- 视频监控系统防雷保护解决方案(05-23)
- S3C2440A嵌入式手持终端电源管理系统设计(01-11)
- 用于低功耗SoC设计的自适应电压调节技术(07-28)
- 基于TPS6211X的FPGA高效电源设计(08-09)