利用CDMA业务传送GPS定位信息
电子发烧友
摘要:本文讨论的就是利用CDMA业务传送GPS定位信息的实例。当然,GPS定位信息只是整个信息传输管理系统的一个应用,通过更换不同的数据源模块可实现不同的信息传输,从而构成不同的信息传输管理系统,如远程抄表系统、水文数据采集系统等等。
Abstract:
Key words :
本文讨论的就是利用CDMA业务传送GPS定位信息的实例。当然,GPS定位信息只是整个信息传输管理系统的一个应用,通过更换不同的数据源模块可实现不同的信息传输,从而构成不同的信息传输管理系统,如远程抄表系统、水文数据采集系统等等。
1 系统构成
如图1所示,整个信息传输管理系统由移动终端、CDMA网络、Internet网、信息管理中心服务器组成。
移动终端将GPS数据组成CDMA数据分组,通过CDMA网络和Internet网,上传到信息管理中心服务器。服务器应当具备IP地址和电子地图。
信息管理中心也可以通过Internet网和CDMA网络向移动终端发出各种指令。
图1基于CDMA的无线移动数据传输系统
2 移动终端硬件组成
移动终端的硬件部分主要有CDMA Modem模块、GPS模块、MCU及电源四部分,连接关系如图2所示。
2 移动终端硬件组成
移动终端的硬件部分主要有CDMA Modem模块、GPS模块、MCU及电源四部分,连接关系如图2所示。
图2 移动终端硬件组成
其中的CDMA模块为Wavcom公司的ME45。这是一个具有完整功能的CDMA移动通信模块,通过串口可以实现对此模块的控制和数据传输,包括 短信和无线上网等。另外加上模拟部分电路,可实现话音通信功能。对ME45的控制用的是AT命令方式。
GPS模块是台湾Holux公司的GM82 OEM板。它通过外接天线接收GPS信号,计算出所处位置的地理信息,通过串口将此信息传送给MCU。
MCU采用新华龙公司代理的C8051F020八位微控制器。选择此MCU是基于诸多考虑的:首先,是功能强大,几乎在单片中包容了所有常用的功能;其次,与普通的8051有相同的内核,开发容易,而且支持C语言源程序调试。
在此移动终端中,采用了如下一些必需的功能部件:
首先是它的两个硬件串口。这两个串口的波特率产生是独立的,而且不占用芯片的定时器,使用起来相当灵活。这两个串口分别对GPS模块和CDMA模块通信。GPS模块把位置信息以固定的格式从串口发出,MCU接收GPS模块送来的数据,解析出其中有用的数据进行封装,然后以规定的格式通过第2个串口交给CDMA模块,将数据送上Internet网。
其次,128字节的Flash可用于存放一些可设置的参数,如移动终端的识别号或IP地址、信息管理中心服务器的IP地址等。
再次,4 KB的SRAM相对其他的8位机来讲是相当大了,可以满足组帧、数据缓冲的要求。
64 KB的Flash可以满足较大程序量的要求。
64 KB的Flash和4 KB RAM的组合可以完成对信息数据的加解密工作,可提供某些特定场合使用。
引出了某些I/O口,通过光电耦合器隔离后引至其他监测点,可以扩展相应的功能。
另外,留出了总线扩展口,可扩展64 KB的SRAM,一方面可以用于嵌入实时操作系统,另一方面可以用于使用C8051F020的在线自我编程功能来远程更新程序。
由于用于移动设备,需要低功耗器件,而C8051F020工作电压为3.3 V,功耗很小。
设计时考虑该移动终端主要作为车载应用,所以实际电路中设计了从点烟器取电的电源电路。
移动终端利用C8051F020芯片控制实现,不用另行扩展串口、ROM以及RAM。此硬件结构并不仅仅局限在定位功能上,对于很多数据采集/控制应用也可以满足要求,只需改变程序结构。正是由于C8051F020的功能强大,使得硬件的组成和结构都变得非常简单。
3 移动终端软件设计
由于采用了C8051F020作控制器,使得硬件的工作相对简单和通用,所以该系统实现的主要工作集中在软件的实现上。
利用GPRS上网主要的问题是,在系统接入无线Internet网时进行初始化和对链路的控制。若对通信过程和协议不熟悉,则做起来很麻烦;现在已有许多MCU或GPRS Modem已将这些功能嵌入到操作系统中。对CDMA上网,则比较简单,通过拨通服务商的特定号码即可。
其中的CDMA模块为Wavcom公司的ME45。这是一个具有完整功能的CDMA移动通信模块,通过串口可以实现对此模块的控制和数据传输,包括 短信和无线上网等。另外加上模拟部分电路,可实现话音通信功能。对ME45的控制用的是AT命令方式。
GPS模块是台湾Holux公司的GM82 OEM板。它通过外接天线接收GPS信号,计算出所处位置的地理信息,通过串口将此信息传送给MCU。
MCU采用新华龙公司代理的C8051F020八位微控制器。选择此MCU是基于诸多考虑的:首先,是功能强大,几乎在单片中包容了所有常用的功能;其次,与普通的8051有相同的内核,开发容易,而且支持C语言源程序调试。
在此移动终端中,采用了如下一些必需的功能部件:
首先是它的两个硬件串口。这两个串口的波特率产生是独立的,而且不占用芯片的定时器,使用起来相当灵活。这两个串口分别对GPS模块和CDMA模块通信。GPS模块把位置信息以固定的格式从串口发出,MCU接收GPS模块送来的数据,解析出其中有用的数据进行封装,然后以规定的格式通过第2个串口交给CDMA模块,将数据送上Internet网。
其次,128字节的Flash可用于存放一些可设置的参数,如移动终端的识别号或IP地址、信息管理中心服务器的IP地址等。
再次,4 KB的SRAM相对其他的8位机来讲是相当大了,可以满足组帧、数据缓冲的要求。
64 KB的Flash可以满足较大程序量的要求。
64 KB的Flash和4 KB RAM的组合可以完成对信息数据的加解密工作,可提供某些特定场合使用。
引出了某些I/O口,通过光电耦合器隔离后引至其他监测点,可以扩展相应的功能。
另外,留出了总线扩展口,可扩展64 KB的SRAM,一方面可以用于嵌入实时操作系统,另一方面可以用于使用C8051F020的在线自我编程功能来远程更新程序。
由于用于移动设备,需要低功耗器件,而C8051F020工作电压为3.3 V,功耗很小。
设计时考虑该移动终端主要作为车载应用,所以实际电路中设计了从点烟器取电的电源电路。
移动终端利用C8051F020芯片控制实现,不用另行扩展串口、ROM以及RAM。此硬件结构并不仅仅局限在定位功能上,对于很多数据采集/控制应用也可以满足要求,只需改变程序结构。正是由于C8051F020的功能强大,使得硬件的组成和结构都变得非常简单。
3 移动终端软件设计
由于采用了C8051F020作控制器,使得硬件的工作相对简单和通用,所以该系统实现的主要工作集中在软件的实现上。
利用GPRS上网主要的问题是,在系统接入无线Internet网时进行初始化和对链路的控制。若对通信过程和协议不熟悉,则做起来很麻烦;现在已有许多MCU或GPRS Modem已将这些功能嵌入到操作系统中。对CDMA上网,则比较简单,通过拨通服务商的特定号码即可。
利用CDMA模块进行数据传输,既可以采用上网传输,也可以采用短消息的方法。下面就短消息方式的数据传输软件流程作一介绍。
对于数据源,GPS模块不断发送固定格式的串行数据,MCU利用一串口与之相连。一般MCU对串口数据的接收处理方式有查询和中断两种。这里采用的方法既不是查询也不是中断,而是命令的方式,MCU根据接收到的不同命令,执行不同的功能。移动终端的软件流程如图3所示。
对于数据源,GPS模块不断发送固定格式的串行数据,MCU利用一串口与之相连。一般MCU对串口数据的接收处理方式有查询和中断两种。这里采用的方法既不是查询也不是中断,而是命令的方式,MCU根据接收到的不同命令,执行不同的功能。移动终端的软件流程如图3所示。
图3 移动终端软件流程
(1) MCU的初始化
单片机的初始化很重要,它关系到程序能否正确运行。这里主要功能是分配串口引脚,设置系统时钟,确定波特率。
这里需要重点注意的问题是MCU的初始化。C8051 MCU硬件资源相当丰富,但有一些不是能同时使用的,需要在初始化时进行设定,所以它的交叉开关译码表的正确使用非常重要。资料中提供的优先权交叉开关分配是有区别的,关键看XBR2特殊功能寄存器中的EMIFLE位的值。串口分配时只用到4个引脚,没有用到外部存储器,所以P0.7、P0.6、P0.5 的功能由交叉开关或端口锁存器决定,而且EMIFLE的值为“0”,这样可以保证串口分配不出现错位。
(2) 删除短消息子程序
删除短消息子程序的作用是清空 SIM卡里存入的所有读过的短消息,但未读取的短消息不会删除,使每个新来的短消息的标号都为“0”。
(3) 读短消息子程序
读短消息子程序的作用是读取新消息并将短信的内容存储在内部RAM中,为程序的跳转提供判断的依据。例如,如果短信的内容是“###13520479697*”,表示设定短消息发送号码;如果需要查询车辆状况,MCU就会向卡号为“13520479697”的用户发定位信号。
指令“AT+CMGR=0”表示读取SIM卡里的标号为0的短信。先把该指令转换为 ASCII码,然后再串行发送出去。CDMA模块就会执行相应的命令,并将短信内容通过串行口传递给单片机。单片机的串口0的接收标志位RI置位,表示接收到一个完整的字符,可以从串口寄存器中取走内容。该标志位不能自动清零,需要软件复位,然后进行下一个字节的接收。
短信的内容是有长度的,通过设定短信内容的最后一个字符是否为“*”号来决定接收停止位。接收时,判断串口寄存器。如果接收到的字符为“*”,表示停止接收,则后面接收的信息无效,将SBUF0的内容存入RAM区。
(4) 短消息命令的执行
通过删除旧短信,读新短信,存储新短信的内容,MCU对存入内容检索、判断是什么功能命令,然后跳转到相应的功能程序入口,实现用户所要求的服务。
这里举两个命令说明:如“###13520479697*”和“PLACE*”。
接收到第1个命令时,先检测“###”,如果符合,则表示后面的数据是要存入Flash中的卡号,需要掉电保存的内容,将其存入128B的非易失性存储扇区中。掉电后,该号码不会丢失。如有语音命令和查询定位信息的命令时,都会呼叫这个存入Flash中的号码。
第2个命令表示接收定位信息。它是以第1个命令为基础的,只有第1个命令执行后,存有了卡号,才能将定位信息发送出去。当单片机检测到新短信的内容为“PLACE*”时,启动定时器4,通过串口1,接收GPS定位信号。这时,接收的信号还不是发到信息中心,要通过对导航电文的检索、提取,最后将有用的时间、经度、纬度信息发送给设定的号码。
两个不同命令短信的执行,功能子程序是分开的,但前端的判断跳转程序是关联的,所以将两个程序合在一起讨论。该程序包含对两个串口同时操作,先读新消息。如果内容有“PLACE*”,则进入定位信号的提取。判断是否有“###”,有则进入存储号码的功能。
当检测到“PLACE*”时,首先启动定时器4,接收串口1的定位信息。由于GPS信号的定位信息里有些是用不到的,所以接收的信息要加以判断。如果数据头是“$GPRMC”,才开始接收。接收以A开头,E结尾。存放在0800开始的地址空间中,最后把这些内容 整合到0900开始的地址空间内,串行发送给CDMA模块,这样就完成了定位信息以短消息发送的目的。
如果需要更强大的网络功能支持,可以嵌入RTOS内核。现在有不少操作系统支持C8051F MCU。
结语
随着科学技术的发展,在工业、商业和军事领域中实时信息传送的应用越来越广泛,需求量与日俱增。CDMA业务的推出,更加推动了这一方向的迅猛发展,无线移动数据传输技术的应用有着越来越广阔的前景。
(1) MCU的初始化
单片机的初始化很重要,它关系到程序能否正确运行。这里主要功能是分配串口引脚,设置系统时钟,确定波特率。
这里需要重点注意的问题是MCU的初始化。C8051 MCU硬件资源相当丰富,但有一些不是能同时使用的,需要在初始化时进行设定,所以它的交叉开关译码表的正确使用非常重要。资料中提供的优先权交叉开关分配是有区别的,关键看XBR2特殊功能寄存器中的EMIFLE位的值。串口分配时只用到4个引脚,没有用到外部存储器,所以P0.7、P0.6、P0.5 的功能由交叉开关或端口锁存器决定,而且EMIFLE的值为“0”,这样可以保证串口分配不出现错位。
(2) 删除短消息子程序
删除短消息子程序的作用是清空 SIM卡里存入的所有读过的短消息,但未读取的短消息不会删除,使每个新来的短消息的标号都为“0”。
(3) 读短消息子程序
读短消息子程序的作用是读取新消息并将短信的内容存储在内部RAM中,为程序的跳转提供判断的依据。例如,如果短信的内容是“###13520479697*”,表示设定短消息发送号码;如果需要查询车辆状况,MCU就会向卡号为“13520479697”的用户发定位信号。
指令“AT+CMGR=0”表示读取SIM卡里的标号为0的短信。先把该指令转换为 ASCII码,然后再串行发送出去。CDMA模块就会执行相应的命令,并将短信内容通过串行口传递给单片机。单片机的串口0的接收标志位RI置位,表示接收到一个完整的字符,可以从串口寄存器中取走内容。该标志位不能自动清零,需要软件复位,然后进行下一个字节的接收。
短信的内容是有长度的,通过设定短信内容的最后一个字符是否为“*”号来决定接收停止位。接收时,判断串口寄存器。如果接收到的字符为“*”,表示停止接收,则后面接收的信息无效,将SBUF0的内容存入RAM区。
(4) 短消息命令的执行
通过删除旧短信,读新短信,存储新短信的内容,MCU对存入内容检索、判断是什么功能命令,然后跳转到相应的功能程序入口,实现用户所要求的服务。
这里举两个命令说明:如“###13520479697*”和“PLACE*”。
接收到第1个命令时,先检测“###”,如果符合,则表示后面的数据是要存入Flash中的卡号,需要掉电保存的内容,将其存入128B的非易失性存储扇区中。掉电后,该号码不会丢失。如有语音命令和查询定位信息的命令时,都会呼叫这个存入Flash中的号码。
第2个命令表示接收定位信息。它是以第1个命令为基础的,只有第1个命令执行后,存有了卡号,才能将定位信息发送出去。当单片机检测到新短信的内容为“PLACE*”时,启动定时器4,通过串口1,接收GPS定位信号。这时,接收的信号还不是发到信息中心,要通过对导航电文的检索、提取,最后将有用的时间、经度、纬度信息发送给设定的号码。
两个不同命令短信的执行,功能子程序是分开的,但前端的判断跳转程序是关联的,所以将两个程序合在一起讨论。该程序包含对两个串口同时操作,先读新消息。如果内容有“PLACE*”,则进入定位信号的提取。判断是否有“###”,有则进入存储号码的功能。
当检测到“PLACE*”时,首先启动定时器4,接收串口1的定位信息。由于GPS信号的定位信息里有些是用不到的,所以接收的信息要加以判断。如果数据头是“$GPRMC”,才开始接收。接收以A开头,E结尾。存放在0800开始的地址空间中,最后把这些内容 整合到0900开始的地址空间内,串行发送给CDMA模块,这样就完成了定位信息以短消息发送的目的。
如果需要更强大的网络功能支持,可以嵌入RTOS内核。现在有不少操作系统支持C8051F MCU。
结语
随着科学技术的发展,在工业、商业和军事领域中实时信息传送的应用越来越广泛,需求量与日俱增。CDMA业务的推出,更加推动了这一方向的迅猛发展,无线移动数据传输技术的应用有着越来越广阔的前景。
此内容为AET网站原创,未经授权禁止转载。