【摘要】設計了1個基于單片機的GPRS無線數據終端,該終端以單片機微處理器為控制核心,利用無線模塊SIM900實現與遠程服務器的TCP連接及數據通信,進而實現遠程控制LED燈的點亮和熄滅。該終端克服了智能家居、遠程控制等領域一些設備工作環境受地域限制數據傳輸不便的問題。為遠距離通信提供可能。經測試,本系統具有實時性好,接入速度快,可靠性好,通信距離遠等優點。
【關鍵詞】單片機;TCP/IP協議;SIM900;無線數據終端;GPRS
1.前言
GPRS系統利用現有的GSM網絡資源,發揮其系統傳輸特性好的優勢,為現場數據采集提供了一種便利、實時、高速的無線數據傳輸方式。針對單片機接入Internet,國內外廠商都進行了開發,提出的方案有:(1)采用專用的服務器,利用網絡通信技術組成子網的單片機嵌入式系統,經過路由接入外部網絡;(2)通過專用的網關,用網絡通信技術組成的子網運行TCP/IP協議;(3)直接在單片機上實現TCP/IP協議,通過以太網接口控制芯片接入互聯網。[1]
以上方式都是采用有線的方式接入,使用在一些固定的工作場所,本文討論的是將單片機通過無線方式接入Internet的方案,在單片機上實現TCP/IP協議和PPP協議,并用單片機驅動GPRS模塊實現單片機接入Internet。
2.GPRS技術
GPRS在移動用戶和數據網絡之間提供了一種連接,常為APN(Access Point Name,接入點)連接,該連接可以給移動用戶提供高速無線IP。GPRS采用分組交換技術,每個用戶可以同時占用多個無線信道,同一個信道又可以為多個用戶使用,以提高無線信道的利用率。GPRS無線傳輸速率在理論上可以達到180Kbps(實際應用大約在10Kbps-80Kbps),特別適合于間斷的、突發性的或頻繁的、少量的數據傳輸,也適合偶爾的大量數據傳輸。GPRS網絡覆蓋范圍廣,無空間和距離限制。使用GPRS技術實現數據分組收發,用戶永遠在線,保證數據傳輸的實時性。GPRS網絡接入速度快,且按流量計費,可以有效降低服務成本。由此可見,采用GPRS方式是一種經濟可行的單片機上網傳輸數據方案。[2]
3.系統總體設計方案
無線數據終端系統包括兩個部分:主控部分和GPRS無線傳輸部分。主控部分將對接收到的數據經過一定的信息分析處理,如數據融合、數據加密、打包等,以串行通信的方式發送到無線傳輸部分。無線傳輸部分通過TCP/IP傳輸協議,將主控部分處理后的數據通過GPRS網絡發送到Internet網絡上,在Internet上通過查找遠程服務器的IP地址和端口號,實現與遠程服務器的數據通信。無線數據終端硬件框圖如圖1所示。
3.1 系統主控部分
單片機控制模塊(MCU),它是系統的控制核心,負責驅動GPRS模塊與Internet外網的連接,接收、解析并處理GPRS模塊上傳來的數據報,封裝成要發送的數據報并傳送給GPRS模塊,控制與其P0.0引腳相連的LED燈的亮、滅。
3.2 GPRS無線傳輸部分
SIM900模塊是SIMCOM公司推出的于雙頻GSM/GPRS模塊,完全采用SMT封裝形式,工作頻率為GSM/GPRS 850/900/1800/1900MHz,可以低功耗實現語音、SMS、數據和傳真信息的傳輸。
GPRS模塊(SIM900)是系統的通信功能模塊,它是單片機與互聯網交換數據報的橋梁,負責單片機與互聯網的連接。對于單片機接入Internet,在軟件協議上需要進行很多裁剪和簡化,綜合協議的協議的兼容性和協議所需的系統資源,對協議棧做如下選擇[3]:(1)鏈路層選擇PPP協議。PPP協議在數據傳輸過程中有差錯檢測功能,通信雙方可以協商數據報大小、認證方式、鏈路質量等。(2)網絡層選擇協議IP協議。IP協議是TCP/IP協議的核心部分,所有的上層數據報文,包括TCP、UDP、ICMP和IGMP報文都是以IP報封裝傳輸的。(3)傳輸層選擇TCP協議。TCP提供了一種面向連接的可靠的雙向數據傳輸服務。TCP連接建立和斷開有嚴格的步驟,報文傳輸過程中有超時重傳機制、滑動窗口機制、TCP校驗機制等。UDP提供的是一種無連接、不可靠的服務,它通過上層協議來保證連接的可靠。UDP的實現相對簡單,傳送數據也較TCP快[4]。本系統采用TCP協議。由于無線模塊SIM900內嵌有TCP/IP協議,所以本次系統設計重點在于單片機驅動無線模塊SIM900上網的驅動程序的設計。
3.3 系統工作原理
終端連入GPRS網絡前,先進行TCP連接,連接成功后,終端(DTU)通過串口接收到遠程服務器發送的數據后控制與其相連接的LED燈的亮和,然后向服務器發送“LEDON”和“LEDOFF”字符串,實現與遠程服務器的數據通信。
4.系統硬件設計
本系統是采用STC89C52單片機作為主控電路芯片,鑒于文章的篇幅,文中沒有給出單片機的內部結構圖。系統主控電路除了單片機最小系統外,還和無線模塊SIM900連接,單片機和GPRS模塊之間通過串口進行通信,只需將單片機的串口發送端Txd、串口接收Rxd和地Gnd信號與GPRS模塊相應的相應的Rxd、Txd、Gnd引腳連接即可。
5.系統軟件設計
5.1 基于的AT指令的GPRS聯網設置
系統的GPRS模塊選用的是SIM900,該模塊是采用AT指令進行控制的,采用AT指令可以實現模塊參數的設置,實現數據的發送與接收。
串口基本設置如下:端口為COM3,波特率為9600,無校驗位,數據位為8,停止位為1。然后打開串口,按照下面的步驟給SIM900模塊發送AT指令,建立TCP連接。具體的設置步驟如下:第1步:ATE1設置無線模塊的回顯;第2步:AT+CSQ查詢當前信號質量;第3步:AT+CGREG?查詢模塊是否有注冊網絡;第4步:AT+CGATT?查詢模塊是否附著GPRS網絡;第5步:AT+CSTT設置APN連接;第6步:AT+CIICR激活移動場景;第7步:AT+CIFSR獲得本地IP地址;第8步:AT+CIPSTART=\"TCP\",\"jlgprs.eicp.net\",\"5000\"建立TCP/IP連接,此處為無線網卡的固定IP;第9步:AT+CIPSEND=37模塊向服務器發送數據(為37個數據長度的字符串);第10步:服務器向模塊發送數據\"Please send LED control data package!\";第11步:AT+CIPHEAD=1(來自遠程服務器的數據帶有IPD頭)。具體的GPRS聯網設置流程圖如圖2所示。
5.2 單片機驅動程序編寫
首先是串行口驅動層。它包括串口初始化、定時器初始化、接收中斷、讀串口函數receive_char()、寫串口函數send_string()等函數。然后,在這些串口函數的基礎上編寫GPRS模塊的驅動函數。微控制器通過串行口控制GPRS模塊,進行撥號、設置等操作??刂频姆椒ㄊ遣捎肁T命令。
5.3 下行數據解析算法
當單片機串口檢測到RXD端有數據時,接收標志位RI置為1,進入中斷函數void comm()interrupt 4,進入函數后判斷是否是以”OK”和“ROR”結尾的,如果是就將將發送標志位send_flag置1,利用strstr()函數判斷接收到的數據是以或者”+IPD,14:”開頭的,然后向服務器發送:“LEDON”和“LEDOFF”,進而將遠程LED燈打開和關閉。具體的算法程序如下:(以\"+IPD,13:\"為例,\"+IPD,14:\"算法原理同\"+IPD,13:\")
if(send_flag==1 strstr(TX_Buf,\"+IPD,13:\"))//TX_Buf為接收數據緩沖
{
send_flag=0;
send_string(“AT+CIPSEND=5\r”);//發送gprs命令符
send_string(“LEDON”);//向服務器發送數據
LEDON=0;
count=0;send_flag=0;ES=1;//清除接收數據緩沖,標志位清零,開中斷
break;
}
6.系統數據通信效果測試
當無線數據終端(DTU)收到了來自服務器發送的數據:”+IPD,13:+IPD5:LEDONOK”后執行指令“LEDON=0”,將遠程LED燈打開,然后向服務器發送:“LEDON”。當接收到來自服務器發送的數據”+IPD,14:+IPD6:LEDOFFOK”后執行指令“LEDOFF=1”,將遠程LED燈關閉,然后向服務器發送:“LEDOFF”,具體的實物圖如圖3所示。遠程服務器接受到的數據將顯示在上位機軟件上,如圖4所示。
和“LEDOFF”數據在上位機軟件上的顯示
7.總結
該GPRS無線數據終端克服了傳統的有線傳輸,其最大特點就是使無線數據終端以快速、可靠、低廉的方式連入GPRS網絡和互聯網,使無線數據終端數據信息可以快速、實時的進行傳送,為無線數據終端安全穩定的運行提供了可靠的保證。如果擴展現在普遍流行的TPM(可信平臺模塊)可使系統有更高的安全性,為智能家居、電力抄表、遠程監控領域的進一步發展和應用提供了廣闊的前景。
參考文獻
[1]李明,康靜秋,賈智平.嵌入式TCP/IP協議棧的研究與開發[J].計算機工程與應用,2002,1(6):1-2.
[2]鐘章隊,蔣文怡.GPRS通用分組無線業務[M].北京:北京人民郵電出版社,2001.
[3]安亞興,童小念.基于GPRS的單片機無線接入Internet方式[J].計算機與數字工程,2005,33:116-119.
[4]張正平,夏斌,劉橋.基于單片機的GPRS無線數據采集與傳輸系統的設計[J].四川理工學院學報(自然科學版),2007,10:19-22.
作者簡介:姜東東(1986—),男,河南漯河人,碩士研究生,現就讀于廣西師范大學電子工程學院,主要從事遠程電力抄表及無線通信方面的研究。