利用GSM模块收发短信.docx
- 文档编号:11051568
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:14
- 大小:325.83KB
利用GSM模块收发短信.docx
《利用GSM模块收发短信.docx》由会员分享,可在线阅读,更多相关《利用GSM模块收发短信.docx(14页珍藏版)》请在冰豆网上搜索。
利用GSM模块收发短信
第二章GSM模块
GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。
本文选用的GSM模块为西门子TC35I模块[2]。
TC35I的部由GSM基带处理器、射频、Flash、天线接口、匹配电源ASIC和40pin的ZIF插座组成,由若干超大规模集成电路和射频器件构成,包含信号处理、信道编码、GSM控制、收发信单元、射频控制、数据输入输出接口等部分。
可以快速安全可靠地实现系统方案中的数据传输、语音传输、短信息服务和传真服务。
模块的工作电压为3.3V~5.5V,可以工作在900MHZ和1800MHZ两个频段,所在频段功耗分别为2W(900MHZ)和1W(1800MHZ)。
模块有AT命令集接口,支持文本和PDU模式的短信息[3]。
此外,该模块还有簿功能、多方通话、漫游检测等功能。
常见工作模式由省电模式、IDLE、TALK等模式。
通过40管脚的zif连接器,可分别连接SIM卡支架和天线。
作为TC35I的核心,基带处理器主要处理GSM终端的语音、数据信号,并涵盖了蜂窝射频设备中的所有的模拟和数字功能。
在不需要额外硬件电路的前提下,支持FR、HR和EFR和语音编码[4]。
TC35I模块自带串行通信接口,可以方便地与PC机、单片机等进行串行通信,从而实现对TC35I模块的控制。
虽然TC35I模块的串口提供了许多控制线,但是由于考虑到接口的简单性,并且与PC机的UART进行连接,所以采用两线(TXD、RXD)连接。
TC35I的其他管脚在不使用的时候,如果该管脚为输出的话,一般让该管脚悬空,如果该管脚为输入管脚,需要将该管脚通过10K的电阻拉高。
另由于IGT管脚是控制TC35I模块工作的管脚,所以需要将管脚上拉,从而可以通过PC机来控制TC35I模块的工作状态。
在此次连接是使将TC35I模块的电源管脚全部连接在一起,由于TC35I是一个功能完全的模块,因此不需要做任何的信号处理和射频处理[5]。
TC35I的开发板上有发光二极管来指示TC35I的工作状态,当发光二极管LED熄灭时,表明TC35I处于关闭或睡眠状态;当LED为600ms亮/600ms熄时,表明SIM卡没有插入或TC35I正在进行网络登录;当LED为75ms亮/3s熄时,表明TC35I已登录进网络,处于待机状态。
第四章PDU数据格式及AT命令
4.1PDU数据格式
4.1.1PDU简介
PDU相当于一个数据包,它由构成消息(SMS)的信息组成。
作为一种数据单元,它必须包含源/目的地址、保护(有效)时间、数据格式、协议类型和正文,正文长度可达140字节,它们都以十六进制表示。
PDU结构根据短消息由移动终端发起或以移动终端为目的而不同。
当由移动终端发起时,PDU的格式为:
SMSC
PDU类型
MR
DA
PID
DCS
VP
UDL
UD(0~140octed)
当以移动终端为目的时,PDU的格式为:
SMSC
PDU类型
OA
PID
DCS
SCTS
UDL
UD(0~140octed)
其中,SMSC为短消息业务中心地址,DA/OA为源/目的地址,PID为协议识别,DCS为数据编码,UDL为用户数据长度,UD为用户数据,VP为有效时间,MR指明是发出信息,SCTS指明短消息到达业务中心的时间。
4.1.2发送短信PDU格式
AT十CMGS(SendSMScommand)发送短消息指令。
PDU模式中,首先发送短消息数据的长度。
AT+CMGS=
等待返回ASCII字符“>”,则可将PDU数据输入,PDU数据以
步骤1.发送AT<回车>连接测试,返回OK。
步骤2.设置短信息发送格式
AT+CMGF=0(选择短消息信息格式:
0-PDU;1-TEXT)
步骤3.发送PDU短消息数据的长度(从11开始,不包括短信中心的)
AT+CMGS=25(
步骤4.输入PDU数据
在>后输入(十六进制0D0A3E20)
00905F011000D019F00008A7106C344F4D003D00357C73(ASCII码)
步骤5.按ctrl+z发送短消息。
如果短消息发送成功,则返回“OK”,并显示信息号:
+CMGS:
[,]+CMGS:
000
如果短消息发送失败,则返回如下信息号:
+CMSERROR:
HEX发送PDU数据格式为:
ASCII转换为HEX,最后输入1A(1A=
30383931363833313038323030393035463031313030304439313638333130333139303031394630303030384137313036433334344634443030334430303335374337331A(HEX)
PDU数据格式分析:
PDU式支持汉字,汉字的十六进制PDU编码直接采用汉字4.1.3Unicode编码的格式
1.SCA:
短信息服务中心地址08915F0
(1)08-短信息服务中心地址长度指(91)+(5F0)8个字节的长度。
(2)91—短信息中心类型。
91是TON/NPI遵守International/E.164标准,指在前需加‘+’号;此外还有其它数值,但91最常用,91指国际类型,81指国类型。
91—10010001
类型
数值类型(TypeofNumber):
000—未知,001—国际,010—国,111—留作扩展;鉴别(Numberingplanidentification):
0000—未知,0001—ISDN/(E.164/E.163),1111—留作扩展;
(3)5F0—短信息中心。
对于短消息中心的编码采用的是半位码。
取十六进制的ASCII码,8的ASCII码是38,6的ASCII码是36,所以数字编码只要取相应的二进制的后四位就可以有效的表示一个数字,也就是十六进制的右边一位。
所有数字都取二进制的后四位,然后两两合并,后面的字符是高四位,前面的字符是低四位。
依此原则,短消息中心的前两位为86,编码后为68,同样的13编码为31,但是最后只剩下一个0,用F补齐,编码为F0。
其中86为中国的国际区号。
注:
短信中心86
⑴、⑵、(3)通称短消息中心地址SCA。
2.FO—文件头字节,发短信时设为“11”。
11&h=00010001&b
文件头格式
应答路径—TP-RP(TP-Reply-Path):
0—不设置;1—设置
用户数据头标识—TP-UDHL(TP-User-Data-Header-Indicator):
0—不含任何头信息;1—含头信息
状态报告要求—TP-SPR(TP-Status-Report-Request):
0—需要报告;1—不需要报告
有效期格式—TP-VPF(TP-Validity-Period-Format):
00—不提供(Notpresent);10—整型(标准);01—预留;11—提供8位字节的一半(Semi-OctetRepresented)
拒绝复制—TP-RD(TP-Reject-Duplicates):
0—接受复制;1—拒绝复制
信息类型提示—TP-MTI(TP-Message-Type-Indicator):
00—读出(Deliver);01—提交(Submit)
3、MR—信息类型(TP-Message-Reference),一般为00。
4、DA—被叫。
0D919F0
0D-被叫长度“10”共13位,实际长度
91—被叫类型,为国际类型。
9F0—被叫,经过了位移处理,实际为“10”。
编码方式与短消息中心相同。
5、PID—协议标识TP-PID(TP-Protocol-Identifier),一般为00
BITNo.76543210
BitNo.7与BitNo.6:
00—如下面定义的分配BitNo.0—BitNo.5;01—参见GSM03.40协议标识完全定义;10—预留;11—为服务中心(SC)特殊用途分配BitNo.0—BitNo.5。
一般将这两位置为00。
BitNo.5:
0—不使用远程网络,只是短消息设备之间的协议;1—使用远程网络。
BitNo.0—BitsNo.4:
00000—隐含;00001—电传;00010—group3telefax;00100—语音;00101—欧洲无线信息系统(ERMES);00110—国系统;10001—任何基于X.400的公用信息处理系统;10010—Email。
6、DCS—数据编码方案TP-DCS(TP-Data-Coding-Scheme)
BitNo.7与BitNo.6:
一般设置为00;
BitNo.5:
0—文本未压缩,1—文本用GSM标准压缩算法压缩;
BitNo.4:
0—表示BitNo.1、BitNo.0为保留位,不含信息类型信息,1—表示BitNo.1、BitNo.0含有信息类型信息;
BitNo.3与BitNo.2:
00—默认的字母表,01—8bit,10—USC2(16bit),11—预留;
BitNo.1与BitNo.0:
00—Class0,01—Class1,10—Class2(SIM卡特定信息),11—Class3。
⑾00—有效期TP-VP(TP-Valid-Period)
08-使用UNICODE编码类型,00-7位编码
7、VP-相应的有效期value(&h)A7为24小时
00to8F(VP+1)*5分钟
90toA712小时+(VP-143)*30分钟
A8toC4(VP-166)*1天
C5toFF(VP-192)*1周
8、UDL-用户数据长度(TP-User-Data-Length)即实际短信息容长度。
9、UD—用户数据(TP-User-Data),即短信容。
4.2短信AT命令介绍
所谓AT指令,就是指控制TC35I的命令,它们有固定的格式,选择相应的AT指令通过TC35I模块的串行通信口发送给TC35I模块,就能控制模块的工作了,其中常用的指令有设置短消息中心、选择文本方式、发送短消息、读短消息、删除短消息等操作命令。
AT指令就是控制器与TC35I模块间通信的语言[6]。
比如要设置短消息中心,则要向TC35I模块发送下文引号中的容:
“AT+CSCA=+000<回车>”
如果设置成功,TC35I模块就会返回下文中引号中的容:
“AT+CSCA=+000
OK”
其中值得注意的地方是,向TC35I模块发送一条AT指令时,TC35I模块在执行完指令时不仅返回“OK”,在“OK”上还显示你发送给模块的那条指令。
本文涉及的以及常用的AT指令有以下几个:
(1)AT+CMGD=X
删除SIM卡存的短消息,X为短消息的位置序号,X=1为删除第一条短消息,以此类推。
(2)AT+CMGL=n
列出SIM卡中的短消息,n=0是未读短消息,n=1是已读短消息,n=2是未发送短消息,n=3是已发送短消息,n=4是所有短消息。
(3)AT+CMGR=X
读取第X条短消息,X为短消息的位置序号。
(4)AT+CMGS
发送短消息:
AT+CMGS=<回车>
>短信容
返回+CMGF:
XX(XX代表数字)表示发送成功,返回ERROR表示发送失败。
(5)AT+CMGF=n
选择短消息信息格式,n=0为PDU编码格式,n=1为Text编码格式(只支持发送英文及数字)。
(6)AT+CSCA
短消息中心地址:
AT+CSCA=+00<回车>
为设置为地区短消息中心地址。
(7)AT+CNMI
显示新收到的短消息:
AT+CNMI=1,1,2<回车>
收到短消息后自动提示。
第五章通过串口收发短消息
5.1用串口收发过程
当ME收到一条消息时,主动发出通知给TE,或者直接将消息转发到TE。
与查询机制相比,它类似于中断机制。
先简要说明一下短消息类(class)的概念:
根据指定储存的位置,短消息分为class0–3四个类。
也可以不指定类(noclass),由ME按默认设置进行处理,存储到存或者SIM卡中。
在TPDU的TP-DCS字节中,当bit7-bit4为00x1,01x1,1111时,bit1-bit0指出消息所属类:
00–class0:
只显示,不储存
01–class1:
储存在ME存中
02–class2:
储存在SIM卡中
03–class3:
直接传输到TE
GSMModem一般都支持一条“AT+CNMI”指令,可用于设定当有某类短消息到达时,如何处置它:
只储存在指定的存(易失的/非易失的)中,先储存后通知TE,还是直接转发到TE,等等。
“AT+CNMI”指令语法为
AT+CNMI=[
mode-通知方式:
0–不通知TE。
1–只在数据线空闲的情况下,通知TE;否则不通知TE。
2–通知TE。
在数据线被占用的情况下,先缓冲起来,待数据线空闲,再行通知。
3–通知TE。
在数据线被占用的情况下,通知混合在数据中一起传输
mt-消息储存或直接转发到TE:
0–储存到默认的存位置(包括class3)
1–储存到默认的存位置,并且向TE发出通知(包括class3)
2–对于class2,储存到SIM卡,并且向TE发出通知;对于其它class,直接将消息转发到TE
3–对于class3,直接将消息转发到TE;对于其它class,同mt=1
bm,ds,bfr的含义,请参考相关标准文档。
一般不需要去关心它们。
在程序中具体实现时,使用mode=2,mt=1,比较简单。
对所有类型的短消息,只要在收到ME送来的“+CMTI”通知后,用“AT+CMGR”指令读取消息容就行了。
TE与ME之间的通信过程,举例如下:
(初始化)
AT+CNMI=?
(查看能支持的设置围)
+CNMI:
(0-2),(0-3),(0,2,3),(0,1),(0,1)
OK
AT+CNMI?
(查看当前设置)
+CNMI:
0,0,0,0,0
OK
AT+CNMI=2,1(设置为mode=2,mt=1)
OK
AT+CNMI?
(再查看当前设置)
+CNMI:
2,1,0,0,0
OK
(过了一段时间,有一条消息到达)
+CMTI“ME”,8(通知:
消息已经存储在ME存中,序号为8)
AT+CMGR=8(读第8条消息)
+CMGR:
8,27
00505F0240D764F800741E19058341E01
OK
AT+CMGD=8(删除第8条消息)
OK
还有一种方式mode=2,mt=2也很令人感兴趣。
在这种方式下,除了class2外,消息不存储,直接转发到TE。
需要处理消息通知和容两种情况,复杂一些。
但如果发送方也由程序控制,可以只发noclass或class1的消息,这样不存储在接收方ME存(一般是闪存,非易失性的)中,肯定能延长它的使用寿命。
TE与ME之间的通信过程,举例如下:
AT+CNMI=2,2(设置为mode=2,mt=2)
OK
(过了一段时间,有一条消息到达)
+CMT:
26
00505F0040D764F80064F60597D0021
5.2调试及结果
本文利用串口调试助手向TC35I模块发送AT指令。
首先将GSM模块开发板中的串口与计算机串口通过串口线相连,实物图如图1所示。
打开串口调试助手,选择相应的串口号,由于TC35I模块上电复位后默认的串行通信波特率为9600,因此要选择串口调试助手的波特率为9600。
1
设置完串口调试助手后,为TC35I模块供电,供电后指示灯亮,然后按下复位按钮,这时串口调试助手上可以看出TC35I模块向计算机发送了若干数据,表明模块启动成功。
然后可以看到模块上的LD2灯一亮一灭,亮和灭的时间间隔相同,都是600ms,表明TC35I模块正在登入网络,过一分钟左右,如果看到LD2长灭短亮,亮75ms灭3s,说明TC35I已经成功登入GSM网络,可以与外界通过通信了。
然后就可以通过串口调试助手发送AT指令来控制GSM模块了。
首先要做的就是对TC35I模块进行初始化设置,初始化流程如图2所示。
包括发送联机命令、设置短消息中心、选择文本模式和设置为收到短消息自动提醒方式等。
图2GSM模块初始化流程图
利用串口调试助手调试TC35I模块的具体步骤如下:
(1)将TC35I开发板的串口与计算机串口通过串口线连接起来,打开串口调试助手,选择相应的串口(本次调试的串口为COM1)。
(2)发送联机命令:
AT<回车>
返回OK则连接正确,返回ERROR则连接错误。
(3)设置短信中心:
AT+CSCA=+00<回车>
返回OK则设置成功,返回ERROR则失败。
(4)选择文本方式:
AT+CMGF=1<回车>
返回OK,则选择了Text方式,返回ERROR则失败。
(5)发送一条短消息
AT+CMGS=<回车>
返回等待输入字符>
输入hello
返回+CMGF:
XX(XX代表数字)表示发送成功,返回ERROR则发送失败。
(6)读短消息
AT+CMGR=1<回车>
则读取了第1条短消息。
结论
本文详细介绍了如何利用GSM模块——TC35I发送和接收短消息。
首先介绍了TC35I模块的结构,AT指令的格式与使用方法,最后介绍了利用串口调试助手调试TC35I模块的步骤。
GSM模块消息具有永远在线、无须拨号、价格低廉、覆盖围广等特点,在数据量不大、实时性要求不高的系统中,通过精心设计远程监控通信单元的硬件和软件,以GSM短消息为数据传输手段建立远程监控系统,具有极大的组网灵活性。
以GSM短消息为手段的远程监控,可广泛应用于实验室监控、电力系统监控、家电监视、数据采集、遥控遥测、全球定位、交通管制、汽车防盗和跟踪等领域,并可广泛应用于安防、门禁、矿山等其它行业。
使用手机模块利于系统集成,成本较低。
在偏远地区等架设通信线路困难或不经济的地方,工程服务设施可以自由灵活的设置,不再受地形条件的限制。
总之,GSM模块价格低廉、应用广泛,应用前景诱人,通过与手机模块接口可以很方便的设计出用户所需要的数据接收终端。
采用GSM的短信功能,可以使一些控制达到“零距离”。
由于短消息的费用低廉,因此可以取代传统的无线控制。
伴随着GSM网络的全球化普及,短消息及其增值业务以其方便、灵活、快捷、价格低廉等优势已经迈入许多领域,并逐步取代传统的信息传输方式。
因此,利用GSM通信模块和短消息技术构建无线发布平台来实现信息的传输和监控将成为一种必然趋势。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 GSM 模块 收发 短信