0 引 言
全球定位系统(Global Positioning System,GPS)是美国国防部于1973年提出,历时20年,耗资200多亿美元建立起来的,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统。GPS能为用户提供连续实时、高精度的三维位置、三维速度和时间基准,是一种全球性、全天候、连续的卫星无线电导航系统。在目前世界上所有的卫星定位系统中,GPS是技术最成熟,应用最为广泛的。
在远程目标定位中,需要将利用GPS技术获得的远程目标的定位信息发送到监控中心。这可利用无线电台进行发送,但是该方法容易受到干扰而且还受到电台通信距离的限制。随着移动通信的发展和GSM网络的广泛覆盖,GSM短消息业务也得到广泛应用,利用短消息服务来传输GPS定位数据是具有优势的。GSM网络容量大,通信盲区少,利用该方法不仅可以克服传输距离的限制,而且相当方便、可靠,费用也十分低廉。结合GSM网络作为数据传输方式的各种优点和GPS这一成熟的定位技术,本文研究并实现了一种利用较少的资源就可实现的基于虚拟串口的GPS/GSM远程定位技术。
1 系统架构
系统构成框图如图1所示。在远程目标端,单片机通过GPS模块获取有用的信息,如经纬度、时间、速度等信息,定时的以短消息的形式操控GSM短消息模块发送定位数据给监控中心。在监控中心部分,采用一个GSM模块与PC机通信,编写一个PC上的软件实现收发短消息、拨打电话、保存短消息等功能,并显示出远程目标定位信息。同时,通过拨打远程目标处TC35i模块的电话可实现系统的一些扩展功能。
1.1 GPS模块
GPS模块采用的是Navman公司的Jupiter 21OEM板,它具有12通道,体积小、重量轻、功耗低;定位迅速准确,抗干扰性能突出;操作简便、易于开发,可通过串口与PC机进行通讯。可以根据通信的波特率选择输出NMEA-0183语句格式或者SIRF二进制格式的定位信息,默认情况下输出为NMEA-0183语句格式。该模块还具有1 PPS秒脉冲输出,且精度优于1μs,在本系统设计中用对1 PPS秒脉冲计数的方法很好地实现了收发短信的定时。
1.2 GSM短消息模块
GSM短消息模块采用的是SIEMENS公司的TC35i模块,这是一个支持中文短消息的工业级GSM模块,工作在EGSM 900和GSM 1800双频段,电源范围为3.3~5.5 V,可传输语音和数据信息,可以利用AT命令通过接口电路对其进行控制。TC35i模块支持以TEXT模式和PDU模式发送短消息,使用TEXT模式发送短消息代码简单,容易实现,但不能收发中文短信,而PDU格式实现较复杂,但可以收发中文短信。系统设计中处于简单且能满足系统需要考虑,采用的TEXT 模式收发短消息。
1.3 主控单元
主控单元采用AT89S52单片机作为控制器,单片机通过串口与GPS模块以及GSM模块进行通信。在此需要两个串口,而AT89S52单片机本身只有一个串口,常规的解决方法是采用具有双串口的单片机或者ARM等控制器,或者通过硬件来扩展串口。前者会使系统的硬件成本大大提高,而后者不仅会增加系统的成本,还会增大系统硬件的体积。本文采取的解决办法是,AT89S52单片机本身的串口用于跟GPS模块进行通信,而利用I/O口P1.4和P3.2编程实现一个虚拟串口与TC35i模块进行通信。由于单片机内部定时/计数器只能实现较小时间的定时,所以巧妙利用了单片机的T2定时/计数器(P1.0)对 Jupiter 21OEM板的1PPS秒脉冲输出进行计数方便地实现5 min定时,用于收发短信所需的定时。该部分还扩展了报警电路和控制开关通断等功能电路,这是由监控中心通过拨打远程目标端的电话来控制的。同时,还保留了单片机的剩余I/O口用于系统的进一步扩充。
2 系统软件设计
2.1 单片机部分软件设计
单片机部分的程序流程图如图2所示。该部分程序采用C语言编程实现,主要包括定位信息的提取、虚拟串口通信以及短消息的发送三个部分。
2.1.1 定位信息的提取
单片机采用4 800 b/s波特率与GPS模块进行异步串行通讯,从GPS模块输出的是NMEA-0183语句格式的数据。该语句格式的数据以“$”开头,包括$GPRMC,$GPGGA,$GPGSV,$GPVTG,$G-PGSA,$GPGLL等语句。系统设计中只从中提取出$GPRMC语句,再进一步提取出里面包含的经纬度、速度、时间等信息,已经可以满足系统的需求。该部分的软件流程图如图3所示。
2.1.2 虚拟串口
单片机与GSM模块之间通过虚拟串口进行通信,以解决AT89S52单片机固有串口不足的问题,通信波特率取为9 600 b/s。虚拟串口就是利用单片机I/O编程实现一个串口的功能,这样就以较少的资源实现了系统的功能,克服了传统的采用具有双串口的控制器或者利用硬件进行串口扩展的方法其成本高、体积大的缺点。程序中采用定时器工作于方式2进行一个数据位传输时间的定时,用于严格控制一个数据位的传输时间。单片机采用 11.059 2 MHz晶振,这样定时器的初值为256-(1 000 000/9 600)/(12/11.059 2)=160,即十六进制的0xA0。实验结果证明,采用该方法进行串口通讯,数据传输稳定、可靠。采用虚拟串口发送、接收一个字符的程序流程图分别如图 4,图5所示。
2.1.3 发送短消息
主要是由单片机根据发送短消息的特定步骤,采用AT命令控制GSM模块发送短消息,是系统设计中最重要的内容之一。该部分程序设计中,由于会涉及到单片机与GSM模块的多次交互过程,而GSM模块响应较单片机来的慢,特别是涉及到FLASH或SIM卡的操作及网络的交互时,必须要考虑到GSM模块的响应时间问题。系统中采用TEXT模式发送短消息,步骤如下:
1.设置短信中心号码:AT+CSCA=+8613500591500
2.设置短信发送模式:AT+CMGF=1
3.设置TEXT模式参数:AT+CSMP=17,167,0,0
4.设置使用的字符集:AT+CSCS=GSM
5.输入目标号码:AT+CMGS=13599071***
6.输入短信内容再输人
2.2 监控中心软件设计
至此,英文短信发送成功,此过程中若模块回复出现ERROR则短信发送不成功。以上步骤1,3,4经设置后无需再设置,步骤2在模块断电时需重设,步骤 5,6在每次发送短消息时都要重复进行。在监控中心的PC机上采用VB结合ACCESS数据库设计一个监控软件,该软件通过串口与GSM模块进行通信,获取远程目标的定位信息,经过进一步处理后显示出来。由于电子地图制作复杂、价格较贵,所以本系统示意性的利用由Google Earth软件上截图出来的图片作为电子地图,用于直观地显示出远程目标的具体位置。ACCESS数据库用于保存收发短消息的内容,该软件还具有拨打电话等功能。
3 实验结果及分析
利用该软件进行实验得到的结果如图6所示。图中左半部分是软件的实现界面,右半部分是以GoogleEarth软件截图出来的图片作为虚拟的电子地图来示意性的说明问题。实验中,GPS天线置于福州大学旗山校区电气学院楼顶,监控中心位于电气学院南303实验室。由图中左半部分可以看到目标最近一次的定位信息:定位时间:10:28:28;纬度:26°04'3.03"N;经度:119°11'42.57"E;速度:0.048 m/s。右半部分图中的红、绿、蓝小圈圈代表近三次实验获得的定位位置结果(在地图上几乎重合,为说明位置在图中进行引出标注),红色小圆点代表天线的真实位置(在图中也进行引出标注说明),Google Earth软件中的地标,用GoogleEarth软件的测距工具测得实验结果与天线真实位置的误差约为12 m,这主要由GPS模块的定位精度所决定。
由实验结果可以看出,定位位置结果基本一致,但经纬度、速度存在很小的零漂移,这是正常的,零漂移的大小取决于GPS模块的性能。经过长期实验证实,系统稳定、可靠,定位误差较小,基本上可满足一般的应用要求。若要应用于对定位精度要求较高的场合,可以考虑采用定位精度更高的GPS模块等措施。
4 结 语
实验结果表明,系统运行稳定、可靠,可以实现无距离限制的远程定位。由于采用了虚拟串口技术,所以以较少的资源实现了GPS/GSM远程定位技术,该定位技术可以应用于进行远程定位的多种领域。但是,由于作为定位数据传输网络的GSM网络的固有问题,对系统的实时性有一定的影响。比如,有时会出现收发短消息延时的问题,特别是在网络拥挤的时候,有时还存在较小区域的通信盲区,可以考虑与运营商建立一条专用短消息传输通道来保证远程定位信息的可靠传输。相信随着定位技术、通信技术以及GIS技术的不断发展,本文所讨论的远程定位技术将会得到广泛的应用。