登录站点

用户名

密码

MCS-51系列单片机控制手机收发短信息的原理

已有 206 次阅读  2013-04-16 14:46   标签单片机  手机  短信息 

GSM(Global System for Mobile communication)系统是目前基于时分多址技术的移动通讯体制中比较成熟、完善、应用最广泛的一种系统。目前已建成的覆盖全国的GSM数字蜂窝移动通信网,是我国公众移动通信网的主要方式。主要提供话音、短信息、数据等多种业务。基于GSM短消息功能可以做成传输各种检测、监控数据信号和控制命令的数据通信系统,能广泛用于远程监控、定位导航、个人通信终端等。由于公众GSM网络在全球范围内实现了联网和漫游,建立上述系统不须再组建专用通信网络,所以具有实时传输数据功能的短消息应用将得到迅速普及。电子园51单片机学习网 `D7J]Y3M+Lt*P} git


目前,人们设计的各类DTE设备基础上以微处理器为核心,带有RS232/RS485等通信接口,在物理层上很容易实现与GSM设置(如手机等)的连接。但对SMS协议的研究文献却较少,特别是用单片机控制手机的SMS(Short Message Service)收发的研究更少。笔者在用单片机设计基于GSM的SMS数据采集器时,对怎样用单片机控制手机收发短信息进行了探讨。
%Y#Zq d M0点击看大图
wV Gx[ V.@&Npq'p01 串口控制SMS的工作原理

2J6a bIK(M6T0

单片机与手机一般采用串行异步通信接口,具有红外和通信电缆两种连接方式,通信速度可设定,通常为19200bps。采用红外接口的优点是单片机系统与手机电气隔离,相互不干扰,接口各自独立,使用方便;缺点是通信距离较短,红外传播的方向性对接口相对位置有要求。采用电缆连接时,数据传输的可靠性较好;其主要缺点是接口的电气参数不兼容,设计不当时会对手机的通信质量产生影响。笔者经过实践设计的接口电平转换电路如图1。电子园51单片机学习网-FvH ?G


GSM的短信息业务SMS利用信令信道传输,这是GSM通信网所特有的。它不用拨号建立连接,把要发的信息加上目的地址发送到短信息服务中心,经短消息服务中心完成存储后再发送给最终的信宿。所以当目的GSM终端没开机时信息不会丢失。每个短消息的信息量限制为160字节。

o4x1j`O wo E0

现在市场上大多数手机均支持GSM07.05规定的AT指令集。该指令集是ETSI(欧洲通信技术委员会)发布的,其中包含了对SMS的控制。利用GSM手机的串行接口,单片机向手机收发一系列的AT命令,就能达到控制手机收发SMS的目的。ETSI的GSM07.05中用于SMS收发控制的主要AT命令见表1。
P X B0gIK6eX?7b0
0w&wc'gs'E't/d!v0表1 常用AT指令

}.W{1u)IgF0












































GSM07.05

'[&d6J.EO0
Function(功能)
ATE0 RESET
AT+CSMS 选择短信息服务
AT+CPMS 选择短信息内存
AT+CMGF 选择短信息格式
AT+CSCA 短信息中心地址
AT+CNMI 显示新收到的短信息
AT+CMGR 读短信息
AT+CMGS 发送短信息
AT+CMGL 列出SIM卡中短信息
AT+CMSS 从SIM内存中发短信息
AT+CMGW 向SIM内存中写入待发短信息
AT+CMGD 删除SIM内存中的短信息
AT+CSCB 选择蜂窝广播信息

GSM手机通过异步通信接口实现对SMS的控制共有三种接入协议:Block Mode;基于AT命令的TextMode;基于AT命令的PDU Mode。PDU模式是发送或接收手机SMS信息的一种方法,短信息正文经过十六进制编码后被传送。目前,PDU Mode应用最为广泛,基本上全国所有的电信局都提供支持PDUMode的短消息业务。有些地址则不支持Text Mode和Block Mode,这就限制了这两种接入协议的应用,而且PDU Mode已有取代Block Mode的趋势。为了保证系统具有广泛的适用性,本文采用PDU模式收发SMS。电子园51单片机学习网}Vs M5X-j TaIr


PDU相当于一个数据包,它由构成消息(SMS)的信息组成。作为一种数据单元,它必须包含源/目的地址、保护(有效)时间、数据格式、协议类型和正文,正文长度可达140字节,它们都以十六进制表示。PDU结构根据短消息由移动终端发起或以移动终端为目的而不同。

\^&tK:{O4N;bdQ0

当由移动终端发起时,PDU的格式为:电子园51单片机学习网C hmt K














SMSC

(Q^o.@3{ x;s0

PDU类型电子园51单片机学习网%L4{8O LR|]*F+p({ G


MR

s1hVN aGq0

DA

kZ_Y1Ww0

PID电子园51单片机学习网8Ns2U'C E.[%N3Ju


DCS电子园51单片机学习网EB6b&{ f%O8vI


VP

.~x,xk$W0

UDL

6B\%V/[+XS M0

UD(0~140octed)

XD)m2{ c}0

当以移动终端为目的时,PDU的格式为:电子园51单片机学习网7h!zaD T lHm-h`













SMSC电子园51单片机学习网x(j/Yaou&L


PDU类型电子园51单片机学习网9SENg9S ^(l


OA

%R5~}3Tz;P n0

PID

-}8dY3rLV9~0

DCS

d(c0n*rt~(s8v^0

SCTS电子园51单片机学习网Z[TQ3?


UDL电子园51单片机学习网s;dK-C mC


UD(0~140octed)电子园51单片机学习网:e5f_+Z }/\B"r%Y%Ub


其中,SMSC为短消息业务中心地址,DA/OA为源/目的地址,PID为协议识别,DCS为数据编码,UDL为用户数据长度,UD为用户数据,VP为有效时间,MR指明是发出信息,SCTS指明短消息到达业务中心的时间。电子园51单片机学习网S*W,bA*^1WWhy-Wa(m(V


2 PDU格式下短信息的接收

-dk o'xp&wAH6wN t0

根据设置不同,手机将收到的短消息保存在缓存单元或存入SIM卡,单片机从手机中接收短消息实质上就是从SIM或缓存中读出信息。这主要利用AT+CMGR和AT+CMGL两条指令来完成,其工作过程见图2。

YI}&w2x(h:}D&LW0

由于不同的厂商对AT指令集的解释代码和响应信息不一样,所以单片机首先要确认能否与手机建立起通信,一般用ATE指令完成此确认;然后用AT+CMGF指令选定短消息的数据格式;在收到手机的正确回答反以AT指令完成读出功能。一般用AT+CMGL读取以前的信息,在收到手机的RING(振铃)数据时,用AT+CMGR读取实时信息。

x,g/J3bp X h0

以下是笔者设计的物流数据采集系统中用到的接收SMS的一个实例,它说明了PDU模式的应用。单片机发送和接收(手机回答)均为ASCII码。所用手机为SIEMENS S3508i。电子园51单片机学习网ns hh0}'t1v


操作过程如下({}内为注释):电子园51单片机学习网 ?!gAy yj&i:M


发送:ATE

9IpL?D ?(YG0

手机回答:OK {已建立联接}电子园51单片机学习网 xeh-] o


发送:AT+CMGF=0 {选用PDU格式}

-mI2jfEe tR8\+\0

手机回答:OK {允许选择PDU格式}

-[&B!q7}([(@4j,J0

发送:AT+CMGL=2 {列出已有的短信息}电子园51单片机学习网"`4B8V8gL


手机回答:+CMGL:1,2,,24{1表示信息个数,2表示未发信息,24表示信息总容量}

,]-U#l1B\ {}%g2Vn0

0D71683108370105F004000D81683179133208F10000026080410033802632184CF682D电子园51单片机学习网3b8N4Q!Lg.T


95E0DC2B36D3D170A0243106933D97A0243106933D97A02451068B1983492608电子园51单片机学习网q'`,uOve


OK

NaW+_"Q%u0

以上这组PDU格式的十六进制字符串,不但包含了短消息的内容,同时包含了发送者的手机号码、短信息中心号码、短消息发送时间等。

m%Q h"gK0

下面对信息内容进行分析:

_$g!bb D+`0

0D:短信息中心地址(号码)长度。电子园51单片机学习网8H5A7? l4_


91:短信息中心号码类型,91是TON/NPI。TON/NPI遵守International/E.164标准,指在号码前需加'+'号;此外还可直有其他数值,但91最常用。

z@j@ V?TOr0

683108370105F0:SMSC 短信息所使用的服务中心号码13807310500。它经过十六进制以字节为单位的高低半字节换位处理,号码是奇数的添F,构成一个HEX字节。

e6TJ5W['r1q d0

04:PDU类型,文件头字节。电子园51单片机学习网'z|h/k@5w9]'N `


0B:主叫号码长度。电子园51单片机学习网?3\JM8d ridF


81:主叫号码类型。

i}%R{ dP Q0

3179133208F1:0A主叫号码,也经过了处理,实际号码为13973123801。

zT N'~8Nih0

00:PID,为协议标识。电子园51单片机学习网3S k+CM!X w%T3W


00:DCS短信息编码类型是GSM Default Alphabet,即由7位ASCII码移位组成8位十六进制码(octet),其方法见表2。

'jE G2P+M md:[4|;Z0








































































1sthex电子园51单片机学习网yT(g#u9AI


B0

U1T_ eMu0

A6

S8c h,`0U0

A5电子园51单片机学习网ZPET9t,Q0u


A4

;cW@4ZM^0

A3

&J`6ijXa8_;Q0

A2电子园51单片机学习网;H8] oj%H4r4x.v[H


A1电子园51单片机学习网J&o SB-IJh"`


A0

3{M/D2K1~:D Cw4Os0

2ndhex

j8[S^| j]X/y0

C1电子园51单片机学习网+RUh U u


C0

L}i*O.M1z0L0

B6

H9vI&^@}Bw0

B5电子园51单片机学习网8[dS:cx0K_


B4

u:?n0N],o+C0Pvr0

B3

:V$BeF*Q0

B2电子园51单片机学习网M%mL5mn[v8Ef


B1电子园51单片机学习网"s#@?#C%X0K e


3rdhex

#I T8Vk1\']cf}0

D2

-gE*p1w(D/FG0

D1

7V^;qJ#f"Tp0

D0电子园51单片机学习网 h6oA^&N LfT


C6电子园51单片机学习网Ud c^T


C5电子园51单片机学习网M i&p/J-x/_zL QB;W


C4电子园51单片机学习网L\ w&A)U R2XZdC


C3电子园51单片机学习网Q9k6VDV3k


C2

&uA eD(u t c2W og0

4thhex

:c"A'f%G7x:s_0

E3电子园51单片机学习网[ GrMyf A


E2

$~C_ygl,X7hP0

E1

6Ty8_9EGD;Qr;R9e0

E0电子园51单片机学习网N%?5aZ(^YT


D6电子园51单片机学习网yx)A gD{x|5r


D5电子园51单片机学习网9G hA"L(D'G!d'\_9b


D4电子园51单片机学习网!eT4^`+B|U


D3

5n{7Ih ~7Kb0

5thhex电子园51单片机学习网(P!a$B@3H


F4

h-[@0JEr2x0

F3电子园51单片机学习网I2_!u5j"j+U8b


F2

!_q/oojX v:\~0

F1

N/H7rnt4WOVL0

F0电子园51单片机学习网Z\1K!t[:Q/s1g0r


E6电子园51单片机学习网+Y$u,R\x8~FF


E5

/a[)~-^1D \0

E4电子园51单片机学习网g"D#o0v^g^x H


6thhex

)KA3A/e3A1G@0

G5

~0d OvE.^0

G4

x3F.uRqB'Hb0

G3

\WE-S2Mid0

G2

\?~7B U,I*m0

G1

b,S8\ M"^:H0

G0电子园51单片机学习网;|^'TN*Uz


F6电子园51单片机学习网(O7i2E*M(Pybrv ss


F5电子园51单片机学习网3Y8Z `JMs/]Ly


6thhex

~8v8AO H@we/m Y ~0

H6

7O R s L m[W;K0

H5

1w0lXJ:@)`1_0

H4电子园51单片机学习网Z\;h#}?2e;^*UC!R_


H3电子园51单片机学习网+g#m9Cu U&cja1Z


H2

h7{2]St8}&b o0

H1电子园51单片机学习网"PQn Pv|G


H0电子园51单片机学习网 m-_"o2Dv z2L


G6

om7Dd3S8P0

02608041003380:SCTS短信息发送时间,02/06/08/14:00:33.08。

N jrV$IA%m0

26:UDL经处理后的8位码(octet)短信息字节长度,它小于消息ASCII码的长度。电子园51单片机学习网$Y;@6V1}1u@K


32184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D97A02451068B1983492608:UD 编码后的PDU数据,短信息内容“2002/06/08/13:48ID102OKID103OK ID201FAIL”。

'g C tl z,eC1?+`%K0

3 短信息的发送

'u^B`O%nw(@PO0

与接收短信息一样,发送时也要先建立联接,传送一些初始化指令,然后发送短消息内容。下面是用SIEMENS S3508i发送一个短信息的例子,内容为:“2002/06/08/13:48 ID102OK ID103OK ID201FAIL”。其ASCII码为:“32030322F30362F30382F31333A34382049443130324F4B电子园51单片机学习网1cZv:y_6aa


2049443130334F4B2049443230314641494C20”。

nfX2f_%Q/k$Id@0

发送:ATE {请求建立联接}

m4S&n+RI0

手机回答:OK {已建立联接}电子园51单片机学习网q6| I1ZW5g O}


发送:AT+CMGF=0 {选择PDU模式}电子园51单片机学习网0DaJrtm


手机回答:OK

l a'[4kR#BF%t n&Tg0

发送:AT+CSMS=0{检测手机是否支持SMS命令}电子园51单片机学习网4j*A&O c I$jC


手机回答:OK电子园51单片机学习网)G,]*^'GoSx


发送:AT+CMGS=52{发送短信息,52 octets(不包括最初9个短信息元字节)}电子园51单片机学习网r0\1VlnE3F|


手机回答:>{允许上传数据,ASCII码是($20H,$2EH)}

l k4K:P s!n u0

发送:0891683108701305F011000B813179133208F10000AA2632184CF682D95电子园51单片机学习网 fqz QyQ6f


E30DC2B36D3D170A0243106933D97A0243106933D97A02451068B19834926081A电子园51单片机学习网Nh4NN-i:Nl-n P


不计最初9个短消息信元字节,本短信息有52字节(104个字符)。AT+CMGS仅说明了SMSC信息内容的长度,在收到手机回答的>符号手才发送PDU数据串,并以(CTRL^Z)结束。电子园51单片机学习网6xk3|2S2h ^7@+Z


PDU数据串的内容说明如下:

M$I9U8P9Rr9HA0

08:短信息信元SMSC(短信息中心号码)的字节长度电子园51单片机学习网Uy9invp$L'WP_


91:短信息中心号码类型,91表明中心号码是国际通用电话号码。电子园51单片机学习网5H'Ovdvf3w


683108701305F0:短信息中心号码:8613807310500。电子园51单片机学习网R:P p;u_!k;}


11:PDU SMS发送的文件头字节。这里11指正常发送短信息。电子园51单片机学习网vk.Y6b c lM"w*H


00:信息类型。这里00指让手机自动加上主叫号码。

N!cu gdg8vb0

0B:被叫号码长度。电子园51单片机学习网)V9Qa)HU,F)L S:I0D


81:被叫号码类型。

oF)BR#Uk0

3179133208F1:被叫号码13973123801。

d g'oYk!H%O0

00:协议标识。

!y6j.` D&G!Hyq0

00:短信息编码类型是GSM Default Alphabet。电子园51单片机学习网;o2bjj\r-\(f7{


AA:短信息被保留的时间为4天,其计算方法依照表3。电子园51单片机学习网0?5q z @[Y!H


















VP值 短消息有效时间长度
0~143 (VP+1)×5分钟
144~167 12时+(VP-143)×30分
168~196 1天×(VP-166)
197~255 1周×(VP-192)

26:PDU格式短信息编码后字节长度。

\SC"J(Sl0

32184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D电子园51单片机学习网1}_Ef%Mg5h]


97A02451068B1983492608:编码后的PDU数据,短信息内容为“2002/06/08/13:电子园51单片机学习网0Lsn O+W;H3M


48ID102OKID103OK ID201FAIL”。电子园51单片机学习网 y3ZM8Rq+i%H


1A:ASCII码CTRL^Z:报文结束标志。电子园51单片机学习网5_D X6wE


4 应用情况及常见主要问题的解决

%v^n"E a0

笔者用MCS-51系列的单片机研制了一个手持式的数据采集产品,通过SIMEENS手机,利用GSM的SMS传输数据。经过在国内多个省市较大数量长期广泛的使用,性能良好,没有出现数据丢失的现象。证明上述设计用,性能良好,没有出现数据丢失的现象。证明上述设计是正确的。但在调试和试用阶段也遇到了如下问题:电子园51单片机学习网n#b!a+jS2E r


(1)接口电平

exD#i%Vcc-b0

手机的电缆接口电平一般是3V左右,单片机系统的工作电压一般为2.7~5.5V,范围较宽,为保证数据传输的正确,需在接口加电平限制电路,详见图1。

Fay @ W\"CP(U$k0

(2)部分城市无法使用电子园51单片机学习网6k(V*K_?"`DoX


一些城市的SMS平台不允许使用缺省短消息服务中心号码的协议,只需在发送的PDU数据前面几个字节加上中心号码即可,详见本文发送实例。电子园51单片机学习网A:] AZ G xN0Z,tw9A


(3)不能接收已正确发送的短消息

"js*w7` y%`%X'D0

除GSM的SMS信道拥塞原因外,主要是PDU中PID字节的设置,使得收到的信息要存入SIM卡,而SIM卡已满,故不再接收信息。改变PID的设置即可。

'hZ"HV-O0

(4)收不到开机前的短消息电子园51单片机学习网c*L m8|QYx,G


主要是发送数据时,对短消息有效时间VP值设置不当

上一篇: stm32应用例程 下一篇: 单片机多机通信网络改进及数据通信容错技术

分享 举报