新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)控制來實(shí)現(xiàn)手機(jī)收發(fā)短信息

基于單片機(jī)控制來實(shí)現(xiàn)手機(jī)收發(fā)短信息

作者: 時(shí)間:2011-08-26 來源:網(wǎng)絡(luò) 收藏

  GSM(Global System for Mobile communication)系統(tǒng)是目前基于時(shí)分多址技術(shù)的移動(dòng)通訊體制中比較成熟、完善、應(yīng)用最廣泛的一種系統(tǒng)。目前已建成的覆蓋全國(guó)的GSM數(shù)字蜂窩移動(dòng)通信網(wǎng),是我國(guó)公眾移動(dòng)通信網(wǎng)的主要方式。主要提供話音、短信息、數(shù)據(jù)等多種業(yè)務(wù)?;贕SM短消息功能可以做成傳輸各種檢測(cè)、監(jiān)控?cái)?shù)據(jù)信號(hào)和控制命令的數(shù)據(jù)通信系統(tǒng),能廣泛用于遠(yuǎn)程監(jiān)控、定位導(dǎo)航、個(gè)人通信終端等。由于公眾GSM網(wǎng)絡(luò)在全球范圍內(nèi)實(shí)現(xiàn)了聯(lián)網(wǎng)和漫游,建立上述系統(tǒng)不須再組建專用通信網(wǎng)絡(luò),所以具有實(shí)時(shí)傳輸數(shù)據(jù)功能的短消息應(yīng)用將得到迅速普及。

  目前,人們?cè)O(shè)計(jì)的各類DTE設(shè)備基礎(chǔ)上以微處理器為核心,帶有RS232/RS485等通信接口,在物理層上很容易實(shí)現(xiàn)與GSM設(shè)置(如手機(jī)等)的連接。但對(duì)SMS協(xié)議的研究文獻(xiàn)卻較少,特別是用手機(jī)的SMS(Short Message Service)收發(fā)的研究更少。筆者在用單片機(jī)設(shè)計(jì)基于GSM的SMS數(shù)據(jù)采集器時(shí),對(duì)怎樣用進(jìn)行了探討。

  

基于單片機(jī)控制來實(shí)現(xiàn)手機(jī)收發(fā)短信息

  1 串口控制SMS的工作原理

  單片機(jī)與手機(jī)一般采用串行異步通信接口,具有紅外和通信電纜兩種連接方式,通信速度可設(shè)定,通常為19200bps。采用紅外接口的優(yōu)點(diǎn)是單片機(jī)系統(tǒng)與手機(jī)電氣隔離,相互不干擾,接口各自獨(dú)立,使用方便;缺點(diǎn)是通信距離較短,紅外傳播的方向性對(duì)接口相對(duì)位置有要求。采用電纜連接時(shí),數(shù)據(jù)傳輸?shù)目煽啃暂^好;其主要缺點(diǎn)是接口的電氣參數(shù)不兼容,設(shè)計(jì)不當(dāng)時(shí)會(huì)對(duì)手機(jī)的通信質(zhì)量產(chǎn)生影響。筆者經(jīng)過實(shí)踐設(shè)計(jì)的接口電平轉(zhuǎn)換電路如圖1。

  GSM的短信息業(yè)務(wù)SMS利用信令信道傳輸,這是GSM通信網(wǎng)所特有的。它不用撥號(hào)建立連接,把要發(fā)的信息加上目的地址發(fā)送到短信息服務(wù)中心,經(jīng)短消息服務(wù)中心完成存儲(chǔ)后再發(fā)送給最終的信宿。所以當(dāng)目的GSM終端沒開機(jī)時(shí)信息不會(huì)丟失。每個(gè)短消息的信息量限制為160字節(jié)。

  現(xiàn)在市場(chǎng)上大多數(shù)手機(jī)均支持GSM07.05規(guī)定的AT指令集。該指令集是ETSI(歐洲通信技術(shù)委員會(huì))發(fā)布的,其中包含了對(duì)SMS的控制。利用GSM手機(jī)的串行接口,單片機(jī)向手機(jī)收發(fā)一系列的AT命令,就能達(dá)到控制手機(jī)收發(fā)SMS的目的。ETSI的GSM07.05中用于SMS收發(fā)控制的主要AT命令見表1。

  表1 常用AT指令

  GSM07.05

  Function(功能)

  ATE0

  RESET

  AT+CSMS

  選擇短信息服務(wù)

  AT+CPMS

  選擇短信息內(nèi)存

  AT+CMGF

  選擇短信息格式

  AT+CSCA

  短信息中心地址

  AT+CNMI

  顯示新收到的短信息

  AT+CMGR

  讀短信息

  AT+CMGS

  發(fā)送短信息

  AT+CMGL

  列出SIM卡中短信息

  AT+CMSS

  從SIM內(nèi)存中發(fā)短信息

  AT+CMGW

  向SIM內(nèi)存中寫入待發(fā)短信息

  AT+CMGD

  刪除SIM內(nèi)存中的短信息

  AT+CSCB

  選擇蜂窩廣播信息

  GSM手機(jī)通過異步通信接口實(shí)現(xiàn)對(duì)SMS的控制共有三種接入?yún)f(xié)議:Block Mode;基于AT命令的TextMode;基于AT命令的PDU Mode。PDU模式是發(fā)送或接收手機(jī)SMS信息的一種方法,短信息正文經(jīng)過十六進(jìn)制編碼后被傳送。目前,PDU Mode應(yīng)用最為廣泛,基本上全國(guó)所有的電信局都提供支持PDU Mode的短消息業(yè)務(wù)。有些地址則不支持Text Mode和Block Mode,這就限制了這兩種接入?yún)f(xié)議的應(yīng)用,而且PDU Mode已有取代Block Mode的趨勢(shì)。為了保證系統(tǒng)具有廣泛的適用性,本文采用PDU模式收發(fā)SMS。

  PDU相當(dāng)于一個(gè)數(shù)據(jù)包,它由構(gòu)成消息(SMS)的信息組成。作為一種數(shù)據(jù)單元,它必須包含源/目的地址、保護(hù)(有效)時(shí)間、數(shù)據(jù)格式、協(xié)議類型和正文,正文長(zhǎng)度可達(dá)140字節(jié),它們都以十六進(jìn)制表示。PDU結(jié)構(gòu)根據(jù)短消息由移動(dòng)終端發(fā)起或以移動(dòng)終端為目的而不同。

  當(dāng)由移動(dòng)終端發(fā)起時(shí),PDU的格式為:

  SMSC

  PDU類型

  MR

  DA

  PID

  DCS

  VP

  UDL

  UD(0~140octed)

  當(dāng)以移動(dòng)終端為目的時(shí),PDU的格式為:

  SMSC

  PDU類型

  OA

  PID

  DCS

  SCTS

  UDL

  UD(0~140octed)

  其中,SMSC為短消息業(yè)務(wù)中心地址,DA/OA為源/目的地址,PID為協(xié)議識(shí)別,DCS為數(shù)據(jù)編碼,UDL為用戶數(shù)據(jù)長(zhǎng)度,UD為用戶數(shù)據(jù),VP為有效時(shí)間,MR指明是發(fā)出信息,SCTS指明短消息到達(dá)業(yè)務(wù)中心的時(shí)間。

  2 PDU格式下短信息的接收

  根據(jù)設(shè)置不同,手機(jī)將收到的短消息保存在緩存單元或存入SIM卡,單片機(jī)從手機(jī)中接收短消息實(shí)質(zhì)上就是從SIM或緩存中讀出信息。這主要利用AT+CMGR和AT+CMGL兩條指令來完成,其工作過程見圖2。

  由于不同的廠商對(duì)AT指令集的解釋代碼和響應(yīng)信息不一樣,所以單片機(jī)首先要確認(rèn)能否與手機(jī)建立起通信,一般用ATE指令完成此確認(rèn);然后用AT+CMGF指令選定短消息的數(shù)據(jù)格式;在收到手機(jī)的正確回答反以AT指令完成讀出功能。一般用AT+CMGL讀取以前的信息,在收到手機(jī)的RING(振鈴)數(shù)據(jù)時(shí),用AT+CMGR讀取實(shí)時(shí)信息。

  以下是筆者設(shè)計(jì)的物流數(shù)據(jù)采集系統(tǒng)中用到的接收SMS的一個(gè)實(shí)例,它說明了PDU模式的應(yīng)用。單片機(jī)發(fā)送和接收(手機(jī)回答)均為ASCII碼。所用手機(jī)為SIEMENS S3508i。

  操作過程如下({}內(nèi)為注釋):

  發(fā)送:ATE

  手機(jī)回答:OK {已建立聯(lián)接}

  發(fā)送:AT+CMGF=0 {選用PDU格式}

  手機(jī)回答:OK {允許選擇PDU格式}

  發(fā)送:AT+CMGL=2 {列出已有的短信息}

  手機(jī)回答:+CMGL:1,2,,24{1表示信息個(gè)數(shù),2表示未發(fā)信息,24表示信息總?cè)萘縸

  0D71683108370105F004000D81683179133208F1000002608041003380263218

4CF682D

  95E0DC2B36D3D170A0243106933D97A0243106933D97A02451068B1983492608

  OK

  以上這組PDU格式的十六進(jìn)制字符串,不但包含了短消息的內(nèi)容,同時(shí)包含了發(fā)送者的手機(jī)號(hào)碼、短信息中心號(hào)碼、短消息發(fā)送時(shí)間等。

  下面對(duì)信息內(nèi)容進(jìn)行分析:

  0D:短信息中心地址(號(hào)碼)長(zhǎng)度。

  91:短信息中心號(hào)碼類型,91是TON/NPI。TON/NPI遵守International/E.164標(biāo)準(zhǔn),指在號(hào)碼前需加"+"號(hào);此外還可直有其他數(shù)值,但91最常用。

  683108370105F0:SMSC 短信息所使用的服務(wù)中心號(hào)碼13807310500。它經(jīng)過十六進(jìn)制以字節(jié)為單位的高低半字節(jié)換位處理,號(hào)碼是奇數(shù)的添F,構(gòu)成一個(gè)HEX字節(jié)。

  04:PDU類型,文件頭字節(jié)。

  0B:主叫號(hào)碼長(zhǎng)度。

  81:主叫號(hào)碼類型。

  3179133208F1:0A主叫號(hào)碼,也經(jīng)過了處理,實(shí)際號(hào)碼為13973123801。

  00:PID,為協(xié)議標(biāo)識(shí)。

  00:DCS短信息編碼類型是GSM Default Alphabet,即由7位ASCII碼移位組成8位十六進(jìn)制碼(octet),其方法見表2。

  1sthex

  B0

  A6

  A5

  A4

  A3

  A2

  A1

  A0

  2ndhex

  C1

  C0

  B6

  B5

  B4

  B3

  B2

  B1

  3rdhex

  D2

  D1

  D0

  C6

  C5

  C4

  C3

  C2

  4thhex

  E3

  E2

  E1

  E0

  D6

  D5

  D4

  D3

  5thhex

  F4

  F3

  F2

  F1

  F0

  E6

  E5

  E4

  6thhex

  G5

  G4

  G3

  G2

  G1

  G0

  F6

  F5

  6thhex

  H6

  H5

  H4

  H3

  H2

  H1

  H0

  G6

  02608041003380:SCTS短信息發(fā)送時(shí)間,02/06/08/14:00:33.08。

  26:UDL經(jīng)處理后的8位碼(octet)短信息字節(jié)長(zhǎng)度,它小于消息ASCII碼的長(zhǎng)度。

  32184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D97A0245

1068B1983492608:UD 編碼后的PDU數(shù)據(jù),短信息內(nèi)容“2002/06/08/13:48ID102OKID103OK ID201FAIL”。

  3 短信息的發(fā)送

  與接收短信息一樣,發(fā)送時(shí)也要先建立聯(lián)接,傳送一些初始化指令,然后發(fā)送短消息內(nèi)容。下面是用SIEMENS S3508i發(fā)送一個(gè)短信息的例子,內(nèi)容為:“2002/06/08/13:48 ID102OK ID103OK ID201FAIL”。其ASCII碼為:“32030322F30362F30382F31333A34382049443130324F4B

  2049443130334F4B2049443230314641494C20”。

  發(fā)送:ATE {請(qǐng)求建立聯(lián)接}

  手機(jī)回答:OK {已建立聯(lián)接}

  發(fā)送:AT+CMGF=0 {選擇PDU模式}

  手機(jī)回答:OK

  發(fā)送:AT+CSMS=0{檢測(cè)手機(jī)是否支持SMS命令}

  手機(jī)回答:OK

  發(fā)送:AT+CMGS=52{發(fā)送短信息,52 octets(不包括最初9個(gè)短信息元字節(jié))}

  手機(jī)回答:>{允許上傳數(shù)據(jù),ASCII碼是($20H,$2EH)}

  發(fā)送:0891683108701305F011000B813179133208F10000AA2632184CF682D95

  E30DC2B36D3D170A0243106933D97A0243106933D97A02451068B19834926081A

  不計(jì)最初9個(gè)短消息信元字節(jié),本短信息有52字節(jié)(104個(gè)字符)。

  

基于單片機(jī)控制來實(shí)現(xiàn)手機(jī)收發(fā)短信息

  AT+CMGS僅說明了SMSC信息內(nèi)容的長(zhǎng)度,在收到手機(jī)回答的>符號(hào)手才發(fā)送PDU數(shù)據(jù)串,并以(CTRL^Z)結(jié)束。

  PDU數(shù)據(jù)串的內(nèi)容說明如下:

  08:短信息信元SMSC(短信息中心號(hào)碼)的字節(jié)長(zhǎng)度

  91:短信息中心號(hào)碼類型,91表明中心號(hào)碼是國(guó)際通用電話號(hào)碼。

  683108701305F0:短信息中心號(hào)碼:8613807310500。

  11:PDU SMS發(fā)送的文件頭字節(jié)。這里11指正常發(fā)送短信息。

  00:信息類型。這里00指讓手機(jī)自動(dòng)加上主叫號(hào)碼。

  0B:被叫號(hào)碼長(zhǎng)度。

  81:被叫號(hào)碼類型。

  3179133208F1:被叫號(hào)碼13973123801。

  00:協(xié)議標(biāo)識(shí)。

  00:短信息編碼類型是GSM Default Alphabet。

  AA:短信息被保留的時(shí)間為4天,其計(jì)算方法依照表3。

  VP值

  短消息有效時(shí)間長(zhǎng)度

  0~143

  (VP+1)%26;#215;5分鐘

  144~167

  12時(shí)+(VP-143)%26;#215;30分

  168~196

  1天%26;#215;(VP-166)

  197~255

  1周%26;#215;(VP-192)

  26:PDU格式短信息編碼后字節(jié)長(zhǎng)度。

  32184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D

  97A02451068B1983492608:編碼后的PDU數(shù)據(jù),短信息內(nèi)容為“2002/06/08/13:

  48ID102OKID103OK ID201FAIL”。

  1A:ASCII碼CTRL^Z:報(bào)文結(jié)束標(biāo)志。

  4 應(yīng)用情況及常見主要問題的解決

  筆者用MCS-51系列的單片機(jī)研制了一個(gè)手持式的數(shù)據(jù)采集產(chǎn)品,通過SIMEENS手機(jī),利用GSM的SMS傳輸數(shù)據(jù)。經(jīng)過在國(guó)內(nèi)多個(gè)省市較大數(shù)量長(zhǎng)期廣泛的使用,性能良好,沒有出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象。證明上述設(shè)計(jì)用,性能良好,沒有出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象。證明上述設(shè)計(jì)是正確的。但在調(diào)試和試用階段也遇到了如下問題:

  (1)接口電平

  手機(jī)的電纜接口電平一般是3V左右,單片機(jī)系統(tǒng)的工作電壓一般為2.7~5.5V,范圍較寬,為保證數(shù)據(jù)傳輸?shù)恼_,需在接口加電平限制電路,詳見圖1。

  (2)部分城市無法使用

  一些城市的SMS平臺(tái)不允許使用缺省短消息服務(wù)中心號(hào)碼的協(xié)議,只需在發(fā)送的PDU數(shù)據(jù)前面幾個(gè)字節(jié)加上中心號(hào)碼即可,詳見本文發(fā)送實(shí)例。

  (3)不能接收已正確發(fā)送的短消息

  除GSM的SMS信道擁塞原因外,主要是PDU中PID字節(jié)的設(shè)置,使得收到的信息要存入SIM卡,而SIM卡已滿,故不再接收信息。改變PID的設(shè)置即可。

  (4)收不到開機(jī)前的短消息

  主要是發(fā)送數(shù)據(jù)時(shí),對(duì)短消息有效時(shí)間VP值設(shè)置不當(dāng)造成的。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉