摘 要: 研究了GSM MODEM,、GPS模塊和Atmega128單片機(jī)的通信,,闡述了GSM MODEM收發(fā)信息的基本原理以及通過(guò)單片機(jī)控制GSM MODEM收發(fā)信息和接收GPS信息的基本過(guò)程。介紹了以單片機(jī)為主的硬件電路以及軟件實(shí)現(xiàn)過(guò)程,,詳細(xì)分析了程序設(shè)計(jì)的流程,。
關(guān)鍵詞: GSM MODEM;GPS,;Atmega128單片機(jī)
在惡劣的自然條件下,,實(shí)施人工作業(yè)有很大的危險(xiǎn)性,雖然有時(shí)可以由機(jī)器人來(lái)代替人,,但機(jī)器人造價(jià)昂貴,,因而研究一款造價(jià)低廉而又實(shí)用的遠(yuǎn)程控制系統(tǒng)具有重大意義。
GSM網(wǎng)絡(luò)技術(shù)的發(fā)展和GSM網(wǎng)絡(luò)覆蓋面積的增加,,使其在遙測(cè),、遙控、數(shù)據(jù)采集和遠(yuǎn)程控制等領(lǐng)域得到了廣泛應(yīng)用,。單片機(jī)與短信貓(GSM MODEM)的通信在GSM的應(yīng)用中占據(jù)重要位置,,GPS應(yīng)用的普及使得遠(yuǎn)程控制及定位得以實(shí)現(xiàn)。本文給出了GSM MODEM,、GPS模塊和Atmegal系列單片機(jī)的硬軟件設(shè)計(jì),,并介紹了整個(gè)模塊的編程實(shí)現(xiàn)過(guò)程。
1 系統(tǒng)的硬件構(gòu)成
1.1 Atmega128單片機(jī)簡(jiǎn)介
Atmega128單片機(jī)是一款基于AVR內(nèi)核,、采用RISC結(jié)構(gòu)的增強(qiáng)型低功耗CMOS 8 bit微控制器,;其大部分指令在一個(gè)時(shí)鐘周期內(nèi)完成,,因此具有1 MIPS/MHz的數(shù)據(jù)吞吐率,;具有優(yōu)化的功率消耗結(jié)構(gòu),在功耗相對(duì)較少的情況下可以進(jìn)行復(fù)雜的處理,。
1.2 單片機(jī)控制GSM MODEM的原理
1.2.1 AT指令簡(jiǎn)介
AT指令就是帶有串行口的設(shè)備操作GSM MODEM或手機(jī)的指令集,。每個(gè)AT指令都以AT+開(kāi)頭,以回車(chē)換行為結(jié)尾,。每個(gè)命令執(zhí)行成功與否都有相應(yīng)的信號(hào)返回,。本文僅簡(jiǎn)單介紹將設(shè)備所用到的與發(fā)送和接收信息相關(guān)的AT指令[1]。
1.2.2 與GSM MODEM相關(guān)的AT指令
GSM MODEM與單片機(jī)或終端之間通過(guò)串行口RS-232C連接,。多數(shù)GSM MODEM使用AT指令來(lái)設(shè)置參數(shù),。為避免在程序運(yùn)行過(guò)程中出現(xiàn)問(wèn)題,,致使GSM MODEM不能正常工作,本文用計(jì)算機(jī)中的超級(jí)終端來(lái)對(duì)其進(jìn)行設(shè)置,。下面是常用的與短信數(shù)據(jù)通信開(kāi)發(fā)相關(guān)的幾條主要的AT指令[2-4],。
AT+CMGF:選擇對(duì)短消息控制的模式(0—PDU;1—文本),;
AT+CMGS:發(fā)送短消息,;
AT+CMGR:讀短消息;
AT+CMGL:列出SIM卡中的短消息,;
AT+CMGD:刪除短信息(刪除一條或多條短信息),。
1.2.3 對(duì)短消息控制的三種模式
對(duì)短消息控制共有三種模式:(1)基于AT命令的Text Mode;(2)Block Mode,;(3)基于AT命令的PDU Mode,。使用Block Mode需要手機(jī)生產(chǎn)廠家提供驅(qū)動(dòng)支持,目前PDU Mode已取代Block Mode,,而Text Mode相對(duì)比較簡(jiǎn)單,,應(yīng)用較為方便,可以滿足本設(shè)備的需求,。故本設(shè)備將GSM MODEM設(shè)置為T(mén)ext Mode,。
1.3 單片機(jī)與GSM MODEM的連接
由于GSM MODEM提供的接口是標(biāo)準(zhǔn)的RS-232C接口,采用EIA-RS-232C電平,。而單片機(jī)使用TTL電平,,與EIA-RS-232C電平不兼容,因此,,需要在單片機(jī)和GSM MODEM之間連接電路實(shí)現(xiàn)電平轉(zhuǎn)換,。一般用芯片MAX232來(lái)實(shí)現(xiàn)EIA-RS-232C與TTL電平之間的轉(zhuǎn)換。
MAX232芯片是Maxim公司生產(chǎn)的,,包含二路接收器和驅(qū)動(dòng)器,,適用于各種EIA-RS-232C和V.28/V.24的通信接口。MAX232芯片內(nèi)部有一個(gè)電源電壓變換器,,可以把輸入的+5 V電源電壓變換成RS-232C輸出電平所需的±10 V電壓,,其工作電壓為+5 V。
本文單片機(jī)屬于主控設(shè)備,,用串口與GSM MODEM連接過(guò)程中需要注意接線的方法,。GSM MODEM的串口將RS-232C接口標(biāo)準(zhǔn)定義的所有信號(hào)線都用到了,并且是按照DTE和DCE之間信息交換協(xié)議的要求進(jìn)行連接的,,使用時(shí)只不過(guò)是把DTE發(fā)出的信號(hào)當(dāng)作對(duì)方DCE發(fā)來(lái)的信號(hào),。因此,把這種連接稱為雙叉環(huán)回接口。單片機(jī)與GSM MODEM的串口連接如圖1所示,。
2 設(shè)備功能分析以及各模塊的編程實(shí)現(xiàn)
2.1 設(shè)備功能分析
本設(shè)備主要是完成對(duì)SMS短消息的接收及分析,,并執(zhí)行相應(yīng)的動(dòng)作和發(fā)送反應(yīng)信息完成對(duì)目標(biāo)的遠(yuǎn)程控制。當(dāng)需要提供地理信息時(shí)將連接GPS的串口打開(kāi),,接收GPS信息,。具體功能如下:
(1)模塊開(kāi)機(jī)后能夠隨時(shí)接收來(lái)自主控系統(tǒng)按照協(xié)議發(fā)送的信息。
(2)設(shè)定一定的時(shí)間對(duì)存儲(chǔ)卡內(nèi)的信息內(nèi)容進(jìn)行篩選解讀分析,,做出相應(yīng)的處理,。
(3)如果需要設(shè)備的地理信息,將連接GPS的串口打開(kāi)接收GPS數(shù)據(jù)信息,。
系統(tǒng)的工作流程圖如圖2所示,。
2.2 設(shè)備各模塊的編程實(shí)現(xiàn)
按照設(shè)備的功能要求,將設(shè)備分為以下幾個(gè)部分,。
2.2.1 初始化模塊
初始化主要包括:
(1)單片機(jī)的初始化,。對(duì)單片機(jī)的串口進(jìn)行設(shè)置,打開(kāi)兩個(gè)串口中斷允許位,,設(shè)置波特率,,用于與GSM MODEM和GPS進(jìn)行通信[5-6]。
(2)GSM MODEM的初始化,。對(duì)GSM MODEM的工作方式進(jìn)行設(shè)定(包括關(guān)回顯),,以方便程序運(yùn)行。具體程序如下:
const char ATE0[]="ATE0\r\n",;//定義關(guān)回顯指令
COM_rx_reset( ),; //復(fù)位串口
COM_putsf(ATE0); //關(guān)回顯
其他的工作方式可由計(jì)算機(jī)的超級(jí)終端進(jìn)行設(shè)置,,可以一直保存設(shè)置,。而GPS模塊則利用自身的默認(rèn)設(shè)置。
2.2.2 短信息的發(fā)送和接收?qǐng)?zhí)行模塊
短信息的發(fā)送需要運(yùn)用AT指令將要發(fā)送的內(nèi)容通過(guò)串口發(fā)送給GSM MODEM模塊,。在短信發(fā)送中,,只向主控機(jī)發(fā)送所要求的信息內(nèi)容,因此通信地址固定添加主控機(jī)的地址即可,。發(fā)送信息的功能函數(shù)程序如下:
COM_rx_reset( ) ,; //復(fù)位串口
COM_putsf(AT_CMGS) ; //發(fā)送AT控制指令
COM_putsf(Mp1_Hand),; //添加通信地址
COM_putsf(CRLF),; //回車(chē)換行
while(1)
{
if( ACK_ON(READY_)) //檢測(cè)模塊握手信號(hào)
{break;}
}
delay_1ms (200) ,; //延時(shí)200 ms
COM_puts(msg) ; //輸入信息內(nèi)容
COM_putsf(END_MESS) ; //輸入信息內(nèi)容結(jié)束
COM_putsf(CRLF),; //回車(chē)換行
短信息的接收可以采用中斷方式和定時(shí)查詢方式,。中斷方式是:如果有新信息到達(dá),單片機(jī)就會(huì)收到下列提示:+CMTI:”SM”,,<index>,。
可以通過(guò)檢測(cè)串口是否收到“+CMTI”來(lái)判斷新信息的到達(dá),以采取相應(yīng)的動(dòng)作,。采用定時(shí)查詢的方式接收新信息,,也就是將手機(jī)卡內(nèi)的全部信息用指令A(yù)T+CMGL=”ALL”列出來(lái)并放入rx_buffer[RX_BUFFER_SIZE]中??紤]到多條信息的到來(lái)會(huì)丟失信息,,所以本系統(tǒng)采用的是定時(shí)查詢方式。相應(yīng)的程序如下:
COM_rx_reset( ),;
COM_putsf(AT_CMGL),;
COM_putsf(CRLF);
列出來(lái)的內(nèi)容需要進(jìn)行合法信息篩選,,即把每條信息的index提取出來(lái),,將提取的合法信息內(nèi)容和index存起來(lái),然后一一進(jìn)行處理,,并將已讀信息刪除(務(wù)必要進(jìn)行刪除信息的工作,,不然會(huì)對(duì)系統(tǒng)工作的穩(wěn)定性造成影響)。
2.2.3 GPS模塊的數(shù)據(jù)接收
GPS模塊可以采用對(duì)連接GPS的串口進(jìn)行開(kāi)關(guān)而控制,。GPS信號(hào)有二進(jìn)制和ASCII兩種,,本文主要采用ASCII,即NMEA0183格式[7-8],。GPS-OME板輸出帶有各種功能的數(shù)據(jù)語(yǔ)句,,如$GPGGA、$GPGSV,、$GPRMC等,,其中以$GPRMC定位數(shù)據(jù)最為常用,其數(shù)據(jù)的一般格式為:
$GPRMC,,<1>,,<2>,<3>,,<4>,,<5>,<6>,,<7>,,<8>,<9>,<10>,,<11>,,*hh
其中,<1>為當(dāng)?shù)匚恢玫腢TC時(shí)間(hh:mm:ss),;<2>為接收狀態(tài),,即顯示出“A”為位置有效,“V”為位置非有效接收警告(在當(dāng)前天線視野上方的衛(wèi)星個(gè)數(shù)少于3顆時(shí)),;<3>為實(shí)際緯度,;<4>表示半球緯度N或者S;<5>為實(shí)際經(jīng)度,;<6>表示半球經(jīng)度E或者W,;<7>為GPS屬性指示;<10>表示當(dāng)?shù)氐暮0胃叨?。格式中未解釋的?xiàng)本文不用,。
在連接GPS的串口中斷服務(wù)程序中只要將帶有“$GPRMC”的那一條語(yǔ)句提取出來(lái)就可以了。
本文以單片機(jī)串口通信技術(shù)和GSM MODEM短消息傳輸技術(shù)為基礎(chǔ),,針對(duì)遠(yuǎn)程控制定位的需求,,開(kāi)發(fā)了一種對(duì)數(shù)據(jù)采集終端進(jìn)行遠(yuǎn)程控制和定位的解決方案以及具體實(shí)現(xiàn)過(guò)程,為遠(yuǎn)程終端控制應(yīng)用提供了技術(shù)參考,,具有一定的理論和實(shí)際意義,。
參考文獻(xiàn)
[1] 李棟梁,馬洪連,,李文成.基于SMS的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].儀器儀表學(xué)報(bào),,2006,27(21):130-131.
[2] AT commands originating from GSM 07.05 for SMS. [DB/OL].SIEMANS Mobile,, 2002.
[3] 錢(qián)亞利,,趙光宙.短信通訊在遠(yuǎn)程環(huán)保實(shí)時(shí)監(jiān)控系統(tǒng)中的應(yīng)用[J].機(jī)電工程,2007,,24(1):25-27.
[4] 段錦,,葉霖,黃顯澍.基于GSM短消息的遠(yuǎn)程數(shù)據(jù)采集傳輸系統(tǒng)[J].長(zhǎng)春理工大學(xué)學(xué)報(bào),,2005,,28(4):51-53.
[5] 萬(wàn)求.GSM短信傳送文件的方法的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2006,,42(36):122-125.
[6] 仵浩,,黃維金.無(wú)線數(shù)據(jù)傳輸技術(shù)在油井檢測(cè)中的應(yīng)用[J].儀器儀表學(xué)報(bào),2004,,25(4):520.
[7] 孟謙,,王志良,,張東.基于GPS/北斗衛(wèi)星技術(shù)的無(wú)盲區(qū)車(chē)輛調(diào)度系統(tǒng)[J].微計(jì)算機(jī)信息,2005(1):160-162.
[8] 王 ,,劉錦高.基于GPS無(wú)線定位/GSM短信收發(fā)的空間信息查詢系統(tǒng)[J].微計(jì)算機(jī)信息,,2006(6):184-186.