基于虚拟串口的GPS/GSM远程定位技术

时间:2009-11-06来源:网络

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=+8613500591500CR>//代表福州移动,CR>代表回车,下同
2.设置短信发送模式:AT+CMGF=1CR>//设置短信发送模式为TEXT模式
3.设置TEXT模式参数:AT+CSMP=17,167,0,0CR>//最后一个参数是数据编码类型,0表示默认字符集(GSM);(167代表有效期24 h)
4.设置使用的字符集:AT+CSCS=GSMCR>//设置为GSM字符集
5.输入目标号码:AT+CMGS=13599071***CR>//1359907l***为目标号码
6.输入短信内容再输人Ctrl+Z>,即ASCII码0x1A。

1 2 3

关键词: GPS GSM 虚拟串口 定位技术

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版