基于GPS和GPRS的小型追踪器
1 引 言
本文引用地址:http://www.amcfsurvey.com/article/79619.htm随着GPRS无线通讯、Internet网络以及民用领域GPS的普遍应用,将三者合一使用已成为当今热门的研究领域。
GPRS(General Packed Radio ServICe,通用分组无线业务)采用TCP/IP协议,非常容易和现有的Internet技术及应用平台整合,即将各种IP技术和服务同移动通信技术相结合,为用户提供各种高速度、高质量的移动数据通信业务。GPRS的移动通信、价格低廉、快速登陆、永远在线、组网灵活、信道保障、小功率防雷击等特点使得GPRS已逐渐取代GSM网络。
GPS(Global Positioning System,全球定位系统)除了更多地应用于高精尖端测量、测绘及导航领域外,也更多地推动了其在低成本、低精度的民用小型GPS设备领域的发展和使用。GPS收发机的主要任务就是捕获一定高度截止角所选择的待测卫星的信号,同时对接收到的GPS信号进行变换放大和处理,解译出GPS卫星所发送的导航电文,最终实时计算出该观测站的三维位置、三维速度和时间。
整个系统方案如图1所示,带有两个串口的微控制器一方面获取来自GPS接收模块的导航数据,另一方面将这些数据经过适当处理后转换为GPRS可以传送的数据,并通过网络送入控制中心,当用户需要获得相应的追踪数据时,通过网络访问即可。
2 总体方案
基于微控制器的GPS+GPRS系统,主要由以下几个部分组成:微控制器模块、GPS+GPRS模块、键盘及LCD显示屏等附件。其基本原理框图如图2所示。
MCU通过两个串口接收和发送信号到GPS和GPRS模块,MCU通过串口0中断接收GPS发出的状态信息(包括三维位置、三维速度、时间、航向等)并保存,经软件打包后通过串口1发送到GPRS模块。GPRS模块受MCU控制将此信号转换为射频信号GPRS网络并连接Internet网络。Internet用户通过连接相关网站,或手机用户通过编写指定格式的短信,发送消息给GPRS模块,GPRS模块通过串口1将信号送入MCU,MCU发出接受信号铃声并根据约定协议自动显示相应信息,键盘操作简单,可以方便地切换显示信息。
3 硬件选型
该系统在选型时,在满足使用要求的基础上,主要的选择目标是体积重量小、能耗低的产品以满足室外使用和便于老人小孩携带的要求。
3.1 MCU
MCU选用超低功耗型MSP430系列16位单片机MSP430F149,片内有丰富的外设,可实现异步、同步及多址访问的串行通信接口(USART0~1)以及液晶显示驱动模块,最多可达6×8条I/O线,工作电压为1.8~3.6 V。5种低功耗模式的体系结构,使得该微控制器在便携式测量等应用场合非常理想地延长了电池的使用寿命,省电模式下中断唤醒只需6 μs。
3.2 XT55 GPS+GPRS模块
XT55是Siemens推出的第一款也是目前的惟一一款集合了三频GSM/GPRS和GPS接收器的模块。预先配置的功能和超级紧凑的尺寸(体积53×34×5.1 mm3重11 g)使其十分易于集成在新的小巧型的应用设备中,节省了大量的时间和费用来做额外的硬件集成。可用于传输短信、语音、传真,用于数据传输时最大理论传输速率可达85.6 kb/s,缺省值为14.kb/s,工作电压为3.3~4.8 V,XT55内置GPS接收器,能决定其当前的位置、速度、航向。这些数据可以由MCU保存,也可以直接发送到一个操作中心。
4 系统构成
4.1 硬件设计
硬件设计上主要是MCU与XT55所集成的两个模块之间的串口连接。其中GPRS模块与微控制器之间的通信协议是AT命令集,除处理串口发送、串口接收之外,微控制器与GPRS模块之间还有一些硬件握手信号。
硬件连接完成后,在进行GPRS上网操作之前,首先要对GPRS模块进行一定的设置,主要的设置工作有:设置通信波特率,一般设置为19 200 b/s,无奇偶位,一位停止位;设置接入网关,通过AT+CGD CONT="1",“IP”,“CMNET”命令设置GPRS接入网关为移动梦网;设置移动终端的类别;测试GPRS服务是否开通。
4.2 软件设计
程序中所有代码都是由C语言编写的,并采用分层结构,从底往上分别为串口驱动层,网络设备驱动层、PPP协议层、uIP协议层、应用层。上层函数的实现需要应用到底层函数,最终完成应用层任务,即传送数据。
PPP(Point-to-Point Protocol)是为在同等单元之间传输数据包这样的简单链路而设计的,这种链路提供全双工操作,并按照顺序传送数据包,为基于各种主机、网桥和路由器的简单连接提供一种共通的解决方案。
PPP数据帧格式如下:
标志Flag:表示一个帧的开始和结束;
地址Address:标准的广播地址;
控制Control:用户数据采用无序帧方式传输;
协议Protocol:标志封装在帧的数据域中的协议类型,通过确定帧序列的结尾,为FCS域留出两个字节,便可确定数据域的结尾:0xC023为网络认证数据报;0xC021为链路控制数据;0x8021为网络控制数据;
帧检测序列FCS:差错控制。
4.2.1 uIP的体系结构
瑞典计算机科学研究所Adam Dunkels开发的uIP0.9是一种TCP/IP协议栈,资源占用少是他的设计特点,尤其适用于8/16位单片机。他去掉了许多全功能协议栈中不常用的功能,而保留通讯所必须的协议机制,其设计重点放在IP,ICMP和TCP协议的实现上,将这3个模块合为一个整体,而将UDP和ARP协议实现作为可选模块。uIP的体系结构如图3所示。
uIP处于网络通讯的中间层,上层协议在这里被称为应用程序,而下层硬件或固件被称为网络设备驱动。显然,uIP并不仅仅是针对以太网设计的,他具有媒体无关性。
4.2.2 uIP的设备驱动程序接口
uIP内部有两个函数直接需要底层设备驱动程序的支持:
一个是uip_input()。当设备驱动程序从网络层收到一个数据包时,要调用这个函数,设备驱动程序必须事先将数据包存放到uip_buf[],包长放到uip_len,然后交由uip_input()处理。当函数返回时,如果uip_len不为0,则表示有带外数据(如SYN,ACK等)要发送。当需要ARP支持时,还需要考虑更新ARP表或发出ARP请求和回应。
另一个需要驱动程序支持的函数是uip_periodic(conn)。这个函数用于uIP内核对各连接的定时轮循,因此需要一个硬件支持的定时程序周期性地用他轮循各连接,一般用于检查主机是否有数据要发送,如有,则构造IP包。
4.2.3 uIP的应用程序接口
为了将用户的应用程序挂接到uIP中,必须将宏UIP APPCALL()定义成实际的应用程序函数名,这样每当某个uIP事件发生时,内核就会调用该应用程序进行处理。如果要加入应用程序状态的话,必须将宏UIP_APPSTATE_SIZE定义成应用程序状态结构体的长度。在应用程序函数中,依靠uIP事件检测函数来决定处理的方法,另外可以通过判断当前连接的端口号来区分处理不同的连接。
5 结语
整个模块拨号上网只需3~5 s,平均上网速度已经达到33~36 kb/s。数据上传速度可以达到每秒2~2.5 kB,最高峰值可以达到8 kB,完全可靠地实现了短消息服务和一些文本信息传递。移动目标GPS数据、指令及相关应用情况下的报警数据均可通过GPRS网络传送到监控中心。该系统的便携性和方便使用的优点,也可应用到需要对移动物体进行远程监控和调度的领域中。
评论