目前,在由GPRS承載業務支持的標準化網絡協議的基礎上,可提供點對點無連接型網絡業務(PTP—CLNS)、點對點面向連接的數據業務(PTP-C*)和點對多點業務(PTM),還能支持用戶終端業務、補充業務、GSM短消息業務和各種GPRS電信業務。GPRS可提供Internet、多媒體、電子商務等業務,可應用于運輸業、金融、證券、商業和公共安全業;PTM業務支持股市動態、天氣預報、交通信息等實時發布;另外,還能提供種類繁多、功能強大的以GPRS承載業務為基礎的網絡應用業務和基于WAP的各種應用。其中,GPRS的數據業務在行業應用中越來越廣泛。該業務已被應用于遠程抄表、電力系統遠程監控、交通遠程監控、車輛監控和GPS導航等諸多方面。
在GPRS數據業務的行業應用中,數據終端是最基本的設備。目前的數據終端具有智能化和可擴展性不斷增強的發展趨勢,性能越來越強大,接口越來越豐富,但成本一直居高不下。本文介紹一種以基于AVR單片機ATmegal6和Motorola G20模塊的低成本GPRS數據終端的設計。
1 終端的硬件設計
終端由ATmegal6和G20模塊及一些外圍器件組成,系統的硬件結構如圖1所示。ATmega16具有1個功能完整的異步串行通信接口(UART),在直流5V供電時,其I/O操作電壓范圍約為O~5V;G20模塊提供一個用于接收控制命令和傳輸數據的異步串行通信接口,在直流3.3V供電時,其I/O操作電壓范圍為0~3.3 V,因此,可以將ATmegal6串行接口經電平轉換電路轉接后與G20模塊的串行口相連,進行異步串行數據交換。終端采用一塊16×2字符型LCD顯示GPRS網絡連接及數據傳輸狀況信息。ATmegal6和LCD采用直流5 V供電,5 V電源經過由低壓差線性穩壓集成電路LM1117—3.3組成的穩壓電路將電壓轉換成3.3 V后給G20模塊供電。
1.1 ATmegal6與G20模塊的硬件接口
由于ATmegal6和G20模塊的I/O操作電壓范圍不相同,所以兩者的串行口之間需經過電平轉換才能確保穩定通信,其電平轉換電路如圖2所示。
這里采用光電耦合器件TLP521進行5 V和3.3 V之間的電平轉換。ATmegal6的I/O驅動能力較強(最大輸出40 mA電流),可以直接驅動TLP521。G20模塊的I/O驅動能力較弱,需加一級驅動緩沖器才能驅動TLP521,這里使用7406反相驅動緩沖器。
1.2 ATmegal6與LCD的硬件接口
系統中采用基于HD44780液晶控制芯片的16×2字符型LCD,該器件內置了字符產生器,能顯示192個常用字符(包括阿拉伯數字和大小寫英文字母)和16個用戶自定義字符,它與ATmegal6的接口如圖3所示。HD44780的數據總線DB7~DB0與ATmegal6的PA7~PA0相接,RS、R/W和EN分別與單片機的PD3、PD4和PD5相連。利用ATmega16的I/O口控制LCD進行指令和數據輸入,正確地顯示出經緯度數據。
2 ATmega16與G20模塊的接口程序設計
利用GPRS網絡進行數據傳輸一般有多種組網方案,這里以其中一種方案進行說明,其他方案的數據終端實現方式類似。該方案采用數據中心公網固定IP,由監測點直接向中心發起連接。
G20模塊自身內嵌了TCP/IP和UDP/IP協議棧,大大簡化了接口程序的編寫。G20模塊串口通信默認在57 600 b/s的速率下進行,數據格式為:8位數據位、1位停止位、無奇偶校驗和硬件流控制。
G20模塊只能接受由ASCII字符代碼組成的標準格式的AT指令。根據Developer′S Guide-Motorola G20 AT Commands所講述的內容,一行G20模塊的AT指令可以包含一條或者多條命令,這些命令必須由分隔符相隔,每個AT指令行不得超過140個字符。G20模塊具體的AT命令行結構如圖4所示。
每個AT命令行均以字符串“AT”為前綴,以回車符“”為后綴。命令行中各指令之間的分隔符可以為分號“;”或者空格。命令行中的英文字母可以是大寫格式,也可以是小寫格式。
每當G20模塊接收到指令時都會輸出相關的響應信息,以顯示指令的執行結果。響應信息的數據格式如圖5所示。響應信息由3部分組成:前綴、響應代碼和后綴。其中,前綴和后綴一樣,均為回車和換行符,即“”;不同指令在不同情況下的響應代碼也不一樣。
在實際應用中,可以通過程序控制ATmegal6由其異步串行口按照既定的通信速率、數據格式和指令形式向G20模塊發出控制指令,然后監視G20模塊的響應信息,根據響應信息判斷命令的執行結果,進而控制G20模塊進行遠程無線數據發送。利用G20模塊實現GPRS數據發送一般要按照以下控制步驟進行(這里使用的是UDP協議):
(1)通過指令“at+mipcall=[,[,-]]”建立一個GPRS無線鏈接,如“at+mipcall=1,cmnet”。在這里,“cmnet”是中國移動的APN名稱。其中可為0或1,0代表斷開連接,1代表連接。[,[,]]是可選項,無需時省去。如果鏈接建立成功,G20模塊將會返回本機的IP地址,如“0K+mipcall:10.103.201.135”,此時本機在移動內網的IP地址為:10.103.201.135。如果鏈接不成功,G20模塊將會返回錯誤信息“ERROR”。
(2)通過指令“at+mipopen=,,,,”打開一個端口(Socket),如“at+mipopen=l,2000,“219.222.73.240”,6800,1”。其中,是本地端口號,G20模塊一共可以打開4個端口,端口序號分別是1~4;是G20模塊本機的端口號,其數值可以是0~65 535;是目標IP地址,可以是直接連接到Internet公網的某臺PC的IP地址。是目標的端口號,其數值可以是0~65535。是協議棧類型,其數值可以為0或1,0代表是TCP協議棧,1代表UDP協議棧;如果端口打開成功將返回“OK+MIPOPEN:,”,如“OK+MIPOPEN:1,1”。如果端口打開不成功,將會返回錯誤信息“ERROR”。
(3)通過指令“at+mipsend=,”將需要發送的數據壓入G20模塊的發送堆棧。如“at+mipsend=1,4142434445”。這里的是前面已經打開的端口序號,是所要發送的數據,數據格式必須是用十六進制表示的數據(數值或者字符)的雙字節ASCII值。如要發送的數據為“ABCDE”(A、B、C、D和E的ASCII數值分別為0x41,0x42,0x43,0x44和0x45),則要將“4142434445”作為壓入發送堆棧。指令操作成功時,G20模塊返回信息“+MIPSEND:,OK”,如“+MIPSEND:1,1367OK”,其中是端口序號,是指堆棧中的剩余空間,其數值可為O~1372。如操作不成功,G20模塊將會返回錯誤信息“ERROR”。
(4)通過指令“at+mippush=[,,]”將特定序號發送堆棧中的數據出棧,如“at+mippush=1”執行這條指令之后,堆棧中的數據就被發送出去了。這里所說的堆棧序號是和前面所述的端口序號一一對應的。方括號中的內容是可選項,不需要時可以省去。數據發送成功時,G20模塊返回信息“+MIPPUSH:OK”,如“+MIPPUSH:1OK”。如數據發送失敗,G20模塊將會返回錯誤信息“ERROR”。
(5)反復進行上述步驟(3)和(4),直至所有數據發送完畢為止。
(6)通過指令“at+mipclose=”關閉已打開的端口,如“at+mipclose=1”。端口關閉成功時,G20模塊會返回信息“OK+MIPCLOSE:”,如“OK+MIPCLOSE:1 ID》”。如果端口關閉不成功,G20模塊將會返回錯誤信息“ERROR”。
(7)通過指令“at+mipcall=0”關閉GPRS網絡連接。如果網絡連接關閉成功,G20模塊將會返回信息“OKNOCARRIER+MIPCALL:0”。如果網絡連接關閉不成功,G20模塊將會返回錯誤信息“ERROR”。
另外,G20模塊接收到遠程終端通過GPRS網絡發送過來的數據時會自動從其串口輸出該數據。如果接收到的是UDP協議的數據,G20模塊會以以下數據格式輸出:
+M1PRUDP:,,,,
其中,是發送方的IP地址,是發送方的端口號,是本機端口序號,留在堆棧中的接收數據字節數,是所接收到的數據。如果接收到的是TCP協議的數據,G20模塊會以以下數據格式輸出:
+MIPRTCP:,,
各部分含義如前述。編程使ATmegal6不斷查詢串口接收緩沖區即可實現數據接收,也可以采用接收中斷的方式提高運行效率。
3 結 語
GPRS數據傳輸鏈路中GGSN(網關GPRS支持節點)占用的端El的存活時間是有限的,如果鏈路空閑超時,連接就會斷開,可通過定時發送數據短幀的方式來維持鏈路。經測定,本地(廣州)的GPRS數傳鏈路維持時間為60 s。基于ATmegal6的GPRS數據終端成本低,易于推廣普及,可用于遠程數據采集、系統監測和Internet遠程接入等領域。
責任編輯:gt
-
單片機
+關注
關注
6032文章
44525瀏覽量
633260 -
接口
+關注
關注
33文章
8526瀏覽量
150862 -
GPRS
+關注
關注
21文章
983瀏覽量
129350
發布評論請先 登錄
相關推薦
評論