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