基于GPRS modem的嵌入式Internet的實現(xiàn)
肖春華1,2,張洪濤1,李秀紅3,2,孫忠富2,宋子凱1?,李金學1
(1湖北工業(yè)大學電氣與電子工程學院武漢?430068
2?中國農(nóng)業(yè)科學院農(nóng)業(yè)環(huán)境與可持續(xù)發(fā)展研究所北京?100081
3?武漢大學電子信息學院武漢?430079 )
摘 要:本文根據(jù)現(xiàn)代信息農(nóng)業(yè)的發(fā)展需求,在嵌入式無線遠程環(huán)境監(jiān)測系統(tǒng)的研究的基礎(chǔ)之上,成功地完成了GPRSmodem的internet接入。遠端基于ARM的嵌入式模塊在μC/OS-II操作系統(tǒng)的調(diào)度下實現(xiàn)信號的采集,在通過串口與模塊相連的GPRSmodem與Internet建立連接后,將數(shù)據(jù)發(fā)送到現(xiàn)場服務器,從而完成了底層的采集與發(fā)送。
關(guān)鍵字:嵌入式系統(tǒng);GPRS modem;μC/OS-II;AT指令;
Implementation of embeded Internet based on GPRS modem
XIAO Chun-hua?1,2, ZHANG Hong-tao?1, LI Xiu-hong?3,2, SUN Zhong-fu?2, SONG Zi-kai?1, LI Jin-xue?1
(1 School of Electrical and Electronic Engineering, HBUT, Wuhan, 430068, China;
2 Institute of Environment and Development in Agriculture, CAAS, Beijing 100081,China;
3 School of Electronics and Information, Wuhan University, Wuhan 430079,China)
Abstract: According to the need of the modern information agriculture, this article illustrated a successful connection method between GPRS modem and Internet based on the wireless system and remote environment monitor. Due to μC/OS-II double task of the ARM7 embedded machine, the remote data monitored is able to be collected. The GPRS modem is connected with ARM embedded machine by their ports, GPRS modem sends the data to the local web server when connected with Internet .Then the collection of Information could well finished.
Key words:Embeded system; GPRS modem;?μC/OS-II;AT commands
0.?概述
無線通訊模塊GPRS用于數(shù)據(jù)接入有著傳輸速率高、接入范圍廣、接入時間短、提供實時在線功能和按流量計費等優(yōu)點[1] [2],同時隨著GPRS技術(shù)在無線通信領(lǐng)域應用的不斷拓展和深入,GPRS modem作為GPRS在Internet的PC機終端已經(jīng)得到了廣泛的應用。本課題組研制的“嵌入式無線遠程環(huán)境監(jiān)測系統(tǒng)”就成功的利用了這個技術(shù),下面將詳細介紹GPRS modem接入Internet進行數(shù)據(jù)傳輸,從而實現(xiàn)了底層的采集與上層的網(wǎng)絡發(fā)布的連接。
1.?GPRS接入Internet的系統(tǒng)設(shè)計
圖1 GPRS接入Internet系統(tǒng)模型
中圖分類號:TP391?文獻標識碼:A
[1]基金項目:教育部重點科技項目(206095),?湖北省教育廳重點項目(D200614002).
作者簡介: 肖春華,男,(1981-),湖北松滋人,碩士研究生,研究方向:嵌入式系統(tǒng)
Author brief introduction:XIAO Chun-hua, Sex: Man,Birthday:1981.1.14,Nation: Han;Degree: Postgraduate; Major: Embeded system
通訊地址:湖北工業(yè)大學電氣與電子工程學院#926信箱。郵編:430068
EMAIL:xiaochunhua.wh@gmail.com?TEL: 13487084952
本系統(tǒng)采用的是WAVECOM GPRS modem,這是一款內(nèi)嵌TCP/IP/PPP協(xié)議的無線傳輸
模塊,無須在ARM板內(nèi)移植通訊協(xié)議,極大的縮短了開發(fā)周期。它適用于在GSM網(wǎng)絡下實現(xiàn)各種無線業(yè)務,其中主要包括電話、短信、GPRS無線上網(wǎng)等業(yè)務。圖1為GPRS接入Internet的系統(tǒng)模型,GPRS modem將底層電路板采集到的信息以無線傳輸方式發(fā)送出去,通過無線網(wǎng)絡供應商轉(zhuǎn)送到Internet,經(jīng)由Internet最終進入數(shù)據(jù)處理中心。
底層核心板為本課題組自行研制,是一款以ARM7芯片LPC2210為核心處理器,有16KB片內(nèi)靜態(tài)RAM,通過外部存儲器接口可將外部存儲器配置成4組,每組的容量高達16Mb,滿足μC/OS-II移植要求。本硬件設(shè)計有兩個通用的九針232輸入/輸出串口,一個串口GPRS modem連接,另外一個串口通過轉(zhuǎn)接器與傳感器組相連實現(xiàn)數(shù)據(jù)的采集。
在GPRS的接入Internet并與遠程的服務器接收端連接的設(shè)計中,關(guān)鍵的設(shè)計有三個方面,一是底層ARM板將數(shù)據(jù)通過串口發(fā)送到與之相連的GPRS modem上,二是在ARM CPU中移植嵌入式適時操作系統(tǒng)μC/OS-II,并在操作系統(tǒng)下實現(xiàn)任務的建立,三是在μC/OS-II下用AT指令實現(xiàn)GPRS modem與網(wǎng)絡的連接。
2.?μC/OS-II操作系統(tǒng)的移植與任務的建立
2.1操作系統(tǒng)的移植
移植[3] [5]工作主要針對三個與處理器相關(guān)的文件進行修改,使之與處理器相適合,即:C語言文件OS_CPU.H,OS_CPU_C.C和匯編文件OS_CPU_A.ASM。
(1)0S_CPU.H
①?編譯器相關(guān)數(shù)據(jù)類型的設(shè)定:用#define語句定義兩個宏開關(guān)中斷
②定義堆棧方向(從上向下遞增):#define OS_STK_GROWTH 1
③?OS_TASK_SW()、OSCtxSw ()的移植:#define OS_TASK_SW() OSCtxSw ()
μC/OS-II從低優(yōu)先級任務切換到高優(yōu)先級任務時,通過執(zhí)行OS_TASK_SW()仿中斷的產(chǎn)生。中斷服務子程序的中斷向量地址指向匯編語言函數(shù)OSCtxSw()。
(2)修改OS_CPU_C.C
OS_CPU_C.C文件中需要用戶定義6個C語言函數(shù):OSTaskStklnit(),OSSTaskCreateHook(),OSTaskDelHook(),OS_TaskSwHook(),OSTaskStatHook(),OSTimeTickHook()。實際必須定義的只有OSTaskStklnit()函數(shù),其它5個函數(shù)需要聲明,但可以不加代碼,但要將OS_CFG.H中的OS_CPU_HOOKS_EN設(shè)為0。
(3)修改OS_CPU_A.ASM
OS_CPU_A.ASM中要改寫四個匯編語言函數(shù):OSStarHighRdy(),OSCtxSw()
2.2任務的建立[4]
μC/OS-II是多任務嵌入式RTOS,最多可添加64個不同的任務[6],可以很好的滿足系統(tǒng)設(shè)計的要求,在μC/OS-II下可以采用模塊化設(shè)計,這樣不同的任務的添加變得非常簡單,同時極大的減小了編程的難度,增加了程序的可讀性。基于此,在設(shè)計時將GPRS與網(wǎng)絡的連接和信息的發(fā)送分成兩個不同的任務建立,在任務的建立時首先要給任務定義自己的堆棧,由于系統(tǒng)中還有流水燈和多組傳感器的采集,因此在設(shè)計時暫將GPRS的連接和數(shù)據(jù)的發(fā)送分別作為第四、第五個任務來編寫。
OS_STK TaskStk4 [TaskStkLengh]; //?定義Task4的堆棧
OS_STK TaskStk5 [TaskStkLengh]; //?定義Task5的堆棧
void gprslianjie(void*pdata); // Task4?任務4
void shujufasong(void*pdata); // Task5?任務5
OS_EVENT *USEPORTMutex;
int main (void)
{ OSInit (); //操作系統(tǒng)的初始化
OSTaskCreate (gprslianjie,(void *)0, &TaskStk4[TaskStkLengh - 1],7);
//建立GPRS與網(wǎng)絡連接的任務,任務名為gprslianjie
OSTaskCreate (shujufasong,(void *)0, &TaskStk5[TaskStkLengh - 1],8);
//建立數(shù)據(jù)發(fā)送的任務,任務名為shujufasong
USEPORTMutex=OSMutexCreate(2,&err);
OSStart ();
return 0;
}
因為GPRS與網(wǎng)絡連接是本系統(tǒng)建立的第五個任務,所以定義時用TaskStk4表示它的堆棧名,由于設(shè)計時本著先采集再連接發(fā)送的思想,而且數(shù)據(jù)要按照一定的順序定時發(fā)送,另外,還要避免資源的共享與沖突的出現(xiàn),于是建立了互斥型信號量加以控制,并且數(shù)據(jù)發(fā)送任務的優(yōu)先級要低于GPRS連接的優(yōu)先級。其中阿拉伯數(shù)字7、8分別代表任務的優(yōu)先級,需要指出的是數(shù)字越小,優(yōu)先級別越高。
這樣一來GPRS與網(wǎng)絡連接的任務就在μC/OS-II中建立了。
3.?GPRS modem的AT指令的介紹
限于篇幅,在本文中只介紹GPRS modem接入Internet和與服務器連接的必要指令,按照接入網(wǎng)絡時需要發(fā)送AT指令的順序介紹。
(1)AT,測試GPRS modem是否于ARM板連接好,正常時返回OK;
(2)AT+CGCLASS=”B”,設(shè)置模塊工作類型為B,正常時返回OK;
(3)AT+CGDCONT=1,”IP”,”CMNET”,上網(wǎng)設(shè)置,只有開通GPRS功能的SIM卡可以使用,設(shè)置成功后返回OK;
(4)AT+WOPEN=1,激活Q2406B中的TCP/IP協(xié)議棧,成功時返回OK;
(5)AT+CGATT=1,GPRS附著到網(wǎng)絡,成功后返回OK;
(6)at#connectionstart,模塊中封裝的TCP/IP棧撥號并啟動GPRS連接,成功后返回網(wǎng)關(guān)隨機分配IP地址。
10.16.140.71
OK_Info_GprsActivation
(7)at#tcpserv=1,”211.147.18.79″,設(shè)置上位機(TCP server)的IP地址,成功后返回OK;
(8)at#tcpport=1,”1433″,設(shè)置上位機與Q2406B間的通訊端口,這需與服務器端正偵聽的端口相同。成功后返回OK;
(9)at#otcp=1,開啟與上位機的通訊,成功后返回Ok_Info_WaitingForData從而進入等待輸入數(shù)據(jù)的狀態(tài)。
通過這九步的成功設(shè)置后GPRS modem就成功的與遠程的服務器之間建立了連接,進入了數(shù)據(jù)的通訊狀態(tài)。值得注意的是在編寫程序過程中,在定義AT指令時,一條完整的AT指令可以用大寫英文字符定義,也可以用小寫的英文字符定義,但如果是在同一條指令中英文字符的大小寫要一致。另外一點就是引號不能夠省略,也不能夠?qū)懗晌谋揪庉嫚顟B(tài)下的雙引號,否則GPRS modem不予辨別,如輸入AT#tcpport=1,”1433″、at#tcpport=1,1143、at#tcpport=1,“1433”等,通過串口返回的將都會是ERROR。
4.軟件編程注意事項及流程圖
由于通過GPRS modem實現(xiàn)通過無線網(wǎng)絡與遠程服務器的連接存在不穩(wěn)定和掉線等情況,如當時所在地區(qū)GPRS網(wǎng)絡不穩(wěn)定。因此在編寫程序的時候做了以下的一些處理,以保證系統(tǒng)的連接和通訊處于正常和規(guī)范的狀態(tài)。
(1)建立TCP連接的過程中要考慮到每一步可能會出現(xiàn)的錯誤,比如設(shè)備沒有連接好、網(wǎng)絡信號質(zhì)量不高引起連接失敗等,因此在程序設(shè)計的時候要做到兩點,一是在modem依附到網(wǎng)絡、啟動GPRS連接以及開啟與上位機的通訊等過程中從發(fā)送指令到接收指令之間要有一定的等待時間;二是所有的步驟中,需要判斷從串口返回的字符串是不是表示ERROR,如果是則再發(fā)送一次該指令,再次對返回的字符串進行判斷,如果顯示操作成功則進入下一步,否則第三次發(fā)送該指令,第三次判斷后如果還是顯示操作失敗則放棄本次TCP/IP的連接。
(2)由于兩次發(fā)送數(shù)據(jù)之間有一定的時間間隔,在此期間也有可能因為一些因素造成連接關(guān)閉,因此在程序的編寫過程中筆者采用每發(fā)送一次數(shù)據(jù)后自動讓連接關(guān)閉,下次要發(fā)送數(shù)據(jù)時從新進行TCP的連接的機制。這樣就避免了數(shù)據(jù)采集成功而發(fā)送不成功的隱患的出現(xiàn)。
圖2為軟件實現(xiàn)的流程圖。
圖2 GPRS接入Internet軟件實現(xiàn)流程圖
4.?軟件的實現(xiàn)
char str4[]=”AT+CGATT=1\r”; char str5[]=”at#connectionstart\r”;
char *test=”K”; char strget[100];char str8[]=”at#otcp=1\r”; //部分字符串的定義
void gprslianjie (void *pdata) //Q2406B接入Internet的任務
{?。。。。。。。。。。。。。。。
while (1)
{。。。。。。。。。。。。。。。
uart1_sendstr(str4); //進入TCP連接的第五步
OSTimeDly(OS_TICKS_PER_SEC*6); //延時等待串口返回數(shù)據(jù)
uart1_getstr( strget,16); //串口1接收Q2406B返回的字符串
value=strstr(strget,test); //判斷返回字符串中是否有“OK“,有表示連接成功
if(value != NULL) //第一次連接如果成功
{ uart1_sendstr(str5); //進入下一步
U1FCR=0X07;} //串口要及時清空,避免出現(xiàn)亂碼
else if(value == NULL)//第二次連接及判斷
{?。。。。。。。。。。else //第二次連接不成功則再次發(fā)送該指令
。。。。。。。。。。else
OSTimeDly(OS_TICKS_PER_SEC);} //三次判斷后連接不成功則
進行任務的下一次調(diào)度,退出本次連接
}。。。。。。。。。。。。。。。。。。。。}
void shujufasong(void *pdata)
{?。。。。。。。。。。。。。。。。。
while (1)
{ OSMutexPend(USEPORTMutex,0,&err);//等待互斥性信號量
uart1_sendstr(data);//data為采集到的數(shù)據(jù),按照接收軟件及數(shù)據(jù)庫定義的格式定義
。。。。。。。。。。。。。。。。
uart1_sendstr(str8);//再次發(fā)送第九步AT指令,自動關(guān)閉連接
OSMutexPost(USEPORTMutex);//釋放互斥性信號量
。。。。。。。。。。。。。。。。。。。。。。。。。。?}}
5.?結(jié)束語
本設(shè)計利用WAVECOM?(Q2406B)?GPRS modem通過無線網(wǎng)絡與遠程服務器建立連接,實現(xiàn)了信息的采集與發(fā)布的有效統(tǒng)一,可用于各種條件下的遠程的環(huán)境監(jiān)測,具有比較大的現(xiàn)實意義及實用價值。當然本系統(tǒng)還有待完善,比如短消息功能和語音功能需要進一步的開發(fā)得以實現(xiàn)。
參考文獻:
[1]Theodore S. Rappaport,?et al.?Wireless Conmmunications: Past Events and a Future Perspective. IEEE Communications Maganine,50th Anniversary Commemorative Issue, May 2002:150~153.
[2]李秀紅,孫忠富,黃天戍.嵌入式系統(tǒng)在基于WEB的農(nóng)業(yè)信息獲取技術(shù)中的應用探討.農(nóng)業(yè)網(wǎng)絡信息, 2005,12:34-37.
[3]黃天戍李秀紅. RTOS?嵌入式實時多任務操作系統(tǒng)嵌入式系統(tǒng)μc/OS-Ⅱ.微計算機信息, 2005年?18期?.
[4]周立功等編著.?ARM嵌入式系統(tǒng)基礎(chǔ)教程.北京航空航天大學出版社?.2005.
[5]?Jean J.Labrosse , MicroC/OS-II The Real-Time Kernel, Second Edition.
Published by CMP Books , CMP Media LLC,2002.
[6]?Jane W S Liu.Real-Time Systems.New Jersey:Prenticc Hall,2000.
北京玉笛信息技術(shù)有限責任公司
地址:北京海淀區(qū)知春路23號量子銀座903(863軟件園)
淘網(wǎng)址:http://shop35321900.taobao.com