基于GPS/3G技术的公交车远程监控系统设计
3 系统软件设计
目前常见的嵌入式操作系统主要有WinCE、Linux、Vxworks等几种。其中Linux操作系统的源码完全开放。由于其自身具有高效稳定、网络资源丰富、内核小、执行速度快,可移植性好等优点,被广泛应用于嵌入式系统领域。所以,选择嵌入式Linux操作系统作为本系统的软件开发平台。
在软件设计方面,首先需要在单片机和PC机之间建立交叉编译环境,用来编译引导程序和Linux内核。然后完成引导程序Bootloa der的移植;配置和编译Linux内核;制作根文件系统以及底层驱动程序。最后,通过编写上层应用程序完成图像采集、GPS信息采集、3G传输等功能。下面几节详细的介绍了几个主要程序的设计思想。
3.1 图像采集程序
在视频采集方面,本文采用的摄像头是网眼V2000,它是一款是以ov511为主控芯片的摄像头。选用它的原因是由于Linux内核自带ov511驱动,所以不用再自己编写摄像头的驱动程序,只需在定制内核的时候选中即可。为开发节省了时间。
当Linux系统正常启动后,插上V2000摄像头,如果成功加载驱动,将为摄像头在/dev/v41/目录下创建设备文件device0,上层应用程序即可通过此设备文件访问摄像头,实现拍摄图像的功能。嵌入式系统平台已搭建成功,要实现实时地获取图像,就需要利用V4L(Vidio For Linux)编程接口实现图像采集程序了。考虑到摄像头采集的640x480的RGB图像数据量较大,这里用图像压缩函数put_image_jpeg将图像转化为JPEG格式,这样存储时就减少了占用的NandFlash空间,同时通过3G网络回传监控中心时,也减少了传输费用和确保传送成功。
3.2 GPS解析程序
GPS接收机HOLUX的GR-87模块输出数据格式符合NMEA.183标准。NMEA.0183协议是由美国国家海洋电子协会制定的一种串行通信的数据协议,所有输入输出信息均为一行ASCII字符。它的一条消息称为语句(Sentence),每条语句都以"$"开始,以回车换行符(<CR><LF>)结束,中间是用逗号分隔的若干个域。
由于此GPS模块设置信息掉电丢失,在每次系统启动时均要对该GPS模块进行初始化。将模块设置成每秒钟输出一次GPS信息。系统启动后,模块接收GPS信息,然后解析出GPS信息,根据解析出来的经纬度信息与数据区中存储的站点信息比较,计算出实际距离。如果距离到达阀值时,启动GPS报站中断。该GPS模块接收模块遵循NMEA.0183协议,可以输出多种格式的数据帧,均以"MYM"开头。输出数据采用的是ASCII码字符,内容包含了纬度、经度、速度、日期、航向及卫星状况等信息。该系统所使用的仅限于$GPRMC定位数据帧格式。系统启动后,通过串口对GPS模块进行设置,由于系统对实时性要求不高,将GPS设置为每秒钟输出一次RMC数据。提取GPRMC语句的思路是设置一个数据缓冲区,把接收到的GPS数据都放入这个缓冲区,当缓冲区满了的时侯就在缓冲区中查找是否接受到GPRMC定位语句,如果没有接收到则重新接GPS数据。如果找到GPRMC定位语句则还要判断该语句在缓冲区中的位置离缓冲区的最大字节数是否大于62个字节(因为本程序中需要的GPRMC定位语句所包含的字节数为62),然后通过多程序提取相关经纬度、时间和速度等信息并通过数据处理线程进行相关处理。运行过程如图3所示。
3.3 3G模块解析程序
MC8630模块驱动可以通过驱动源码交叉编译生成。MC8630模块的加载和拨号连接的过MC8630模块驱动可以通过驱动源码交叉编译生成。MC8630模块的加载和拨号连接的过程如下:
1)在编译前首先要确认编译驱动和编译内核的编译环境相同,也就是需要相同版本号的交叉编译工具(本系统Linux版本号为2.6);
2)修改驱动源码Makefde文件,包括添加内核源码目录和编译工具;
3)Make编译之后,生成ztemt.ko;
4)insmod ztemt.ko,生成4个设备节点/dev/ttyUSB0-ttyUSB3;
5)mknod/dev/ttyUSB0 c 188 0,创建设备节点;
6)编写Linux下拨号脚本、chat配置文件和账号密码配置文件;
7)添加内核选项,编译支持PPP协议的内核;
8)pppd call evdo拨号连接,ifconfig查询网络是否连接;
9)ppp-off中断连接。
4 结束语
本系统设计的智能公交终端采用先进的3G/GPS技术,通过对公交车辆运行时的信息的采集、传输和处理,实现了对公交运营车辆的实时监控和调度,迅速调整公交车辆的运行状况,提高车辆工作的效率,使公交资源实现最佳利用和分配,达到公交的智能化。
智能公交终端 嵌入式Linux 3G/GPS技术 相关文章:
- 基于Qt的汽车BCM自动检测系统设计(07-13)