《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 微控制器的GPRS無線上網(wǎng)
微控制器的GPRS無線上網(wǎng)
摘要: 介紹一種在微控制器上實現(xiàn)PPP協(xié)議,并使其控制GPRS模塊通過GPRS連入Internet的方法;介紹GPRS技術和GPRS模塊的使用方法;重點介紹微控制器軟件的層次結構和PPP協(xié)議的實現(xiàn)方法。
Abstract:
Key words :

  引言

  微控制器以其體積小、功耗低、使用方便等特點,廣泛應用于各種工業(yè)、民用的嵌入式系統(tǒng)中;而隨著互聯(lián)網(wǎng)(Internet)的興起與普及,使微控制器通過互聯(lián)網(wǎng)傳送數(shù)據(jù)就變得非常有意義。目前使微控制器上網(wǎng)的解決方案一般有兩種:一種是采用微控制器驅(qū)動網(wǎng)卡,通過以太網(wǎng)連接Internet;另一種是使微控制器直接驅(qū)動調(diào)制解調(diào)器(MODEM)通過電話線向ISP撥號上網(wǎng)。這兩種方案的缺點在于都要使用有線的網(wǎng)絡,無法應用于在邊遠地區(qū)或可移動系統(tǒng)中。

  針對這一問題,本文提出一種基于GPRS的微控制器上網(wǎng)的解決方案,即在微控制器中實現(xiàn)PPP協(xié)議,并通過驅(qū)動GPRS模塊經(jīng)過GPRS無線網(wǎng)連接到Internet實現(xiàn)上網(wǎng)。這種方案的優(yōu)點在于:① 覆蓋面廣,適用于廣大偏遠地區(qū);② 無線上網(wǎng),適用于可移動目標;③使用廉價的微控制器實現(xiàn)簡單、成本低;④ 安裝簡便,維護方便。

  1 GPRS技術及其特點

  GPRS(General Packet Radio Service)是通用分組無線業(yè)務的簡稱,是在GSM基礎上發(fā)展起來的一種分組交換的數(shù)據(jù)承載和傳輸方式。與原有的GSM比較,GPRS在數(shù)據(jù)業(yè)務的承載和支持上具有非常明顯的優(yōu)勢:通過多個GSM時隙的復用,支持的數(shù)據(jù)傳輸速率更高,理論峰值達115kb/s;不同的網(wǎng)絡用戶共享同一組GPRS信道,但只有當某一個用戶需要發(fā)送或接收數(shù)據(jù)時才會占用信道資源。這樣,通過多用戶的業(yè)務復用,更有效地利用無線網(wǎng)絡信道資源,特別適合突發(fā)性、頻繁的小流量數(shù)據(jù)傳輸,很好地適應數(shù)據(jù)業(yè)務的突發(fā)性特點;GPRS計費方式更加靈活,可以支持按數(shù)據(jù)流量來進行計費;與無線應用協(xié)議(WAP)技術不同,GPRS能夠隨時為用戶提供透明的IP通道,可直接訪問Internet中的所有站點和資源;采用信道復用技術,每一個GPRS用戶都能夠?qū)崿F(xiàn)永遠在線;另外,GPRS還能支持在進行數(shù)據(jù)傳輸?shù)耐瑫r進行語音通話等等,而且相對于短消息等其它無線數(shù)據(jù)通信業(yè)務,GPRS的價格優(yōu)勢比較明顯。目前,我國移動推出的GPRS上網(wǎng)業(yè)務最高每千字節(jié)也只有3分錢,而且用戶可以根據(jù)自己的需要,以月租、包月等多種形式進一步降低GPRS通信的費用。

  因此使用GPRS實現(xiàn)遠程數(shù)據(jù)的傳送是非常經(jīng)濟實用的,特別是對于不易架設有線網(wǎng)絡的邊遠地區(qū)和可移動裝置。

  2 硬件連接和GPRS模塊設置

  通過GPRS網(wǎng)進行數(shù)據(jù)傳輸一般需要使用GPRS模塊。目前,GPRS模塊一般是指帶有GPRS功能的GSM模塊,可以利用GPRS網(wǎng)進行數(shù)據(jù)通信。其中比較流行的有法國Wave公司的WISMO系列和西門子公司的S系列等等。WAVECOM的WISMO模塊接口簡單、使用方便且功能非常強大,它與微控制器、SIM卡、電源之間的連接如圖1所示。

  

  圖1 GPRS模塊的硬件連接圖

  其中GPRS模塊與微控制器間是通過串行口進行通信的,通信速率最快可以達到115 200b/s。模塊與控制器間的通信協(xié)議是AT命令集,其中大部分命令是符合協(xié)議“AT command set for GSM Mobile Equipment (ME) (GSM 07.07 version 6.4.0 Release 1997)”的,但也有一些是Wavecom自己定義的AT命令。除了串口發(fā)送(TX)、串口接收(RX)之外,微控制器與GPRS模塊之間還有一些硬件握手信號,如DTR、CTS、DCD等。為了簡化微控制器的控制,硬件設計時沒有使用全部的硬件握手信號,而只使用數(shù)據(jù)載波檢測(Data Carrier Detect, DCD)和終端準備(Data Terminal Ready, DTR)信號。DCD信號可以檢測GPRS模塊是處于數(shù)據(jù)傳送狀態(tài)還是處于AT命令傳送狀態(tài)。DTR信號用來通知GPRS模塊傳送工作已經(jīng)結束。

  硬件連接完成后,在進行GPRS上網(wǎng)操作之前,首先要對GPRS模塊進行一定的設置。主要的設置工作有:① 設置通信波特率,可以使用AT+IPR=38400命令,把波特率設為38 400b/s或其它合適的波特率,默認的通信速度為9600b/s。② 設置接入網(wǎng)關,通過AT+ CGD CONT=1, “IP”, “CMNET”命令設置GPRS接入網(wǎng)關為移動夢網(wǎng)。③設置移動終端的類別,通過AT+CGCLASS=“B”設置移動終端的類別為B類,即同時監(jiān)控多種業(yè)務;但只能運行一種業(yè)務,即在同一時間只能使用GPRS上網(wǎng),或者使用GSM的語音通信。④ 測試GPRS服務是否開通,使用AT+CGACT=1,1命令激活GPRS功能。如果返回OK,則GPRS連接成功;如果返回ERROR,則意味著GPRS失敗。這時應檢查一下SIM卡的GPRS業(yè)務是否已經(jīng)開通,GPRS模塊天線是否安裝正確等問題。(其它相關的AT命令請參閱文獻3。)

  中國移動在GPRS與Internet網(wǎng)中間建立了許多相當于ISP的網(wǎng)關支持節(jié)點(GGSN),以連接GPRS網(wǎng)與外部的Internet網(wǎng)。GPRS模塊可以通過撥“*99***1#”登錄到GGSN上動態(tài)分配到Internet網(wǎng)的IP地址。其間GPRS模塊與網(wǎng)關的通信要符合點對點協(xié)議(Point to Point Protocol, PPP),其中身份驗證時用戶名、密碼都為空。使用PPP協(xié)議登錄上之后,就可以通過GGSN接上Internet了。

  3 軟件整體結構

  3.1 軟件層次結構

  程序中的所有代碼都是由C語言編寫的,并采用分層的結構,從底到上分別為:串口驅(qū)動層、GPRS模塊驅(qū)動層、PPP協(xié)議層、IP協(xié)議層、UDP協(xié)議層與應用層。上層函數(shù)的實現(xiàn)需要應用到底層函數(shù),而底層函數(shù)的任務就是為上層函數(shù)提供服務,最終完成應用層任務——傳送數(shù)據(jù)。各層的主要函數(shù)如圖2所示。

  

  圖2 軟件層次結構

  引言

  微控制器以其體積小、功耗低、使用方便等特點,廣泛應用于各種工業(yè)、民用的嵌入式系統(tǒng)中;而隨著互聯(lián)網(wǎng)(Internet)的興起與普及,使微控制器通過互聯(lián)網(wǎng)傳送數(shù)據(jù)就變得非常有意義。目前使微控制器上網(wǎng)的解決方案一般有兩種:一種是采用微控制器驅(qū)動網(wǎng)卡,通過以太網(wǎng)連接Internet;另一種是使微控制器直接驅(qū)動調(diào)制解調(diào)器(MODEM)通過電話線向ISP撥號上網(wǎng)。這兩種方案的缺點在于都要使用有線的網(wǎng)絡,無法應用于在邊遠地區(qū)或可移動系統(tǒng)中。

  針對這一問題,本文提出一種基于GPRS的微控制器上網(wǎng)的解決方案,即在微控制器中實現(xiàn)PPP協(xié)議,并通過驅(qū)動GPRS模塊經(jīng)過GPRS無線網(wǎng)連接到Internet實現(xiàn)上網(wǎng)。這種方案的優(yōu)點在于:① 覆蓋面廣,適用于廣大偏遠地區(qū);② 無線上網(wǎng),適用于可移動目標;③使用廉價的微控制器實現(xiàn)簡單、成本低;④ 安裝簡便,維護方便。

  1 GPRS技術及其特點

  GPRS(General Packet Radio Service)是通用分組無線業(yè)務的簡稱,是在GSM基礎上發(fā)展起來的一種分組交換的數(shù)據(jù)承載和傳輸方式。與原有的GSM比較,GPRS在數(shù)據(jù)業(yè)務的承載和支持上具有非常明顯的優(yōu)勢:通過多個GSM時隙的復用,支持的數(shù)據(jù)傳輸速率更高,理論峰值達115kb/s;不同的網(wǎng)絡用戶共享同一組GPRS信道,但只有當某一個用戶需要發(fā)送或接收數(shù)據(jù)時才會占用信道資源。這樣,通過多用戶的業(yè)務復用,更有效地利用無線網(wǎng)絡信道資源,特別適合突發(fā)性、頻繁的小流量數(shù)據(jù)傳輸,很好地適應數(shù)據(jù)業(yè)務的突發(fā)性特點;GPRS計費方式更加靈活,可以支持按數(shù)據(jù)流量來進行計費;與無線應用協(xié)議(WAP)技術不同,GPRS能夠隨時為用戶提供透明的IP通道,可直接訪問Internet中的所有站點和資源;采用信道復用技術,每一個GPRS用戶都能夠?qū)崿F(xiàn)永遠在線;另外,GPRS還能支持在進行數(shù)據(jù)傳輸?shù)耐瑫r進行語音通話等等,而且相對于短消息等其它無線數(shù)據(jù)通信業(yè)務,GPRS的價格優(yōu)勢比較明顯。目前,我國移動推出的GPRS上網(wǎng)業(yè)務最高每千字節(jié)也只有3分錢,而且用戶可以根據(jù)自己的需要,以月租、包月等多種形式進一步降低GPRS通信的費用。

  因此使用GPRS實現(xiàn)遠程數(shù)據(jù)的傳送是非常經(jīng)濟實用的,特別是對于不易架設有線網(wǎng)絡的邊遠地區(qū)和可移動裝置。

  2 硬件連接和GPRS模塊設置

  通過GPRS網(wǎng)進行數(shù)據(jù)傳輸一般需要使用GPRS模塊。目前,GPRS模塊一般是指帶有GPRS功能的GSM模塊,可以利用GPRS網(wǎng)進行數(shù)據(jù)通信。其中比較流行的有法國Wave公司的WISMO系列和西門子公司的S系列等等。WAVECOM的WISMO模塊接口簡單、使用方便且功能非常強大,它與微控制器、SIM卡、電源之間的連接如圖1所示。

  

  圖1 GPRS模塊的硬件連接圖

  其中GPRS模塊與微控制器間是通過串行口進行通信的,通信速率最快可以達到115 200b/s。模塊與控制器間的通信協(xié)議是AT命令集,其中大部分命令是符合協(xié)議“AT command set for GSM Mobile Equipment (ME) (GSM 07.07 version 6.4.0 Release 1997)”的,但也有一些是Wavecom自己定義的AT命令。除了串口發(fā)送(TX)、串口接收(RX)之外,微控制器與GPRS模塊之間還有一些硬件握手信號,如DTR、CTS、DCD等。為了簡化微控制器的控制,硬件設計時沒有使用全部的硬件握手信號,而只使用數(shù)據(jù)載波檢測(Data Carrier Detect, DCD)和終端準備(Data Terminal Ready, DTR)信號。DCD信號可以檢測GPRS模塊是處于數(shù)據(jù)傳送狀態(tài)還是處于AT命令傳送狀態(tài)。DTR信號用來通知GPRS模塊傳送工作已經(jīng)結束。

  硬件連接完成后,在進行GPRS上網(wǎng)操作之前,首先要對GPRS模塊進行一定的設置。主要的設置工作有:① 設置通信波特率,可以使用AT+IPR=38400命令,把波特率設為38 400b/s或其它合適的波特率,默認的通信速度為9600b/s。② 設置接入網(wǎng)關,通過AT+ CGD CONT=1, “IP”, “CMNET”命令設置GPRS接入網(wǎng)關為移動夢網(wǎng)。③設置移動終端的類別,通過AT+CGCLASS=“B”設置移動終端的類別為B類,即同時監(jiān)控多種業(yè)務;但只能運行一種業(yè)務,即在同一時間只能使用GPRS上網(wǎng),或者使用GSM的語音通信。④ 測試GPRS服務是否開通,使用AT+CGACT=1,1命令激活GPRS功能。如果返回OK,則GPRS連接成功;如果返回ERROR,則意味著GPRS失敗。這時應檢查一下SIM卡的GPRS業(yè)務是否已經(jīng)開通,GPRS模塊天線是否安裝正確等問題。(其它相關的AT命令請參閱文獻3。)

  中國移動在GPRS與Internet網(wǎng)中間建立了許多相當于ISP的網(wǎng)關支持節(jié)點(GGSN),以連接GPRS網(wǎng)與外部的Internet網(wǎng)。GPRS模塊可以通過撥“*99***1#”登錄到GGSN上動態(tài)分配到Internet網(wǎng)的IP地址。其間GPRS模塊與網(wǎng)關的通信要符合點對點協(xié)議(Point to Point Protocol, PPP),其中身份驗證時用戶名、密碼都為空。使用PPP協(xié)議登錄上之后,就可以通過GGSN接上Internet了。

  3 軟件整體結構

  3.1 軟件層次結構

  程序中的所有代碼都是由C語言編寫的,并采用分層的結構,從底到上分別為:串口驅(qū)動層、GPRS模塊驅(qū)動層、PPP協(xié)議層、IP協(xié)議層、UDP協(xié)議層與應用層。上層函數(shù)的實現(xiàn)需要應用到底層函數(shù),而底層函數(shù)的任務就是為上層函數(shù)提供服務,最終完成應用層任務——傳送數(shù)據(jù)。各層的主要函數(shù)如圖2所示。

  

  圖2 軟件層次結構

  3.2 驅(qū)動程序編寫

  首先是串行口驅(qū)動層。它實現(xiàn)打開串口(OpenComm)、關閉串口(CloseComm)、讀串口數(shù)據(jù)(ReadComm)、寫串口數(shù)據(jù)(WriteComm)等函數(shù)。例如WriteComm函數(shù)向串口發(fā)送一個字節(jié)的數(shù)據(jù),而transmit函數(shù)向串口發(fā)送一個字符串的數(shù)據(jù):

  void WriteComm(char c){

  ES = 0;

  SBUF = c;

  while(TI==0);

  TI=0;

  ES = 1;

  }

  void transmit (char *data) {

  Delay (250);

  while (*data) {

  WriteComm (*data++);

  }

  }

  然后,在這些串口函數(shù)的基礎上編寫GPRS模塊的驅(qū)動函數(shù)。微控制器通過串行口控制GPRS模塊,進行撥號、設置等操作??刂频姆椒ㄊ遣捎肁T命令。在控制GPRS模塊撥打移動夢網(wǎng)GGSN的登錄號碼“*99***1#”之后,GPRS模塊就轉入在線模式(On-Line)。此時微控制器向串行口發(fā)送的所有數(shù)據(jù)都透明地傳送給了GGSN,同樣GGSN的回答也傳回單片機的串行口。當數(shù)據(jù)傳送完成后,微控制器需要通知GPRS模塊結束會話,并從在線模式轉回普通的命令模式,這可以通過置高DTR線完成。同時,如果線路由于異常斷開,CD線會回復到平常的低電平,所以處于在線模式下也要不斷檢測CD線是否處于高電平。根據(jù)這些操作,可以編寫GPRS驅(qū)動函數(shù):初始化GPRS模塊函數(shù)(GPRSInit)、撥號函數(shù)(GPRSDial)、斷開連接函數(shù)(GPRSHangup)、檢測是否處于在線狀態(tài)函數(shù)(GPRSOnline)。其中,GPRS的撥號和掛斷代碼如下:

  BYTE GPRSDial (void) {

  signed char delayCount = 80;

  transmit (“ATV0\r”); // 要求返回數(shù)字表示的回答

  if (!Waitfor (“0”, 30)) { // 等待 OK 回答

  return -1;

  }

  DTR_ON;

  transmit (“ATD*99***1#\r”); // 撥GGSN的號碼

  GPRSBuffFlush (); // 清空buffer

  // 等待回答

  while ((!GPRSBuffNotEmpty()) && (--delayCount 》 0)) {

  Delay (250);

  }

  if (delayCount) {

  return GPRSGetch (); // 返回回答的數(shù)字

  }

  return -1; // 沒有返回,錯誤

  }

  void GPRSHangup (void) {

  DTR_ON; // 置高DTR

  Delay (40); // 保持一定時間

  DTR_OFF; // 完成連接的斷開

  }

  這些底層的驅(qū)動函數(shù)將會使上層協(xié)議的編寫很方便,更重要的是,它為我們提供了一個驅(qū)動抽象層。當?shù)讓佑布龀龈膭拥臅r候,只需要對底層的驅(qū)動函數(shù)進行改動,而上層函數(shù)的代碼不變。

  4 PPP協(xié)議的實現(xiàn)

  由于移動夢網(wǎng)的GGSN與GPRS模塊通信時遵循PPP協(xié)議,所以要在微控制器中也實現(xiàn)一部分PPP協(xié)議才能與之對話。GPRS模塊在撥號后首先要與GPRS網(wǎng)關進行通信鏈路的協(xié)商,即協(xié)商點到點的各種鏈路參數(shù)配置。協(xié)商過程遵守LCP(Link Control Protocol)、PAP(Password Authentication Protocol)和IPCP(Internet Protocol Control Protocol)等協(xié)議。其中LCP協(xié)議用于建立、構造、測試鏈路連接;PAP協(xié)議用于處理密碼驗證部分;IPCP協(xié)議用于設置網(wǎng)絡協(xié)議環(huán)境,并分配IP地址。協(xié)商機制用有限狀態(tài)機的模型來實現(xiàn)。一旦協(xié)商完成,鏈路已經(jīng)創(chuàng)建,IP地址已經(jīng)分配就可以按照協(xié)商的標準進行IP報文的傳輸了。根據(jù)應用的不同,IP報文中可以攜帶UDP報文,也可以是TCP或ICMP報文。本系統(tǒng)正是采用UDP報文傳送數(shù)據(jù)信息的。數(shù)據(jù)傳輸完成之后,微控制器會向GGSN發(fā)送LCP的斷開連接報文,以終止網(wǎng)絡連接。

  PPP協(xié)議的幀結構如圖3(左)所示。微控制器的串口中斷接收程序首先以包起始和結束符來判斷是否有完整的PPP包,并對PPP包的內(nèi)容進行校驗,以確定數(shù)據(jù)包的完整性和正確性。然后,在主循環(huán)中進入PPP報文解析模塊,解析過程如圖3(右)所示。

  

  圖3 PPP報文解析

  5 登錄GGSN的過程

  系統(tǒng)的一個難點是微控制器登陸GPRS網(wǎng)關(GGSN)并與網(wǎng)關通過LCP、PAP、IPCP協(xié)議進行協(xié)商的過程。LCP、PAP與IPCP協(xié)議的幀結構大同小異,最常用的為請求(REQ)、同意(ACK)和拒絕(NAK)三種幀。微控制器與GGSN各為一方進行協(xié)商,任何一方都可以發(fā)送REQ幀請求某方面的配制,另一方覺得配置不能接受會回應NAK幀,如果可以則回應ACK幀。為了節(jié)省資源,我們只處理這三種數(shù)據(jù)幀,其它鏈路問題都由微控制器在程序控制下自己重新?lián)芴柦鉀Q。

  協(xié)商過程大致描述如下:在撥號成功連接后,GGSN首先會返回一個PAP REQ數(shù)據(jù)幀。我們發(fā)送一個空LCP REQ幀,以強迫進行協(xié)議協(xié)商階段。隨后,GGSN發(fā)送LCP設置幀,我們拒絕所有的設置并請求驗證模式。GGSN選擇CHAP或PAP方式驗證,我們只接受PAP方式。然后,進行PAP驗證用戶名和密碼過程,在GPRS中用戶名與密碼都為空,如果成功,GGSN會返回IPCP報文分配動態(tài)IP地址。此時,就完成了與GGSN的協(xié)商過程。協(xié)商過程的狀態(tài)轉換如圖4所示。

  

  圖4 協(xié)商過程流程

  協(xié)商完成后進入IP數(shù)據(jù)報通信階段。此時,微控制器向GGSN發(fā)送的所有包含IP報文的PPP報文都會被傳送給Internet網(wǎng)中相應的IP地址;而遠端所有向微控制器IP地址發(fā)送的報文也都會經(jīng)GPRS網(wǎng)傳送到微控制器上,從而完成微控制器與遠程主機通過互聯(lián)網(wǎng)的數(shù)據(jù)傳輸。

  6 小結

  經(jīng)過優(yōu)化,本系統(tǒng)的軟件代碼可以精簡到6K字節(jié)左右,共使用不到300字節(jié)的RAM。并且由于程序使用C語言編寫,稍加改動就可以在各種系列的微控制器上實現(xiàn)。微控制器通過GPRS上網(wǎng)的技術可以廣泛應用于需要遠程傳送數(shù)據(jù)的系統(tǒng)中,特別適合于遠程抄表、遠程監(jiān)控等領域。我們目前正把這項技術應用于車輛監(jiān)控調(diào)度系統(tǒng),在試驗階段取得了比較好的效果。

  參考文獻

  1 Wavecom公司。 GPRS User Guide. 2001-11

  2 Wavecom公司。 WISMO2C Hardware Specifications. 2000-08

  3 Wavecom公司。 AT Commands Interface, 2000-03

  4 Simpson W. The Point to Point Protocol(PPP)。 RFC1661. 1994

  5 PPP in HDLC-Like Framing. RFC1662. 1994

  黃承安 碩士研究生,主要研究方向嵌入式系統(tǒng)的理論方法及軟硬件設計,無線網(wǎng)絡通信。

  張躍 副教授,主要研究方向嵌入式系統(tǒng),控制理論。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。