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