基于GSM短消息的远程控制定位技术研究*
2011-05-11杨立永杨日杰董云龙
杨立永 ,杨日杰 ,董云龙
(1.海军航空工程学院 电子信息工程系,山东 烟台 264001;2.海军航空工程学院 科研部,山东 烟台 264001)
在恶劣的自然条件下,实施人工作业有很大的危险性,虽然有时可以由机器人来代替人,但机器人造价昂贵,因而研究一款造价低廉而又实用的远程控制系统具有重大意义。
GSM网络技术的发展和GSM网络覆盖面积的增加,使其在遥测、遥控、数据采集和远程控制等领域得到了广泛应用。单片机与短信猫(GSM MODEM)的通信在GSM的应用中占据重要位置,GPS应用的普及使得远程控制及定位得以实现。本文给出了GSM MODEM、GPS模块和Atmegal系列单片机的硬软件设计,并介绍了整个模块的编程实现过程。
1 系统的硬件构成
1.1 Atmega128单片机简介
Atmega128单片机是一款基于AVR内核、采用RISC结构的增强型低功耗CMOS 8 bit微控制器;其大部分指令在一个时钟周期内完成,因此具有1 MIPS/MHz的数据吞吐率;具有优化的功率消耗结构,在功耗相对较少的情况下可以进行复杂的处理。
1.2 单片机控制GSM MODEM的原理
1.2.1 AT指令简介
AT指令就是带有串行口的设备操作GSM MODEM或手机的指令集。每个AT指令都以AT+开头,以回车换行为结尾。每个命令执行成功与否都有相应的信号返回。本文仅简单介绍将设备所用到的与发送和接收信息相关的 AT指令[1]。
1.2.2 与GSM MODEM相关的AT指令
GSM MODEM与单片机或终端之间通过串行口RS-232C连接。多数GSM MODEM使用AT指令来设置参数。为避免在程序运行过程中出现问题,致使GSM MODEM不能正常工作,本文用计算机中的超级终端来对其进行设置。下面是常用的与短信数据通信开发相关的几条主要的AT指令[2-4]。
AT+CMGF:选择对短消息控制的模式(0—PDU;1—文本);
AT+CMGS:发送短消息;
AT+CMGR:读短消息;
AT+CMGL:列出SIM卡中的短消息;
AT+CMGD:删除短信息(删除一条或多条短信息)。
1.2.3 对短消息控制的三种模式
对短消息控制共有三种模式:(1)基于AT命令的Text Mode;(2)Block Mode;(3)基于 AT 命令的 PDU Mode。使用Block Mode需要手机生产厂家提供驱动支持,目前PDU Mode已取代Block Mode,而Text Mode相对比较简单,应用较为方便,可以满足本设备的需求。故本设备将GSM MODEM设置为Text Mode。
1.3 单片机与GSM MODEM的连接
由于GSM MODEM提供的接口是标准的RS-232C接口,采用EIA-RS-232C电平。而单片机使用TTL电平,与EIA-RS-232C电平不兼容,因此,需要在单片机和GSM MODEM之间连接电路实现电平转换。一般用芯片MAX232来实现EIA-RS-232C与TTL电平之间的转换。
MAX232芯片是Maxim公司生产的,包含二路接收器和驱动器, 适用于各种 EIA-RS-232C和 V.28/V.24的通信接口。MAX232芯片内部有一个电源电压变换器,可以把输入的+5 V电源电压变换成RS-232C输出电平所需的±10 V电压,其工作电压为+5 V。
本文单片机属于主控设备,用串口与GSM MODEM连接过程中需要注意接线的方法。GSM MODEM的串口将RS-232C接口标准定义的所有信号线都用到了,并且是按照DTE和DCE之间信息交换协议的要求进行连接的,使用时只不过是把DTE发出的信号当作对方DCE发来的信号。因此,把这种连接称为双叉环回接口。单片机与GSM MODEM的串口连接如图1所示。
图1 单片机与GSM MODEM的串口连接图
2 设备功能分析以及各模块的编程实现
2.1 设备功能分析
本设备主要是完成对SMS短消息的接收及分析,并执行相应的动作和发送反应信息完成对目标的远程控制。当需要提供地理信息时将连接GPS的串口打开,接收GPS信息。具体功能如下:
(1)模块开机后能够随时接收来自主控系统按照协议发送的信息。
(2)设定一定的时间对存储卡内的信息内容进行筛选解读分析,做出相应的处理。
(3)如果需要设备的地理信息,将连接GPS的串口打开接收GPS数据信息。
系统的工作流程图如图2所示。
图2 系统工作流程
2.2 设备各模块的编程实现
按照设备的功能要求,将设备分为以下几个部分。
2.2.1 初始化模块
初始化主要包括:
(1)单片机的初始化。对单片机的串口进行设置,打开两个串口中断允许位,设置波特率,用于与GSM MODEM和GPS进行通信[5-6]。
(2)GSM MODEM的初始化。对GSM MODEM的工作方式进行设定(包括关回显),以方便程序运行。具体程序如下:
其他的工作方式可由计算机的超级终端进行设置,可以一直保存设置。而GPS模块则利用自身的默认设置。
2.2.2 短信息的发送和接收执行模块
短信息的发送需要运用AT指令将要发送的内容通过串口发送给GSM MODEM模块。在短信发送中,只向主控机发送所要求的信息内容,因此通信地址固定添加主控机的地址即可。发送信息的功能函数程序如下:
短信息的接收可以采用中断方式和定时查询方式。中断方式是:如果有新信息到达,单片机就会收到下列提示:+CMTI:”SM”,
可以通过检测串口是否收到“+CMTI”来判断新信息的到达,以采取相应的动作。采用定时查询的方式接收新信息,也就是将手机卡内的全部信息用指令AT+CMGL=”ALL”列出来并放入 rx_buffer[RX_BUFFER_SIZE]中。考虑到多条信息的到来会丢失信息,所以本系统采用的是定时查询方式。相应的程序如下:
列出来的内容需要进行合法信息筛选,即把每条信息的index提取出来,将提取的合法信息内容和index存起来,然后一一进行处理,并将已读信息删除(务必要进行删除信息的工作,不然会对系统工作的稳定性造成影响)。
2.2.3 GPS模块的数据接收
GPS模块可以采用对连接GPS的串口进行开关而控制。GPS信号有二进制和ASCII两种,本文主要采用ASCII,即NMEA0183格式[7-8]。GPS-OME板输出带有各种功能的数据语句,如$GPGGA、$GPGSV、$GPRMC等,其中以$GPRMC定位数据最为常用,其数据的一般格式为:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,*hh
其中,<1>为当地位置的 UTC 时间(hh:mm:ss);<2>为接收状态,即显示出“A”为位置有效,“V”为位置非有效接收警告(在当前天线视野上方的卫星个数少于3颗时);<3>为实际纬度;<4>表示半球纬度 N或者 S;<5>为实际经度;<6>表示半球经度E或者W;<7>为GPS属性指示;<10>表示当地的海拔高度。格式中未解释的项本文不用。
在连接GPS的串口中断服务程序中只要将带有“$GPRMC”的那一条语句提取出来就可以了。
本文以单片机串口通信技术和GSM MODEM短消息传输技术为基础,针对远程控制定位的需求,开发了一种对数据采集终端进行远程控制和定位的解决方案以及具体实现过程,为远程终端控制应用提供了技术参考,具有一定的理论和实际意义。
[1]李栋梁,马洪连,李文成.基于 SMS的远程数据采集系统的设计与实现[J].仪器仪表学报,2006,27(21):130-131.
[2]AT commands originating from GSM 07.05 for SMS.[DB/OL].SIEMANS Mobile,2002.
[3]钱亚利,赵光宙.短信通讯在远程环保实时监控系统中的应用[J].机电工程,2007,24(1):25-27.
[4]段锦,叶霖,黄显澍.基于GSM短消息的远程数据采集传输系统[J].长春理工大学学报,2005,28(4):51-53.
[5]万求.GSM短信传送文件的方法的研究与实现[J].计算机工程与应用,2006,42(36):122-125.
[6]仵浩,黄维金.无线数据传输技术在油井检测中的应用[J].仪器仪表学报,2004,25(4):520.
[7]孟谦,王志良,张东.基于GPS/北斗卫星技术的无盲区车辆调度系统[J].微计算机信息,2005(1):160-162.
[8]王 ,刘锦高.基于GPS无线定位/GSM短信收发的空间信息查询系统[J].微计算机信息,2006(6):184-186.