- 相關(guān)推薦
用單片機(jī)控制手機(jī)收發(fā)短信息
摘要:介紹用MCS-51系列單片機(jī)控制手機(jī)收發(fā)短信息的原理、硬件電路、PDU數(shù)據(jù)格式和符合GSM07.05協(xié)議要求的短信息發(fā)送/接收程序,同時(shí)給出了一個(gè)應(yīng)用實(shí)例。關(guān)鍵詞:單片機(jī) 短信息 PDU GSM 接口
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)的主要方式。主要提供話(huà)音、短信息、數(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)不須再組建專(zhuān)用通信網(wǎng)絡(luò),所以具有實(shí)時(shí)傳輸數(shù)據(jù)功能的短消息應(yīng)用將得到迅速普及。
目前,人們?cè)O(shè)計(jì)的各類(lèi)DTE設(shè)備基礎(chǔ)上以微處理器為核心,帶有RS232/RS485等通信接口,在物理層上很容易實(shí)現(xiàn)與GSM設(shè)置(如手機(jī)等)的連接。但對(duì)SMS協(xié)議的研究文獻(xiàn)卻較少,特別是用單片機(jī)控制手機(jī)的SMS(Short Message Service)收發(fā)的研究更少。筆者在用單片機(jī)設(shè)計(jì)基于GSM的SMS數(shù)據(jù)采集器時(shí),對(duì)怎樣用單片機(jī)控制手機(jī)收發(fā)短信息進(jìn)行了探討。
(范文先生網(wǎng)325224.com收集整理)
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)過(guò)實(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終端沒(méi)開(kāi)機(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命令見(jiàn)表1。
表1 常用AT指令
GSM手機(jī)通過(guò)異步通信接口實(shí)現(xiàn)對(duì)SMS的控制共有三種接入?yún)f(xié)議:Block Mode;基于AT命令的TextMode;基于AT命令的PDU Mode。PDU模式是發(fā)送或接收手機(jī)SMS信息的一種方法,短信息正文經(jīng)過(guò)十六進(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é)議類(lèi)型和正文,正文長(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類(lèi)型 MR DA PID DCS VP UDL UD(0~140octed)當(dāng)以移動(dòng)終端為目的時(shí),PDU的格式為:
SMSC PDU類(lèi)型 OA PID DCS SCTS UDL UD(0~140octed)其中,SMSC為短消息業(yè)務(wù)中心地址,DA/OA為源/目的地址,PID為協(xié)議識(shí)別,DCS為數(shù)據(jù)編碼,UDL為用戶(hù)數(shù)據(jù)長(zhǎng)度,UD為用戶(hù)數(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兩條指令來(lái)完成,其工作過(guò)程見(jiàn)圖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í)例,它說(shuō)明了PDU模式的應(yīng)用。單片機(jī)發(fā)送和接收(手機(jī)回答)均為ASCII碼。所用手機(jī)為SIEMENS S3508i。
操作過(guò)程如下({}內(nèi)為注釋?zhuān)?
發(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è)萘縸
0D71683108370105F004000D81683179133208F10000026080410033802632184CF682D
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)碼類(lèi)型,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)過(guò)十六進(jìn)制以字節(jié)為單位的高低半字節(jié)換位處理,號(hào)碼是奇數(shù)的添F,構(gòu)成一個(gè)HEX字節(jié)。
04:PDU類(lèi)型,文件頭字節(jié)。
0B:主叫號(hào)碼長(zhǎng)度。
81:主叫號(hào)碼類(lèi)型。
3179133208F1:0A主叫號(hào)碼,也經(jīng)過(guò)了處理,實(shí)際號(hào)碼為13973123801。
00:PID,為協(xié)議標(biāo)識(shí)。
00:DCS短信息編碼類(lèi)型是GSM Default Alphabet,即由7位ASCII碼移位組成8位十六進(jìn)制碼(octet),其方法見(jiàn)表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 G602608041003380:SCTS短信息發(fā)送時(shí)間,02/06/08/14:00:33.08。
26:UDL經(jīng)處理后的8位碼(octet)短信息字節(jié)長(zhǎng)度,它小于消息ASCII碼的長(zhǎng)度。
32184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D97A02451068B1983492608: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è)字符)。AT+CMGS僅說(shuō)明了SMSC信息內(nèi)容的長(zhǎng)度,在收到手機(jī)回答的>符號(hào)手才發(fā)送PDU數(shù)據(jù)串,并以(CTRL^Z)結(jié)束。
PDU數(shù)據(jù)串的內(nèi)容說(shuō)明如下:
08:短信息信元SMSC(短信息中心號(hào)碼)的字節(jié)長(zhǎng)度
91:短信息中心號(hào)碼類(lèi)型,91表明中心號(hào)碼是國(guó)際通用電話(huà)號(hào)碼。
683108701305F0:短信息中心號(hào)碼:8613807310500。
11:PDU SMS發(fā)送的文件頭字節(jié)。這里11指正常發(fā)送短信息。
00:信息類(lèi)型。這里00指讓手機(jī)自動(dòng)加上主叫號(hào)碼。
0B:被叫號(hào)碼長(zhǎng)度。
81:被叫號(hào)碼類(lèi)型。
3179133208F1:被叫號(hào)碼13973123801。
00:協(xié)議標(biāo)識(shí)。
00:短信息編碼類(lèi)型是GSM Default Alphabet。
AA:短信息被保留的時(shí)間為4天,其計(jì)算方法依照表3。
VP值 短消息有效時(shí)間長(zhǎng)度 0~143 (VP+1)×5分鐘 144~167 12時(shí)+(VP-143)×30分 168~196 1天×(VP-166) 197~255 1周×(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)用情況及常見(jiàn)主要問(wèn)題的解決
筆者用MCS-51系列的單片機(jī)研制了一個(gè)手持式的數(shù)據(jù)采集產(chǎn)品,通過(guò)SIMEENS手機(jī),利用GSM的SMS傳輸數(shù)據(jù)。經(jīng)過(guò)在國(guó)內(nèi)多個(gè)省市較大數(shù)量長(zhǎng)期廣泛的使用,性能良好,沒(méi)有出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象。證明上述設(shè)計(jì)用,性能良好,沒(méi)有出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象。證明上述設(shè)計(jì)是正確的。但在調(diào)試和試用階段也遇到了如下問(wèn)題:
(1)接口電平
手機(jī)的電纜接口電平一般是3V左右,單片機(jī)系統(tǒng)的工作電壓一般為2.7~5.5V,范圍較寬,為保證數(shù)據(jù)傳輸?shù)恼_,需在接口加電平限制電路,詳見(jiàn)圖1。
(2)部分城市無(wú)法使用
一些城市的SMS平臺(tái)不允許使用缺省短消息服務(wù)中心號(hào)碼的協(xié)議,只需在發(fā)送的PDU數(shù)據(jù)前面幾個(gè)字節(jié)加上中心號(hào)碼即可,詳見(jiàn)本文發(fā)送實(shí)例。
(3)不能接收已正確發(fā)送的短消息
除GSM的SMS信道擁塞原因外,主要是PDU中PID字節(jié)的設(shè)置,使得收到的信息要存入SIM卡,而SIM卡已滿(mǎn),故不再接收信息。改變PID的設(shè)置即可。
(4)收不到開(kāi)機(jī)前的短消息
主要是發(fā)送數(shù)據(jù)時(shí),對(duì)短消息有效時(shí)間VP值設(shè)置不當(dāng)造成的。
【用單片機(jī)控制手機(jī)收發(fā)短信息】相關(guān)文章:
單片機(jī)控制GSM模塊實(shí)現(xiàn)短信收發(fā)的軟件設(shè)計(jì)08-06
一種用單片機(jī)控制的光譜數(shù)據(jù)采集系統(tǒng)08-06
用51單片機(jī)控制RTL8019AS實(shí)現(xiàn)以太網(wǎng)通訊08-06
用PIC單片機(jī)控制DDS芯片AD9852實(shí)現(xiàn)雷達(dá)跳頻系統(tǒng)08-06
基于單片機(jī)的噴墨打印機(jī)控制技術(shù)08-06
一種簡(jiǎn)單串行鼠標(biāo)控制的單片機(jī)實(shí)現(xiàn)08-06
基于單片機(jī)控制的數(shù)字氣壓計(jì)設(shè)計(jì)與實(shí)現(xiàn)08-06
愛(ài)情短信息07-12