宋維 崔曉坤
摘要:GSM模塊短信收發(fā)系統(tǒng)廣泛應(yīng)用于實(shí)時(shí)性要求不高的遠(yuǎn)程監(jiān)控和測(cè)控系統(tǒng)當(dāng)中。介紹一種GSM模塊短信收發(fā)采集控制系統(tǒng),特別是對(duì)STM32微處理器的端口配置和GSM模塊短信收發(fā)系統(tǒng)的實(shí)現(xiàn)進(jìn)行了詳細(xì)討論。
關(guān)鍵詞:STM32;GSM;SMS;雙串口
中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)18-4536-02
Comprehensive Application of STM32 Based on GSM module
SONG Wei, CUI Xiao-kun
(Guangdong Institute of Science And Technology, Guangzhou 510640,China)
Abstract:GSM module SMS sending and receiving system applied to remote monitoring and control system where real time performance is not highly required. This paper puts emphasis on a data acquisition and control system which send and receive text messages.And particu? larly, the realization of STM32 microprocessor port configuration and GSM module SMS sending and receiving mechanism were discussed. Key words:STM32;GSM;SMS;Dual serial communication
GSM模塊短信收發(fā)系統(tǒng)廣泛應(yīng)用于實(shí)時(shí)性要求不高的遠(yuǎn)程監(jiān)控和測(cè)控系統(tǒng)當(dāng)中。移動(dòng)通信技術(shù)和各種無(wú)線(xiàn)局域網(wǎng)絡(luò)技術(shù)的發(fā)展,給計(jì)算機(jī)遠(yuǎn)程數(shù)據(jù)采集和控制系統(tǒng)提供了更豐富、更合理的數(shù)據(jù)傳輸手段,這些手段也逐步滲入到各類(lèi)系統(tǒng)當(dāng)中形成各種跨視界跨地域的無(wú)線(xiàn)遠(yuǎn)程采集和控制系統(tǒng)。計(jì)算機(jī)監(jiān)控系統(tǒng)的信息傳輸、遠(yuǎn)程抄表、電力和油田監(jiān)測(cè),往往由于環(huán)境條件惡劣、距離遙遠(yuǎn),不適合進(jìn)行數(shù)據(jù)的有線(xiàn)傳輸。GSM(全球移動(dòng)通信系統(tǒng))作為現(xiàn)代無(wú)線(xiàn)遠(yuǎn)程通訊技術(shù)的代表已經(jīng)發(fā)展得十分成熟完善,采用GSM網(wǎng)絡(luò)傳輸信息價(jià)格便宜,技術(shù)可行[1]?;贕SM的無(wú)線(xiàn)遠(yuǎn)程采集和控制系統(tǒng)比傳統(tǒng)有線(xiàn)控制系統(tǒng)具有如下優(yōu)點(diǎn):通訊范圍廣泛、系統(tǒng)經(jīng)濟(jì)性較好、總體結(jié)構(gòu)簡(jiǎn)單等,作為一種廉價(jià)、便捷的數(shù)據(jù)采集和控制方案受到人們的青睞[2]。
該文討論一種GSM模塊短信收發(fā)采集控制系統(tǒng),重點(diǎn)探討微處理器的端口配置和GSM模塊短信收發(fā)系統(tǒng)的實(shí)現(xiàn)。該系統(tǒng)采用基于Cortex M3內(nèi)核的STM32作為現(xiàn)場(chǎng)監(jiān)測(cè)和控制核心,利用Siemens公司的TC35i模塊,通過(guò)短消息來(lái)實(shí)現(xiàn)數(shù)據(jù)傳輸。STM32作為32位微處理器,具有主頻高,速度快,功耗低等特點(diǎn),由于價(jià)格低廉,代替8位單片機(jī)是大勢(shì)所趨,而且接口豐富,具有良好的通用性和針對(duì)各種控制和監(jiān)測(cè)系統(tǒng)的可擴(kuò)展性。
GSM模塊短信收發(fā)采集控制系統(tǒng)是一個(gè)可以由用戶(hù)通過(guò)手機(jī)短信來(lái)進(jìn)行遠(yuǎn)程控制的終端模塊。用戶(hù)可以通過(guò)中文和英文短信來(lái)控制開(kāi)關(guān)量的接通與斷開(kāi)、或查詢(xún)開(kāi)關(guān)量(I/O口)的開(kāi)關(guān)狀態(tài),及其它復(fù)雜控制,也可以外接AD口或數(shù)字傳感器采集系統(tǒng)完成測(cè)量、數(shù)據(jù)采集。操作者可以通過(guò)短信指令,按照事先定義好的內(nèi)容對(duì)設(shè)備進(jìn)行控制,也可由現(xiàn)場(chǎng)設(shè)備返回監(jiān)控狀態(tài),或發(fā)出各類(lèi)告警信息。除此之外,還可以經(jīng)過(guò)串口連接上位機(jī),通過(guò)配套的上位機(jī)軟件實(shí)時(shí)監(jiān)測(cè)GSM模塊短信收發(fā)采集控制系統(tǒng)的狀態(tài)。
系統(tǒng)由TC35i模塊和以STM32為核心的短信收發(fā)系統(tǒng)監(jiān)控單元兩部分組成。TC35i模塊是由Siemens公司生產(chǎn)的GSM模塊,符合ETSI標(biāo)準(zhǔn)GSM0707和GSM0705[3]。TC35i有40個(gè)引腳,通過(guò)一個(gè)ZIF連接器引出。這40個(gè)引腳按功能可以劃分為5類(lèi),即電源、數(shù)據(jù)傳輸接口、SIM卡接口、音頻接口和控制信號(hào)部分。用戶(hù)通過(guò)RS232接口,用AT指令對(duì)其進(jìn)行控制[4]。
AT指令是主要移動(dòng)電話(huà)生產(chǎn)商共同為GSM研制的一整套指令,其中包括對(duì)SMS的控制[5]。AT指令是以"AT"為前綴,以回車(chē)符< CR >為后綴(即ASCII字符 ,對(duì)某些模塊的操作序列可以只 為后綴)的ASCII指令序列,用于和GSM模塊通訊。
TC35i負(fù)責(zé)短信的收發(fā)。以STM32為核心的短信收發(fā)系統(tǒng)則用來(lái)讀取TC35i收到的短信,并執(zhí)行相應(yīng)的測(cè)量、數(shù)據(jù)采集、控制、無(wú)線(xiàn)通信功能。兩者之間通過(guò)RS232串口實(shí)現(xiàn)數(shù)據(jù)交換。GSM無(wú)線(xiàn)通信控制終端通過(guò)GSM網(wǎng)絡(luò)和監(jiān)控中心進(jìn)行雙向的信息傳輸。系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
TC35i集成了標(biāo)準(zhǔn)的RS232接口,通過(guò)MAX232芯片做電平轉(zhuǎn)換,TC35i即可通過(guò)串行口與STM32芯片進(jìn)行通信。需要注意的是TC35i模塊作為數(shù)據(jù)通信設(shè)備(DCE)連接,RxDO引腳為輸出腳,TxDO為輸入腳。系統(tǒng)與GPRS模塊采用串口連接。模塊要正常
STM32通過(guò)串口收發(fā)AT指令和獲取PDU協(xié)議單元字段來(lái)完成與GSM模塊交互。GSM模塊負(fù)責(zé)短信與服務(wù)中心間的收發(fā)。
如果AT被正確執(zhí)行,則GSM模塊返回以O(shè)K結(jié)尾的字符串,如果未被正確執(zhí)行,返回以ERROR結(jié)尾的字符串。程序中根據(jù)這點(diǎn)來(lái)判斷GSM模塊有無(wú)正確返回。除此之外,還有第三種情況,即GSM模塊無(wú)響應(yīng),這時(shí)沒(méi)有任何返回值,對(duì)于這種情況可以通過(guò)設(shè)置超時(shí)來(lái)進(jìn)行重發(fā)處理。這要求以上的串口初始化過(guò)程后,同時(shí)也要初始化定時(shí)器或RTC實(shí)時(shí)時(shí)鐘,以便產(chǎn)生一個(gè)定時(shí)的基準(zhǔn)。
用于短信收發(fā)和相關(guān)程序設(shè)計(jì)的常用AT指令有:
AT+IPR?
AT+CMGF=[
AT+CMGR=
AT+CMGD=< seiral >
AT+CMGS=
系統(tǒng)對(duì)于中文短信的發(fā)送是通過(guò)AT+CMGS指令完成的。在發(fā)送之前先要按照PDU編碼的格式構(gòu)造中文短信。由于STM32編譯器本身對(duì)中文處理為gb2312代碼,而PDU協(xié)議編碼對(duì)中文是采用UTF-8的編碼,因此中文短信要通過(guò)GSM網(wǎng)絡(luò)傳輸,傳輸之前應(yīng)該將GB2312轉(zhuǎn)換為unicode編碼。這可以通過(guò)查表方式完成,即設(shè)置一個(gè)gb2312編碼和相應(yīng)UTF-8編碼的結(jié)構(gòu)體數(shù)組,形成漢字編碼表。結(jié)構(gòu)體的第一個(gè)元素為漢字的gb2312編碼,這樣可以用二分法快速數(shù)據(jù)查找算法查找到該漢字在gb2312編碼表數(shù)組中的位置,該位置對(duì)應(yīng)的結(jié)構(gòu)體第二個(gè)元素就是對(duì)應(yīng)的unicode編碼。如果要將PDU編碼中的漢字讀出,則需要另外一個(gè)UTF-8到gb2312的編碼表,同樣可以通過(guò)二分法快速得到GSM短信內(nèi)容的gb2312編碼。
基于STM32的GSM模塊短信收發(fā)采集控制系統(tǒng),適用范圍廣,適合在野外不方便到達(dá)的地方或車(chē)間等不易操作的地方使用;維護(hù)費(fèi)用極低;可靠性好。它的雙串口功能使特定時(shí)段用戶(hù)通過(guò)PC上位機(jī)調(diào)試和監(jiān)控操作變得更加直觀、方便。不足的地方是它對(duì)用戶(hù)的短信指令響應(yīng)時(shí)間確定性不高,不適用于高實(shí)時(shí)性的場(chǎng)合。