基于单片机的GSM短信系统y.doc_第1页
基于单片机的GSM短信系统y.doc_第2页
基于单片机的GSM短信系统y.doc_第3页
基于单片机的GSM短信系统y.doc_第4页
基于单片机的GSM短信系统y.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的GSM短消息收发系统摘 要目前手机短信息的应用越来越广泛,它已经不仅仅作为交流信息的工具,渐渐的开始用在工程上,如家电的远程控制、电压的远程采集等。本文将比较详尽的介绍了基于手机短信的PC机短信发送软件和数据采集系统的硬件电路部份和软件编程部份,以及手机短消息的AT命令。借助系统模型,阐明GSM模块收发短信的基本概念以及串口控制SMS的基本原理。详细介绍单片机控制GSM模块工作的软件实现过程,对怎样用单片机控制GSM模块收发短信进行探讨,也对程序设计的主体思想作了较为细致的分析。为了能够让您详细的了解它们的原理,本文按照SMS的基本概念、PDU数据格式、AT命令、手机短消息实现的三种方法、应用实例的顺序介绍。 目 录 摘 要第一章 前 言- 1 -第二章 SMS基本概念-7 -2-1 短消息的体系结构- 7-2-2 重要概念- 8 -2-3 SMS组成要素- 9 -2-4 短消息不可到达的原因- 10 -2-5 短消息的发送格式- 10 -第三章 PDU数据格式及AT命令- 12 -3-1 PDU数据格式- 12 -3-2短信AT命令介绍- 16 -第四章 手机短信应用实例- 24 -4-1手机短消息实现的三种方法- 24 -4-2手机短信的应用实例- 25 -第五章 总结- 35 -致 谢- 36 -参考文献- 37 -第一章 前 言GSM手机电路由无线收发信机、基带信号处理电路、基带控制电路、存储电路、键盘、显示器、外部接口等部分组成。射频单元。射频单元的发信通路将基带单元产生的270.833kbit/s的TDMA帧数据流信号接GMSK调制方法形成I、Q信号,再调制到900MHz或1800MHz射频信号,经射频开关,由天线发射出去,收信通路将天线接收的信号经低噪声放大、解调,产生基带I、Q信号,通过解调和均衡将模拟的I、Q信号进行数字化,恢复出数字基带信号,送基带电路处理。射频单元的本振信号通常从时基电路获得基准频率,然后采用锁相环技术实现频率合成。基带芯片与基带信号处理电路。GSM基带芯片是通信终端产品的关键部件,现在比较流行的一般有单IC封装和双IC封装两种形式。多家公司可以大量供应成套的芯片组,如TI、ADL/TIP、Lucent、VLSI等。这为国产手机基带芯片设计提供了有益的参考。基带电路包括信道编译码,加密解密、TDMA帧形成信道分离及基准时钟电路、话音编译码、码速适配器等。送话器的话音信号经过8kHz抽样及AD变换,成为均匀量化的数据流,经话音编码、信道编码、交织、加密等处理,形成270.833kbit/s的TDMA帧数据流,送调制器发送。在接收通道执行与发信通道相反的过程。帧及信令控制以时钟基准部分提供统一帧号、时隙号、18bits时钟等基础,实现同步。 控制器 。控制器实现对手机系统的控制,包括协议处理、射频电路控制、基带电路控制、键盘输入、显示器输出、SIM卡接口及数据接口等功能。 SMS(Short Message Service)短信息服务是GSM(Global System for Mobile Communication)系统中提供的一种GSM终端(手机)之间,通过服务中心(Service Center)进行文本信息收发的应用服务,其中服务中心完成信息的存储和转发功能。短信息服务作为GSM网络的一种基本业务,已得到越来越多的系统运营商和系统开发商的重视,基于这种业务的各种应用也蓬勃发展起来。以GSM网络作为数据无线传输网络,可以开发出多种前景极其乐观的各类应用,如无线数据的双向传送、无线远程检测和控制等。典型的应用有:变电站、电表、水塔、水库或环保监测点等监测数据的无线传输和无线自动警报;远程无线控制高压线路断电器、加热系统、防洪拦阻系统或其它机电系统的启动和关闭;车队交通管理和控制指挥系统;控制和监测香烟、食品和饮料自动售货机的运行状态和存货水平等等。由于GSM网络在全国范围内实现了联网和漫游,具有网络能力强的特点,用户无需另外组网,在极大提高网络覆盖范围的同时为客户节省了昂贵建网费用和维护费用。同时,它对用户的数量也没有限制,克服了传统的专网通信系统投资成本大,维护费用高,且网络监控的覆盖范围和用户数量有限的缺陷。比起传统的集群系统在无线网络覆盖上具有无法比拟的优势,加上GSM的SMS本身具备的数据传送功能,都使得这些应用得到迅速的普及。利用GSM短信息系统进行无线通信还具有双向数据传输功能,性能稳定,为远程数据传送和监控设备的通信提供了一个强大的支持平台。本文的远程数据采集系统就是根据GSM的SMS远程数据传送功能完成其远程控制的。而短信精灵是为了解决手机短信输入麻烦而编制的。下面简要的介绍一下这两个系统。手机短消息的收发都是通过GSM Model的通用AT命令来实现的。AT命令是主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM研制的,其中包含对SMS的控制。AT命令在此基础上演化并被加入GSM 07.05标准,以及之后的GSM 07.07标准。本文的两个系统都是以AT命令为基础开发的。远程数据采集系统采用Atmel公司的AT89C51作为核心控制器件,并且采用ADC0809作为数据采集器件,短信收发模块采用手机西门子6688。AT89C51的晶振是11.095MHz使其串口传输速率可达到19200Hz,这主要是为了使其能可靠的与手机通讯。而且AT89C51的程序选用汇编格式编写,这样能更节省系统的内存空间和提高系统的执行速度。同时由于手机模块的AT命令的响影实时性要求不是很高故采用查询串口的方法编写。数据采集器件ADC0809使系统可以完成18路的数据采集,采集精度为8位,且采集范围为15V,同时不需要参考点,这使数据采集更方便、更准确。为了使远程数据采集系统完整,我又用VB编制了与其配合使用的PC机程序。在这个程序中用户可以简单明了的观察八路数据的采集情况。短信精灵是通过PC机收/发短信的软件。为了能够使该软件正常运行,必需通过数据线使PC机与手机连接。短信精灵主要部分是通过VB的MSComm控件实现PC机与手机的通讯。当通讯建立后,通过对手机发给串口数据的处理来实现手机短信收发。第二章 SMS基本概念GSM中唯一不要求建立端-端业务路径的业务就是短消息,即使移动台已处于完全电路通信情况下仍可进行短消息传输。 短消息通信仅限于一个消息,换言之,一个消息的传输就构成了一次通信。因此,业务是非对称的,一般认为移动起始短消息传输与移动终接短报文传输是两回事。这并不阻碍实时对话,但系统认为不同的消息彼此独立,消息的传输总是由处于GSM外部的短消息服务中心(SMSC)进行中继,消息有目的地或起源地,但只与用户和SMSC有关,而与其他GSM基础设施无关。2-1 短消息的体系结构 GSM标准中定义的点-点短消息服务使得短消息能在移动台和短消息服务中心之间传递。这些服务中心是通过称为SMS- GMSC的特定MSC同GSM网络联系的。涉及SMS管理的协议如下图所示。图2.1 管理协议图SME:Short Messaging Entity,短消息实体。它可以接收或改善短消息,位于固话系统、移动基站或其他服务中心内;SMSC:Short Message Service Center,短消息服务中心,负责在基站和SME间中继、储存或转发短消息;移动台(ME)到SMSC的协议能传输来自移动台或朝向移动台的短消息,协议名为SMTP(Short Message Transmission Protocol);SMCGWMS或SMCGMSC:SMS-Gateway MSC,SMS网关。接收由SMSC发送的短消息,向HLR查询路由信息,并将短消息传送给接收者所在基站的交换中心;HLR:Home Location Register,归属位置寄存器。用于永久储存管理用户和服务记录的数据库,由SMSC产生。SMS网关与HLR之间的协议使前者可以要求HLR搜索可找到的用户地址。它与MSC与HLR之间的协议一起,能在移动台因超出覆盖区而丢失报文、随后又可找到时加以提示。MSC:Mobile Switching Center,移动交换中心。负责系统切换管理并控制来自或发向其他电话或数据系统的拔叫。VLR:Visitor Location Register:,访问位置寄存器。含有用户临时信息的数据库。交换中心服务访问用户时需要这些信息。2-2 重要概念 移动起始短消息:Mobile Originated Short Message。一个GSM用户发送短消息时,他必须至少在其内容中包含最终地址的识别符,和处理这消息的服务中心号码,然后请求传递。短消息的传输要求在移动台和MSC之间建立信令连接。消息本身的传递要求在无线路径上建立专用的链路层链接,并要求采用专用的消息传递协议。在规定的协议栈的顶部是所谓的传输层协议,在移动起始短消息情形下,它是一条单独的报文,即SMTP(不是TCP/IP的SMTP)短消息传送报文,低层处理应答的传送,它只指出SMSC已收到报文。 移动终接短消息:Mobile Terminated Short Message。目的地为GSM用户的短消息必须首先先从发送方路由至短消息服务中心,然后再被路由至实际地址。当SMSC有短消息需发送到期某一GSM用户时,它建立一条包含各种利于接收者的信息的SMS-DELIVER报文。此信息包括用户的内容,最初的发送者身份及用于批示短消息已被SMSC接收的时间标记。与MO情形相似,SMS-DELIVER报文将在各种接口上传送。在达到目的地前,报文的实际路由必须利用MAP/C查询功能获得,采用的是如下方法:SMSC将短消息传到与服务中心相连的SMS网关,网关的选择依赖于它想到在的用户,因为通常网关仅能处理某些用户(某家营运商或某个国家的用户)。这样,用户通过目录号(一般同电话一样)来识别,这些目录号最初是由短消息发送者输入的,这使得SMS网关能识别有关的HLR并查询它。查询是通过发送一个专用报文,即用于短消息的MAP/C SEND ROUTING INFOR报文来实现;对其应答既可采用包含用户正在访问的MSC/VLR的SS7地址的MAP/C SEND ROUNTING INFO FOR SHORT MESSAGE RESULT报文,又可当已知用户此时不可到达时采用拒绝报文。2-3 SMS组成要素SMS由几个与提交或接收相关的服务要素组成,如:有效期(在将短消息成功送达用户前SMSC需要保证的储存时间),优先性。此外,短消息还提供提交消息的时间、告诉移动台是否还有更多消息要发送,以及还有多少条消息要发送等。2-4 短消息不可到达的原因短消息不可到达的情况有三种:当被SMS网关查询时,移动台不在服务区域、未获得服务授权、或有未成功发送报文正等待告警,HLR就会立即知道不能发送;第二种情形是,MSC/VLR已收到报文但不能传送的情况。此时,它先向SMS网关发送一故障指示,作为MAP/H FORWARD SHORT MESSAGE报文的应答;然后,网关一方面会向SMSC发送否定报告,另一方面向HLR发送MAP/C SET MESSAGE WAITING DATA报文,在收到报文确认后进行表格更新。该事件会储存在VLR和HLR内的用户记录中;第三种情况是MSC/VLR向用户发送有效报文后发现不可送达。2-5 短消息的发送格式SMS是由Etsi所制定的一个规范(GSM 03.40 和 GSM 03.38)。当使用7-bits编码的时候,可以发送最多160个字符;使用8-bit编码(最多140个字符)通常无法直接通过手机显示,所以通常被用来作为数据消息(例如:smart messaging中的图片和铃声和OTA WAP设置);使用16-bit信息(最多70个字符)被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。另一个以class 0 开头的16-bit的文本信息将在某些手机上作为Flash SMS显示(闪烁的SMS和警告SMS)。有两种方式来发送和接收SMS信息:使用文本模式或者使用PDU(protocol description unit) 模式。文本模式(可能某些手机不支持)实际上也是一种PDU编码的一种表现形式。在显示SMS信息,可能使用不同的字符集和不同的编码方式。最常见的选择是PCCP437, PCDN, 8859-1, IRA 和 GSM. 这些都通过读取应用程序的at-command中的AT+CSCS指定。如果你想阅读手机上的信息,手机会为你选择一种合适的编码。那么一个可以阅读SMS消息的应用要么使用test模式,要么是PDU模式。如果使用text模式,那么应用将绑定(或限制在)一些可能的编码选择中。在某些情况下是不够的,如果使用PDU模式,那么就可以使用任何编码方式。第三章 PDU数据格式及AT命令3-1 PDU数据格式1. PDU简介PDU相当于一个数据包,它由构成消息(SMS)的信息组成。作为一种数据单元,它必须包含源/目的地址、保护(有效)时间、数据格式、协议类型和正文,正文长度可达140字节,它们都以十六进制表示。PDU结构根据短消息由移动终端发起或以移动终端为目的而不同。当由移动终端发起时,PDU的格式为:SMSCPDU类型MRDAPIDDCSVPUDLUD(0140octed)当以移动终端为目的时,PDU的格式为:SMSCPDU类型OAPIDDCSSCTSUDLUD(0140octed)其中,SMSC为短消息业务中心地址,DA/OA为源/目的地址,PID为协议识别,DCS为数据编码,UDL为用户数据长度,UD为用户数据,VP为有效时间,MR指明是发出信息,SCTS指明短消息到达业务中心的时间。2. 接收放送短信中心号码编码如号码位数是奇数位,末尾加“”,并将只需将奇偶位对调即可。3. 短信内容编码l 7Bit编码hellohello包含了10个字符,他们必须一个个将用7-bits来代表。hello1041011081081111101000110010111011001101100110111111010001100101110110011011001101111表3.1.1 7bit编码表hello1041011081081111101000110010111011001101100110111111010001100101110110011011001101111表3.1.2 7bit编码表(续1)首先将字符转换为7位的二进制,然后,将后面字符的位调用到前面,补齐前面的差别。例如:h翻译成1101000,e翻译成1100101,显然h的二进制编码不足八位,那么就将e的最后一位补足到h的前面。那么就成了11101000(E8)。剩余地编码看下表:11101000001100101001101111111101010001101001011111011001E8329BFD4697D9表3.1.3 7bit编码表(续2) 11101100110111EC37表3.1.4 7bit编码表(续3)那么就变成了9个八进制数 E8 32 9B FD 46 97 D9 EC 37。l UCS2编码UCS2编码是将每个字符(1-2个字节)按照ISO/IEC10646的规定,转变为16位的Unicode宽字符(如“你”的UCS2编码就是“4F60597D0021”)。在Windows系统中,特别是在2000/XP中,可以简单地调用API 函数实现编码和解码。如果没有系统的支持,比如用单片机控制手机模块收发短消息,只好用查表法解决了。l 8-bit 编码8-bit编码其实没有规定什么具体的算法,主要是用于发送数据消息。4. 有效时间算法VP值短消息有效时间长度0143(VP+1)5分钟14416712时+(VP-143)30分1681961天(VP-166)1972551周(VP-192)表3.1.5 有效时间算法5. 发送/接收例子例 发送:SMSC号码是+8613800250500,对方号码消息内容是“hellohello”。从手机发出的PDU串可以是08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 58 81 27 64 F8 00 00 00 06 E8 32 9B FD 46 97 D9 EC 37对照规范,具体分析如下表:分段含义说明08SMSC地址信息的长度共8个八位字节(包括91)91SMSC地址格式(TON/NPI)用国际格式号码(在前面加+)68 31 08 20 05 05 F0SMSC地址8613800250500,补F凑成偶数个11基本参数(TP-MTI/VFP)发送,TP-VP用相对格式00消息基准值(TP-MR)00D目标地址数字个数共13个十进制数(不包括91和F)91目标地址格式(TON/NPI)用国际格式号码(在前面加+)68 31 58 81 27 64 F8目标地址(TP-DA)8613851872468,补F凑成偶数个00协议标识(TP-PID)是普通GSM类型,点到点方式00用户信息编码方式(TP-DCS)7-bit编码00有效期(TP-VP)5分钟06用户信息长度(TP-UDL)实际长度6个字节E8 32 9B FD 46 97 D9 EC 37用户信息(TP-UD)“hellohello”表3.1.6 短信发送PDU字符串对照表3-2短信AT命令介绍在这里介绍一下常用的AT命令,要想得到全部的AT命令请查看AT command set for s45 Siemens mobile phones and modems。1. ATE 连接测试测试命令ATE响应OK2. AT+CSCA 选择消息中心地址测试命令AT+CSCA=?响应OK读命令AT+CSCA?响应+CSCA:,OK写命令AT+CSCA=,参数:短消息中心地址:短消息中心地址的类型,如果地址首位是+号,则该参数为154,否则为129例子AT+CSCA=“+8613800731500”响应OK3. AT+CNMI 新消息批示方式测试命令AT+CNMI=?响应+CNMI:(list supporteds),(list of supported s), (list of supported s), (list of supported s), (list of supported s),OK读命令AT+CNMI?响应+CNMI:,OK写命令AT+CNMI=,参数=1,=1,=0,=0,=1。即当有新消息时,TA以如下的方式提示:+CMGI:“SM”,,index表示新消息存放在SIM卡中的位置。例子AT+CNMI=2,1,0,0,0响应OK此命令使得GSM模块收到新的短消息时,都会通过串口向PC机或单片机发送数据信息,数据为:AT+CMTI:“SM”,14. AT+CSMS 选择短信息服务测试命令AT+CSMS=?响应+CSMS:(0,1)OK读命令AT+CSMS?响应+CSMS:0,1,1,1OK写命令AT+CSMS=参数=0:SMS AT commands are compatible with GSM 07.05 Phase 2 version 4.7.0.=1:SMS AT commands are compatible with GSM 07.05 Phase 2+ version例子AT+CSMS=0响应+CSMS:1,1,1OK注释:支持SMS-MO,SMS-MT 和SMS-CB5. AT+CPMS 选择短消息内存测试命令AT+CPMS=?响应+CPMS:(“SM”,“BM”),(“SM”)OK读,列出,删除:SMS 或 CBM 写,发送:SMS读命令AT+CPMS?响应+CPMS:“SM”,3,10,“SM”,3,10OK读,写SMS 从/到 SIM 3是:SMS存储在SIM卡上。10是:全部SIM卡可能的存储空间。写命令AT+CPMS=,参数:存储器用来列出,读和删除短消息,可以是:“SM”:SMS消息存储在SIM卡中(缺省)“BM”CBM消息存储在闪存中。:存储器用来写和发送短消息。“SM”:SMS短消息用来存储在SIM卡中。 如果命令是正确的,下面的指示短信会被发送 +CPMS:,当 被选择,使用下面的命令如:+CMGL,+CMGR和+CMGD例子AT+CPMS=“BM”响应+CPMS:2,20,3,10OK注释:从RAM中读出,列出,删除CBM 2:CBM存储在RAM中。6. AT+CMGF 选择短消息格式测试命令AT+CMGF=?响应+CMGF:(0-1)OK注释:PDU 或TEXT模式读命令AT+CMGF?响应+CMGF:1OK注释:TEXT模式写命令AT+CMGF=响应OK参数:=0:PDU模式;=1:TEXT模式例子AT+CMGF=0响应OK7. AT+CMGR 读短信息AT+CMTI:“SM”,1注释:首先有命令AT+CNMI=2,1,0,0,0收到新短消息。AT+CMGR=2注释:读取错误的信息+CMS ERROR:321AT+CMGR=1注释:在PDU模式下。+CMGR:2,OK8. AT+CMGS 发送短信息写命令AT+CMGS=注释1A:ASCII码CTRLZ:报文结束标志。:不包括最初9个短信息元字节。注释: Chr$(34) chr$(26)响应+CMGS:OK注释:成功发送。9. AT+CMGL 列出SIM卡中短消息写命令AT+CMGL=注释:=0:例出没有读出的短信;1例出读过的短信;2存储没有发送的短信;3存储发送的短信;4所有的短信。响应+CMGL:,may be followed by other+CMGL:OK注释::不包括最初9个短信息元字节。10. AT+CMSS 从SIM内存中发短信息写信息AT+CMSS=,响应+CMSS:or+CMS ERROR: if sending fails例子AT+CMGW=0660123456Today is my birthday注释:向SIM卡中写入信息响应+CMGW:5OK注释:短信存储在第5位置。AT+CMSS=5,0680654321注释:发送第5条短信到不同的GSM响应AT+CMSS:OK注释:成功发送。AT+CMSS=5,0680654321注释:发送第5条短信到不同的GSM响应AT+CMSS:OK注释:成功发送。11. AT+CMGW 向SIM内存中写入待发短信息写命令AT+CMGW=,注释:=0接收未读短信1接收读过的短信 2存储未读短信 3存储读过的短信响应+CMGW:or +CMS ERROR:if writing fails注释:短信息存储在12. AT+CMGD 删除SIM内存中的短信息测试命令AT+CMGD=?注释:测试是否支持该命令写命令AT+CMGD=响应+CMGR:OK注:每条命令均以回车结束。VB是:Vbcr ,单片机是:0DH错误信息错误编码意义0-127GSM 04.11 Annex E-2 values128-255GSM 03.40 section 9.2.3.22 values300Phone failure301SMS service of phone reserved302Operation not allowed303Operation not supported304Invalid PDU mode parameter305Invalid text mode parameter310SIM not inserted311SIM PIN necessary312PH-SIM PIN necessary313SIM failure314SIM busy315SIM wrong320Memory failure321Invalid memory index322Memory full330SMSC (message service center) address unknown331No network service332Network timeout500Unknown error512Manufacturer specific表3.2.1 错误信息第四章 基于单片机的GSM短信开发与应用在介绍手机短信开发与应用之前先要说明一下手机短消息实现的几种方法。4-1手机短消息实现的三种方法1.通过移动网关发送短消息,使用该方法不需要附加的硬件,但是需要到电信部门申请网关,比较适用于一些大型的网络通讯公司开发,目前华为,中兴等公司就做的这方面的工作,并且还有相应的开发包供开发人员使用。2.在电脑或单片要上通过GSM MODEM向手机发送中文短消息,这是目前比较适合于小项目开发的一种方法,所需硬件包括一款手机,提供GSM MODEM,以及相应的数据线或是红外线适配器.该方法编码简单,只需对AT指令和串口编程比较熟悉就可以实现,而且对硬件需求不高,并能自动收发短消息.3.通过一些网站上提供的短信发送功能来实现,比如新浪网,网易都提供这方面的服务,这种方法是这三种方法中实现起来最简单,所需资源最少的,但是对于网站的依赖性太强,对网络的依赖同样无法避免,不适用于项目开发。通过第二种方法收发短消息又分为三种模式:Block模式、Text模式和Pdu。使用Block机生产厂家提供驱动支持,现在还没有发现哪个厂家公布支持这种短信发送模式,而Pdu模式开发起来比较复杂,并且需要编写专门的函数来将文本转换为Pdu格式,比较繁琐.相对而言,应用Text模式开发及方便也简单,是一种不错的选择,不过使用Text模式开发只能发送ASCII码,对于中文的Unicode码不能发送。本文的两个系统都是采用第二种方法的PDU模式方送短信,这使两个系统的适用范围大幅度增加。4-2基于单片机的GSM开发与应用GSM(Global System for Mobile communication)系统是目前基于时分多址技术的移动通讯体制中比较成熟、完善、应用最广泛的一种系统。目前已建成的覆盖全国的GSM数字蜂窝移动通信网,是我国公众移动通信网的主要方式。基于GSM的短信息服务,是一种在移动网络上传送简短信息的无线应用,是一种信息在移动网络上储存和转寄的过程。由于公众GSM网络在全球范围内实现了联网和漫游,建立上述系统不须再组建专用通信网络,所以具有实时传输数据功能的短信应用将得到迅速普及。笔者开发设计的基于GSM网络的温度数据采集与无线传输系统正是借助该网络平台,利用短信息业务实现数据的自动双向传递。系统模型图如图所示。终端处理模块GSM网络GSM模块1PC机E2PROM数据采集模块存储器单片机2MSC12101210温度数据单片机1单片机 GSM模块2 本系统由数据采集部分、数据接收和发送部分、终端处理部分等三个模块组成。数据采集模块将采集到的温度数据存入存储器中。数据收发模块采用双单片机共用E2RPOM的方式,单片机2控制数据从存储器转存入E2PROM中;单片机1负责将数据从E2PRROM中读出,并经GSM模块2借助GSM网络将数据发送出去,单片机1不仅控制数据的发送,也控制数据的接收。在这里E2PROM是温度数据临时存储和上传的中转站。终端处理模块负责将接收到的数据交给计算机处理,并将处理后的结果存放到数据库中,以供查询。当终端处理模块需要向GSM模块2发送控制命令时,GSM模块2接收过程正好与上述过程相反,从而实现数据的自动双向传递。系统中三个模块相互独立,彼此又相互依赖,共同完成数据的传输。数据收发模块在系统中起着承上启下的作用,是系统的核心模块。该模块以双单片机为核心,以RS232通信接口,在物理层上实现与GSM模块的连接。由于篇幅的限制,本文主要介绍单片机控制这一模块工作的软件实现过程。旨在对怎样用单片机控制GSM模块收发短信息进行探讨。1 GSM模块MZ28 MZ28是中兴通讯推出的GSM无线双频调制解调器,主要为语音传输、短信发送和数据业务提供无线接口。MZ28集成了完整的射频电路和GSM的基带处理器,特别适合于迅速开发基于GSM无线网络的无线应用产品。带有人机接口(MMI)界面的应用产品内部与MZ28的通讯可通过标准的串行接口(RS232)进行。MZ28使用简单的20-PIN ZIP插座与用户自己的应用系统相连,此ZIP连接方式提供开发所需的数据通信、音频和电源等接口信号。MZ28可以作为无线引擎,嵌入到用户自己的产品当中,用户可以用单片机或其他CPU的UART口,使用相应的AT命令,对模块进行控制,达到使其产品可以轻松进入GSM网络的目的2 串口控制SMS的工作原理单片机与GSM模块一般采用串行异步通信接口,通信速度可设定,通常为19200bps。采用这种RS232电缆方式进行连接时,数据传输的可靠性较好。RS232接口方式连接,通过串行接口集成电路和电平转换电路与GSM模块连接,电路比较简单,所涉及的芯片包括单片机89C52和电平转换芯片MAX232,是非常常见的接口电路。需要说明的是,该接口通过I2C总线扩展了一个E2PROM存储器芯片AT24C64,它的主要作用是存储采集到的数据。该芯片能够反复擦/写,能够持久保存数据,而且断电信息也不会丢失,这些特性正是存储数据所必需的。GSM的短信息业务SMS利用信令信道传输,这是GSM通信网所特有的。它不用拨号建立连接,把要发的信息加上目的地址发送到短信息服务中心,经短信服务中心完成存储后再发送给最终的信宿。所以当目的GSM终端没开机时信息不会丢失。每个短信的信息量限制为160字节。现在市场上大多数手机均支持GSM07.05规定的AT指令集。该指令集是ETSI(欧洲通信技术委员会)发布的,其中包含了对SMS的控制。利用GSM手机的串行接口,单片机向手机收发一系列的AT命令,就能达到控制GSM模块收发SMS的目的。必须注意的是,用单片机实现时,编程必须注意它发送指令与接收到的响应都是字符的ASCII码。用单片机控制GSM模块收发短信息所涉及到AT指见令见表1。AT指令功能描述AT+OFF关机并重新启动AT+CSDH=0在TEXT模式下在返回值中不显示详细的头信息ATE0关闭回显AT+CMGF=1选择短信格式为TEXT模式AT+CMGS发送短信息AT+CMGR读取短信息AT+CMGD=0删除全部短信息3 软件的实现3.1 上位机模块和下位机模块半双工通信协议的实现3.1.1 应答和重发上位机模块和下位机模块的通信双方遵照半双工通信方式进行。即数据传送是双向的,但是任何时刻只能由其中的一方发送数据,另一方接收数据。因为E2PROM的读出和写入不能同时进行,为了避免一方在发送信息帧时(这里的信息帧指的是下位机模块发送的数据帧和上位机模块发送的命令帧,下同),另一方也会发送数据,必须把信道变成半双工方式,尽管效率可能不如全双工方式,但通过此举牺牲效率可以换取模块工作性能的稳定。双方采取的顺序是:发收到应答后再发。按照整个系统的设计思路,上位机模块(即图1中的GSM模块1,下同)发送的帧包括命令帧、确认帧和非确认帧;下位机模块(即图1中的GSM模块2,下同)发送的帧包括数据帧、确认帧和非确认帧。其中确认帧和非确认帧是发送数据后等待对方发送的应答帧,以此作为继续发送下一帧和重新发送上一帧的依据;命令帧和数据帧是信息帧。当一方先发送完信息帧,如果收方接收到对方的信息帧,而又没有信息帧需要发送,那么情况就比较简单,收方将根据信息帧的正确与否决定发送确认帧还是非确认帧,以使对方决定是继续发送还是重新发送;如果此刻收方也有信息帧需要发送,那么收方将不立即发送应答帧,而是立即发送本方的信息帧给对方,并等待对方对此帧的应答帧,在收到对方的应答帧后,收方将依据应答帧的内容(即确认帧或者是非确认帧,下同)决定是继续发送下一信息帧,还是重新发送原来的信息帧。如果由于链路本身不可靠等因素造成应答帧的丢失,收方将在一定时间内因为没有收到应答帧而延时重发原来的信息帧。在收到对方的应答帧后,收方将继续发送下一信息帧,并等待对方的应答帧,如此反复,直到收方全部发送完信息帧。在本方收到对方最后一个应答帧后,表明本方全部的信息帧发送完毕。然后收方将发送对方仍然等待的应答帧,通知对方收到的信息帧的正确与否。3.1.2延时重发在双方通信过程中,有两个时间T1和T2,分别表示重新发送信息帧的最大延时。T1表示一方发送完信息帧到收到对方应答帧的时间,如果等待应答帧的时间超过了T1,则发方会重新发送原来的信息帧;当收方接收到对方发送的信息帧,如果收方此时有需要发送的信息帧,则收方此刻不发送应答帧,而是发送信息帧给对方。也就是说利用对方等待收方应答帧的时间T1内,收方插入发送本方的信息帧,同样本方的发送也存在一个延时重发的问题,在规定的时间内如果没有收到对方应答帧,收方也同样需要重发原来的信息帧,这个规定的时间就是T2。显然由于收方是利用间隙时间发送本方信息帧,所以T2T1。下图以下位机模块先发数据帧为例,阐述双方通信的具体实现过程。下位机模块上位机模块|需要说明的是,由于版面的限制,上面的图所示的通信过程没有涉及到发送非确认帧的情况,如果收方发送非确认帧,发方的发送过程跟发送数据帧是一样的,只不过这种情况下需要重发同一帧号的数据帧。如果上位机模块先发命令帧,双方通信的实现过程跟上图类似,所不同的是数据帧此时变成命令帧,命令帧变成数据帧。在延时的时间上,无论是下位机先发送数据帧还是上位机先发送命令帧,T2的大小都应该是一样的,都是利用时间间隙T1发送收方信息帧,延时的时间是相同的。然而,对于T1而言,情况就有所不同,因为下位机模块先发送数据帧时,利用T1的间隙时间上位机模块发送的命令帧可能较少,因此当下位机模块先发送数据帧时所定义的T1应该小于当上位机模块先发送命令帧时所定义的T1,因为当上位机模块先发送命令帧时,利用T1的间隙时间下位机模块发送的数据帧可能比较多。3.2 帧格式GSM模块通过异步通信接口实现对SMS的控制共有三种接入协议:Block Mode;基于AT指令的Text Mode;基于AT指令PDU Mode。本系统发送和接收的数据都是基于数字的温度数据和命令字,为了保证系统的适用性,SMS的收发采用TEXT模式。TEXT模式是基于字符的,更具体地说是基于ASCII码的一种结构模式。在该模式下,模块发送和接收的信息帧格式如表2所示,信息帧包括数据帧和命令帧。表2 信息帧格式帧 头帧 序 号数 据校 验 子 帧头表示数据帧的标记,由固定的字符“WQ”构成。帧序号表示数据帧的序号,由两个字节组成。帧序号表示下位机模块发送的递增的数据帧序号,和上位机模块发送的命令帧序号,为了简化帧结构,命令帧的序号统一为00H。数据字段的长度为154字节,最多发送77个字符(采用TEXT模式,不能发送汉字)。检验子为数据字段所有字节累加和的补码(原码取反加1),由一个字节组成。在整个帧结构中,帧头字段是由两个固定的字符组成,这两个字符都可以通过模块直接发送。在帧序号、数据、校验子三个字段中,都存在这样一个问题:这三个字段都可能要发送某些模块不能直接发送的字符,比如00H等。为此采取了一种编码方案,将高低4位分别加上40H,拆成两个字节进行发送,比如如果要发送00H,那么模块会发送40H、40H。当然很多字符都是可以直接发送的,为了程序算法的简便,将所有要发送的字符统一进行这种“一拆二”的编码方案。因此,这三个字段实际的字节数经过编码后都会扩大2倍。TEXT模式下,一次能发送的字符数是160个字节,它是由帧头(2字节)帧序号(2字节)数据(154字节)校验子(2字节)构成的。除了信息帧外,双向传送的还有应答帧,它包括确认帧和非确认帧。确认帧是收方反馈给发方的应答帧,表示收方已经正确接收到了发方发送的信息帧,确认帧格式仅包括两个字段,且两个字段的内容都是固定的,即帧头“WQ”和数据字段“ACK”,如表3所示。表3 确认帧格式W QA C K 非确认帧是收方反馈给发方的应答帧,表示收方收到的是无效的信息帧,其格式与应答帧格式类似,如表4所示。表4 非确认帧格式W QN A C K3.3 E2PROM空间的分配采用8K的E2PROM,按照每77个字节为一个块进行划分,共106块,E2PROM的前两个字节的含义:第00字节,是发送标记,55H:表示有数据块要发送 00H:表示没有要发送块的数据第01字节,是接收标记,55H:表示从上位机模块发来的数据已经被接收并被写入E2PROM00H:表示还没有数据写入E2PROM前两块共154字节按照以上分配方案,尚有21字节空余,这可以根据系统需要留作它用。3.4 收发端与采集端的握手协议收发端与采集端共用一个存储器,即双CPU对同一个E2PROM进行操作。实现方案是分别使两个微处理器的一个I/O脚相连,两个CPU采用查询方式对此I/O端进行查询,如果某时候收发端查询到本地I/O端为高电平,则单片机1拥有此存储器的操作权,可以对E2PROM进行读写操作。如果采集端查询到本地I/O端为高电平,则单片机2拥有此存储器的操作权,可以对它进行写操作。一方操作完毕后将I2C总线置为高电平,表明本端已经释放I2C总线,E2PROM目前处于可用状态。整个操作过程设置了两个标志位f_ready、f_geti2c, f_ready是模块之间争用E2PROM的标志位, f_geti2c是表示E2PROM是否被本机模块占用的标志位,如表7所示。 表7 标志位f_ready 、f_geti2c 的含义标 志 位 值 的 大 小01f_readyE2PROM已被某个模块占用E2PROM未被任何模块占用f_geti2cE2PROM没被本机占用E2PROM已被本机占用从上面表格中,可以看出f_ready是模块之间争用E2PROM的标志位, f_geti2c是表示E2PROM是否被本机模块占用的标志位。实际应用中,需要结合这两个标志位来判断E2PROM的情况,如表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论