基于单片机的远程图像监控系统设计
2013-10-17齐连众喻武龙黄相杰
齐连众,喻武龙,黄相杰
(北京理工大学珠海学院信息学院,广东 珠海 519085)
0 引言
目前,随着通信网络的普及以及日趋完善的城市覆盖面积,使远程监控民用化成为可能。研发性能优良的远程监控系统是非常具有市场价值的。远程监控系统的构建是计算机控制技术、通信技术和传感器技术的综合应用,通过采用基于GPRS网络的远程监控系统,用户只需使用支持GPRS业务的手机或互联网,即可实现远程实时监控。GPRS具有资源利用率高、传输速率高、接入时间短等特点。在远程突发性数据实时传输中更是具有不可比拟的优势,特别适合于间断的、突发性的或频繁的小量数据的实时终端传输,或偶发性大数据量的传输。
GPRS有效地解决了在远程图像传输及GPS远程监控系统中可能遇到的一系列问题,由于GPRS数据通信是按收发数据量计费,而不是按收发时间长短计费,所以客户可以“永远在线”并可节省费用。实现了对下位机终端的全程、实时监控[3]。
1 硬件结构
1.1 系统总体结构
远程监控终端(下位机)主要由MCU、图像采集模块、GPRS模块、GPS模块、红外监测模块、外部储存器等部件组成。外部EEPROM通过SPI串口连接MCU,用于系统引导程序装载,参数和图像数据等的保存。系统的工作过程为:上电或复位后,系统自动将EEPROM中的程序下载到MCU中,然后开始执行程序。通过AVR单片机控制GPRS模块、GPS模块,利用移动SIM卡拨号通过GPRS网络实现数据的无线远程传输,监控中心(上位机)对收到的信息进行处理,同时监控中心也可通过GPRS网络对监控终端(下位机)进行远程控制。系统结构如图1所示。
图1 系统结构图
1.2 图像传感器
图像捕获单元采用GXT-M201串口JPEG彩色摄像模组,由图像传感器、OV528 IC及EEPROM三部分组成,支持不同分辨率可变JPEG编码质量设置。当捕获图像后,通过JPEG算法压缩图像并将数据通过I2C总线存入EEPROM中,等待MCU对其调用。
图像传输时序如图2所示,RS-232单字节传送有1个起始位,8个数据位和1个停止位组成。起始位固定为0,停止位固定为1。低位随起始位后面先传送。
图2 RS-232单字节时序图
指令字时序如图3所示,以同步指令(AA0D00000000h)为例,1个指令由6个连续的单字节组成。
图3 RS-232同步指令时序图
1.3 GPRS 模块
GPRS模块选用BenQ M22,支持GPRS CLASS4,即下行速 42.8kbps,上行速度 21.4kbps。连接为半串口形式与MCU通信。该模块内置TCP/IP协议,省去了外部繁琐的编程;集成了标准的RS232接口以及SIM卡,采用AT指令集通过串口对它进行设置[4]。
在应用设计中,当MCU需要通过串口与模块进行通讯时,可以只用3个引脚:TXD,RXD和GND。但当需要通过模块上网时,应该尽量使用全部的串口信号引脚,包括:DTR,RTS,DCD,CTS,DCD,TXD,RXD,RI,GND。其中RI变化是表示有来电呼入,可以连到MCU的中断引脚,或者连到MCU的其他输入引脚供MCU查询其状态。另外,MCU可以利用DTR信号,使模块工作在Slow Clocking模式。在此模式下,模块的13MHz晶振会周期性的停振以省电,而32.768kHz的晶振正常工作,从而保证了正确日历时钟。要使模块进入 Slow Clocking模式,MCU拉高DTR,即由“ON”变为“OFF”就可以了,此时模块的工作电流为4mA。要退出Slow Clocking模式,MCU拉低DTR,即由“OFF”变为“ON”,等待4ms后,模块就会进入正常工作模式。
1.4 GPS 模块
应用HOLUX GR-87 GPS模块对下位机的位置状态信息进行采集。AVR单片机通过串口接收GPS信息,可以提取经度、纬度、速度、时间等数据。一方面,下位机终端通过数据接口为导航系统提供GPS数据;另一方面,将数据储存在外部存储器中或通过GPRS模块发送到远程监控中心服务器,使得监控中心能实时得到所有下位机的位置状态信息。
2 软件设计
2.1 GPS 信息获取
GPS数据采用中断方式接收,首先是通过串行口发送控制命令完成GPS采样周期的设置、GPS输出数据选择、通讯波特率设置等。然后通过串行口接收GPS定位信息。这里GPS输出数据采用NMEA-0183(Ver2.0)格式,输出数据为多组,在本系统中,选取其中一组GPRMC数据即可满足设计要求。MCU对所接收的GPS信息进行解析,获得经度、纬度、速度、方向、时间等数据,存入缓冲区,等待对其调用。
初始化格式:$PGRMI$GPALM、<1>、<2>、<3>、<4>、<5>、<6>、*hh<CR> <LF>
<1>纬度ddmm.mmm格式(初始化必须被写入)
<3>经度ddmm.mmm格式(初始化必须被写入)
<5>当前UTC日期,kkmm yy格式
<6>当前UTC时间hhmm ss格式
位置信息格式:$GPGGA、<1>、<2>、<3>、<4>、<5>、<6>、<7>、<8>、<9>、M,<11>、<12>*hh<CR><LF>
<2>经度dd mm mmmm格式(非0)
<4>纬度ddd mm mmmm格式(非0)
<6>GPS状态批示0—未定位1—无差分定位信息 2—带差分定位信息
<8>精度百分比
<9>海平面高度
<10>*大地随球面相对海平面的高度
<11>差分GPS信息
2.2 GPRS 数据处理
系统启动时自动执行存放在EEPROM中的预设AT指令程序(可通过超级终端进行预设)以初始化车载终端与监控中心的TCP/IP通信。
AT+IPR=<rate>;//改变通信速率后会自动写到模块的NVRAM中,支持掉电保存功能。本文设置为115200。
AT#APNSERV=“CMNET”;//设置 GPRS接入点
AT# ConnectionStart;//连接 GPRS网登录Internet,成功返回动态分配的IP地址
AT# TCPSERV=“10.0.123.245”//设置服务器 IP 地址,即监控中心的IP地址
AT# TCPPORT=“6000”//设置服务器与单片机通信的Socket端口
AT# otcp://打开与远程服务器的TCP连接
需要说明的是,首先由终端设备发出主动连接申请信息,而后远程监控中心接收并识别设备ID号,返回响应信息,成功连接后,由终端设备定时向监控中心服务器发送连接请求,保持设备始终在线。这样,就可以随时地向终端发送控制命令,如拍照、获取GPS信息或控制继电器工作等。
TCP连接成功后,进入数据传输状态,这时监听MCU(下位机)与监控中心(上位机)发送的指令,通过串口向GPRS模块发送图像数据和 GPS数据,GPRS模块通过Socket将数据发送到监控中心,与此同时监控中心返回应答。数据传完后图像处理模块向GPRS模块发送终止字符<ETX>,GPRS Modem又回到AT指令接收状态。考虑到GPRS模块内嵌的TCP/IP协议栈的缓存区是有限的,若串口写入速率高于GPRS传输速率,部分数据将会被新写入的数据覆盖掉,造成传输数据丢失。为避免此种情况的发生,设计中采用数据分包法控制数据流,数据包的大小设置为960字节。监控中心服务器接收完一个数据包后返回应答帧,GPRS模块再发送下一个数据包。若超时未返回应答帧,则重新发送此数据包。这样有效地避免了丢包,保证了图像等大量信息传输的稳定性。其封包形式与程序流程图如图4和图5所示。
图4 封包形式
图5 流程图
监控中心通过网络接收或发送TCP协议的IP包,实现与MCU终端的通讯。采用Visual C++实现Socket编程,创建监控中心服务器。接收MCU终端的实时图像信息及GPS定位信息,并将GPS数据导入第三方电子地图导航软件。对MCU终端的状态,运行状况进行实时监视、控制等,为用户提供位置查询、电子地图服务、图像信息获取及远程控制。
3 实验测试
临控中心界面如图6所示。
图6 监控中心界面
测试数据结果如表1所示。
表1 测试数据结果
测试结果与当地移动信号质量有关,该测试数据是在本市测试多个点的平均值。
4 结束语
本文的远程监控系统采用了GPRS通信技术,抛弃了传统的独占电路交换模式,采用分组交换技术,每个用户可同时占用多个无线信道,同一无线信道又可以由多个用户共享,有效地利用了信道资源,而且覆盖率极广,因此非常适合对多终端监控的需要。监控信息可发至互联网监控中心,亦可发至用户的手机等移动终端。采用AVR单片机实现对监控终端的控制,利用较低的成本整合了通信与控制功能。集监控、定位、信息存储及远程传输于一体,有效地解决了远程监控系统中可能遇到的一系列问题。具有成本低、硬件结构简单、运行稳定可靠、传输速度快、开发周期短等优点。
[1]胡志坤.Visual C++通信编程工程实例精解[M].北京:机械工业出版社,2007.
[2]王正军.Visual C++6.0程序设计从入门到精通[M].北京:人民邮电出版社,2006.
[3]Sergio Scaglia.嵌入式 Internet TCP/IP基础、实现及应用[M].潘琢金,徐蕾,拱长青,等译.北京:北京航空航天大学出版社,2008.
[4]包东智.通用分组无线交换业务[J].现代通信,2001(6):20-23.
[5]吴志华,申功勋,唐李征,等.嵌入式GPS由GPRS接入Internet的实现[J].微计算机信息,2007,23(3):256-258.
[6]王磊,冯占军.基于GPRS网络的嵌入式无线数据采集系统设计[J].测控技术,2007,26(9):17-19.
[7]廖嘉,周兴斌.基于ARM9的嵌入式GPRS的设计与实现[J].计算机与现代化,2009(2):129-131.
[8]黄承安,张跃,云怀中.基于GPRS的远程仪表监控系统[J].电测与仪表,2003,40(8):42-45.
[9]李项根,陈军,吴朝晖.基于ARM-Linux的车载信息平台的研制[J].浙江大学学报:工学版,2006,40(9):1531-1535.
[10]靳晶,胡盛祥,胡平.基于GPS/GPRS车载终端的研究与开发[J].微计算机信息,2006,22(9):284-286.
[11]张正桓,张其善.基于GPRS的车载信息平台的研制与关键技术[J].北京航空航天大学学报,2005,31(1):98-101.
[12]Fredriksson L B,Kvaser A B Kinnahult.CAN for critical embedded automotive networks[J].IEEE Microsystem,2002,22(4):28-35.
[13]王松宏,李德华.基于GPRS的车辆监控系统车载移动终端的设计[J].计算机应用研究,2005,22(6):184-186.
[14]Yang Bo,Xu Cheng,Li Renfa.The design of CAN device driver in embedded Linux operating system[J].Science Technology and Engineering,2004,12(4):1019-1023.