基于AT91RM9200短消息監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)
無線監(jiān)控已成為工業(yè)控制中安全生產(chǎn)、及時收集重要數(shù)據(jù)必不可少的部分,利用現(xiàn)代化的信息技術(shù)手段,建設(shè)安全生產(chǎn)監(jiān)督管理網(wǎng)絡(luò)系統(tǒng),才能將安全生產(chǎn)和安全監(jiān)督管理工作做好,隨著通訊技術(shù)的發(fā)展,移動通信覆蓋的不斷擴大,基于GSM網(wǎng)絡(luò)的無線監(jiān)控系統(tǒng)已廣泛應(yīng)用于工業(yè)控制、電力監(jiān)控、智能樓宇和數(shù)據(jù)傳輸?shù)确矫?,加上GSM網(wǎng)絡(luò)具有前期投資少、不受地域限制、通信實時性高等優(yōu)點使得它在無線監(jiān)控領(lǐng)域扮演更重要的角色。利用的ARM9處理器主頻高、速度快、內(nèi)存容易擴展、可以運行嵌入式Linux系統(tǒng)設(shè)計平臺等特點,通過軟硬件模塊的設(shè)計,在GSM無線網(wǎng)絡(luò)上實現(xiàn)了短消息的發(fā)送。此系統(tǒng)可以應(yīng)用在采油電機環(huán)境參數(shù)監(jiān)控上,實時監(jiān)控油管的壓力和溫度等參數(shù),保證油井的安全正常工作。
1 系統(tǒng)總體設(shè)計
圖1所示是基于AT91RM9200的短消息監(jiān)控系統(tǒng),該平臺主要包括微處理器單元,GSM/GPRS無線模塊,存儲模塊,串口通訊模塊,網(wǎng)口通訊模塊,USB模塊和電源模塊。
系統(tǒng)構(gòu)建的嵌入式系統(tǒng)平臺,主要用于采集數(shù)據(jù)的處理、存儲、發(fā)送和監(jiān)控。具體工作原理是在基于ARM920T內(nèi)核的主頻為180 MHz的AT91RM9200微處理器上,通過串口將下行數(shù)據(jù)傳輸至Flash存儲,然后利用串口、USB和100 Mbit·s-1以太網(wǎng)3種接口方式將數(shù)據(jù)發(fā)送至目標,同時通過GSM無線通信的方式進行數(shù)據(jù)監(jiān)控。
此系統(tǒng)在采油電機環(huán)境參數(shù)傳輸與通信系統(tǒng)存儲模塊的應(yīng)用過程中,主要完成對采樣和監(jiān)測處理后的數(shù)據(jù)進行存儲,并通過各種接口傳送至上位機顯示,以便工作人員對井下電機的環(huán)境數(shù)據(jù)進行觀測和處理。無線傳輸模塊可將存儲模塊接收到的數(shù)據(jù)以無線通信的方式發(fā)給油井監(jiān)測人員,使監(jiān)測人員可隨時了解油井的采油情況。
2 系統(tǒng)硬件電路設(shè)計
系統(tǒng)中短消息收發(fā)功能的模塊采用華為公司的4頻GSM/CPRS模塊MG323,工作頻段支持4頻:GSM850/900/1800/1900 MHz,接收靈敏度<-107 dBm,工作溫度-30~+75℃,電源電壓3.3~4.8 V,平均待機電流<3.0 mA,協(xié)議支持GSM/GPRS Phase2/2+。MG232含有豐富的對外應(yīng)用接口,包括B2B連接器接口、電源接口、開/關(guān)機和RESET時序、控制信號接口、UART接口、SIM卡接口、充電接口、音頻接口。
MG323與AT91RM9200的硬件電路如圖2所示。ARM通過控制TERM_ON來控制MG323的開關(guān),當TERM_ON管腳拉低≥1 s后,即可開機;開機后,如果再次將TERM_ON管腳拉低≥1 s,即可關(guān)機;控制RESET來控制MG323的硬件復(fù)位,當模塊出現(xiàn)軟件死機時,通過拉低RESET管腳≥10 ms后,模塊進行硬件復(fù)位。
由于MG323模塊對外提供一路異步RS-232UART1通信接口,UART1支持標準Modem握手信號控制方式,故MG323GSM模塊通過RS232與AT91RM 9200的UART1相連接。其控制信號主要為:UART1_RD(模塊數(shù)據(jù)發(fā)送端),UART1_TD(模塊數(shù)據(jù)接收端),UART1_RING(模塊振鈴指示),UART1_ DSR(模塊數(shù)據(jù)設(shè)備就緒),UART1_RTS(請求發(fā)送),UART1_DTS(數(shù)據(jù)終端就緒),UART1_CTS(模塊清除發(fā)送),UART1_DCD(模塊載波檢測)。RT S/CTS為請求發(fā)送信號,RTS是發(fā)送起輸出的準備好信號。接收雙方準備好,送回清除發(fā)送信號CTS后,發(fā)送數(shù)據(jù)開始進行,在同一端將這兩個信號短接就意味著只要發(fā)送器準備好即可發(fā)送。DCD載波檢測又稱接收線路信號檢測,本意是Modem檢測到線路中的載波信號后,通知終端準備接收數(shù)據(jù)的信號在沒有接Modem的情況下,也可以和RES,CTS短接。DTR/DSR數(shù)據(jù)終端準備好時發(fā)DTR信號,在收到數(shù)據(jù)通信裝置準備好DSR信號后方可通信。RING原意是在接收到電話交換機有效的撥號時有效,同時數(shù)據(jù)終端準備傳送。
MG323模塊通過信號SM_CLK(SIM卡時鐘),VSIM(SIM卡電源),SIM_DATA(SIM卡數(shù)據(jù)),SIM_RST(SIM卡復(fù)位),GND(SIM卡地)與SIM卡相連接。
該系統(tǒng)還包括兩片16 MB的SDRAM,兩片8 MB的NOR_Flash,3個RS232,主USB,從USB和100 Mbit·s-1以太網(wǎng)等模塊。
3 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件的設(shè)計主要是基于Linux下C的編程,無線監(jiān)控程序是依照短消息收發(fā)的原理來對于GSM模塊的控制。
3.1 短消息收發(fā)的原理
短消息內(nèi)容的最大長度為140 Byte。它的編碼主要有7位編碼,8位編碼,UC2編碼3種編碼方式。7位編碼是每Byte只使用低7位,每8 By te為一組,去掉最高位,重新編碼為7 Byte,因此,7位編碼實際可以表示到160 Byte。但7位編碼只能發(fā)送0x00~0x7F范圍內(nèi)的字符,一般在發(fā)送英文短信時使用。編碼原理是:每8 Byte為一組,分別用A,B,C,D,E,F(xiàn),G代表8 Byte,An代表每個Byte的位,則8 Byte重新編碼成如表1所示的7 Byte。
8位編碼是所見即所得的編碼方式,即無需編碼,只要將二進制串直接發(fā)送即可。8位編碼方式適用于制定各種基于短消息的通訊協(xié)議。U C2編碼常用于中文或中英文混合內(nèi)容發(fā)送,只能發(fā)送70個字符(1個UC2占2 Byte)。由于國內(nèi)一般的編輯器多以GB編碼,因此,若要發(fā)送中文,需先將中文轉(zhuǎn)換為UC2編碼再發(fā)送。在手機上,通常的做法是如果全部為英文及半角字符,則以7位編碼發(fā)送,如果含有中文,則全部編碼為UC2發(fā)送。
短消息發(fā)送方式主要分為文本模式和PDU模式。文本模式其實是針對7位編碼做的一個封裝,它只能用于發(fā)送ANSI范圍的字符,發(fā)送方式較簡單。而PDU模式中所有短消息數(shù)據(jù)發(fā)送前都必須組織成PDU的格式,在PDU模式下發(fā)送短信比較復(fù)雜,需要自行組織PDU內(nèi)容,但發(fā)送方式靈活,可以發(fā)送各種數(shù)據(jù),也可以自行設(shè)定各PDU字段的內(nèi)容。
3.2 常用的短消息AT指令
GSM無線模塊采用標準AT指令集通信,AT命令是用于控制TE(Terminal Equipment)(如PC等用戶終端)和MT(Mobile Terminal)(如移動臺等移動終端)之間的相互規(guī)則。AT命令類型主要分為基本命令、S寄存器命令、擴展以及廠商定義命令3類。
3.3 GSM程序的實現(xiàn)
ARM與GSM通信以ttyS1對應(yīng)的串口為橋梁,與MG323提供的1個UART接口連接,支持短消息、電話本管理、數(shù)據(jù)業(yè)務(wù)、嵌入式TCP/UDP等功能。使用ARM發(fā)出AT指令集對GSM模塊進行相應(yīng)的操作,能夠完成發(fā)短消息的功能。具體軟件流程如圖3所示。
對串口初始化的工作主要是波特率、校驗位和停止位設(shè)置。配置完串口的相關(guān)屬性,就可以對串口進行打井、讀寫操作了。在Linux系統(tǒng)中,所有的設(shè)備文件都位于“/dev”下,其中串口2對應(yīng)的設(shè)備名為“/dev/ttyS1”,在Linux下對設(shè)備和對文件的操作方法是一樣的,因此對串口讀寫可以使用簡單的“read”,“‘write”函數(shù)完成。
對GSM模塊進行初始化工作主要是發(fā)送“AT”給MT(Mobil Terminal)看起是否有回復(fù)以確定ARM與GSM的串口工作正常。在確認串口正常工作后,發(fā)送“ATE0”命令關(guān)閉MT的回顯。
設(shè)置短信的通知方式、短信的格式(PDU)以及短信的編碼(USC2)。如果每個功能的設(shè)定都正常,最后按照PDV格式向指定用戶發(fā)送“GSM模塊初始化成功”的短信。
解析數(shù)據(jù)并發(fā)送短信主要是首先按PDU格式填充發(fā)送個MT的緩沖區(qū)的前46 Byte。然后打開數(shù)據(jù)存儲文件,用lseek函數(shù)將文件光標由文件結(jié)尾向前移動17 Byte。因為數(shù)據(jù)幀中的數(shù)據(jù)是以2 Byte的16進制來表示,所以首先將其合并成一個16位的短整型,然后將合并的數(shù)據(jù)與檢驗位相加。將數(shù)據(jù)處理后,最后發(fā)送短信并檢查MT回復(fù)中是否有+CMGS的指令,若有則代表短信發(fā)送成功。
4 結(jié)束語
以AT91RM9200處理器搭建嵌入式Linux系統(tǒng),利用GSM/GPRS無線通信模塊實現(xiàn)短消息的發(fā)送。同時嵌入式系統(tǒng)加GSM模塊的系統(tǒng)組成體積小巧,工作穩(wěn)定,適合偏遠地區(qū)或移動數(shù)據(jù)采集系統(tǒng),提供了數(shù)據(jù)采集監(jiān)控的新手段。隨著無線通信系統(tǒng)的不斷發(fā)展和成熟,它必將深入到生活的各個方面。