MT2503與SIM系列模塊連接服務器區別比較

1.簡單介紹

本文所述的SIM系列的GPRS模塊以SIM800爲例。
MT2503是聯發科生產的GPRS模塊,SIM800是訊通公司的。前段時間無意發現MT2503芯片,其內部不僅具有GPRS功能,還集成了GPS/藍牙/基站定位功能,其內部功能比SIM800多了一些,簡直小巧精悍。網上搜索發現,現在流行的小黃車通信定位用的解決方式就是MT2503這款芯片(也不知道爲啥沒用它聲稱的北斗芯片,O(∩_∩)O哈哈~)。MT2503和SIM系列的一樣,都是採用AT指令控制,內部集成TCP/IP協議棧。對MT2503調試一遍後,發現其AT指令以及控制思想和SIM還是差別蠻大的。
在網上MT2503資料SIM系列少很多,對於MT2503連接服務器方面個人也摸索了不少時間,比在這裏,以模塊連接服務器爲例,來說明兩者之間使用的不同之處,尤其說明下以域名方式連接到服務器的不同之處,給網友提供借鑑,節約開發時間。

說明:下面所描述的AT指令均爲簡述,更細緻的請見我上傳的兩種模塊的AT指令手冊進行分析。下載鏈接:http://download.csdn.net/detail/ludaoyi88/9866885


2.SIM800連接服務器過程

注:SIM模塊連接到服務器和ESP的wifi模塊連接過程較爲類似。下面爲連接服務器過程,並且發送指令後均要加上回車\r\n,指令發送纔有效

1:發送AT+CREG?成功,返回OK以及註冊情況信息
指令說明:查詢模塊的網絡註冊是否成功

2:發送AT+CIPSHUT成功,返回SHUT OK
指令說明:關閉移動場景

3:發送AT+CGCLASS=”B”成功,返回OK
指令說明:設置GPRS移動臺類別爲B,支持包交換和數據交換

4:發送AT+CGDCONT=1,”IP”,”CMNET”成功,返回OK
指令說明:設置PDP上下文,互聯網接協議,接入點等信息

5:發送AT+CGATT=1成功,返回OK
指令說明:附着GPRS業務

6:發送AT+CIPCSGP=1成功,返回OK
指令說明:設置爲GPRS連接模式

7:發送AT+CIPHEAD=1成功,返回OK
指令說明:設置接收數據顯示IP頭(方便判斷數據來源,僅在單路連接有效)

8:這一步需着重說明,是與MT2503最大區別的地方,SIM可以支持域名直接連接服務器和IP地址連接兩種方式

第一種:假設服務器域名爲14z95r6380.iask.in。端口號爲3000
發送AT+CIPSTART=”TCP”,”14z95r6380.iask.in”,3000連接成功,返回CONNECT OK
指令說明:通過TCP協議連接到域名爲14z95r6380.iask.in端口爲3000的服務器。

第二種:假設服務器IP爲202.1.1.1。端口號爲3000
發送AT+CIPSTART=”TCP”,”202.1.1.1”,3000
連接成功,返回CONNECT OK

可以發現兩種方法都是用的同一個指令AT+CIPSTART,只要將域名或者IP進行更改就可以。而MT2503就沒這麼簡單了,見後面分析。

9:發送數據(以發送abc爲例)。

發送AT+CIPSEND成功,返回>
指令說明:進入數據發送透傳模式,此時AT指令失效,後面爲用戶需要發送給服務器的消息。

發送abc->成功,返回SEND OK
說明:發送的消息後面必須加->表示發送消息的結束,退出透傳。在C語言中可以通過轉義字符來實現:abc\32\0

3.MT2503連接服務器過程

1:模塊上電後,需按一下POWER_KEY電源鍵1-2S時間(即拉低芯片的POWER_KEY引腳1-2S時間),此時開啓芯片供電。將返回模塊相關信息,並進行檢查SIM卡,如下(不用理會)
F1: 0000 0000
V0: 0000 0000 [0001]
00: 0000 0000
U0: 0000 0001 [0000]
G0: 0002 0000 [0000]
T0: 0000 00BB
Jump to BL
PowerOnSuccessPTS OK!+EUSIM: 1
注:+EUSIM: 1表示存在sim卡,以下發送也需要在指令末位加\r\n回車

2:發送AT+ESLP=0成功,返回OK

指令說明:關閉休眠狀態。
注:經測試,模塊上電第一條指令必須先發這個,發其他話容易死。

3:發送AT+CREG?成功,返回OK以及註冊情況信息
指令說明:查詢網絡註冊情況

4:發送AT+EGDCONT=0,”IP”,”CMNET”成功,返回OK
指令說明:配置PDP(PDP連接是設備到基站的GPRS連接)

5:發送AT+ETCPIP=1,0成功,返回OK
指令說明:激活PDP連接。(此處需要一定等待時間)

6:此處是重點,對於MT2503連接到服務器的指令,通過域名形式和通過IP地址形式連接,方法是不同的

第一種:假設服務器IP爲202.1.1.1。端口號爲3000

發送AT+ETL=1,0,0,”202.1.1.1”,3000連接成功,返回如下內容:
+ETL: 0
OK
指令說明:通過TCP協議連接到IP爲202.1.1.1端口爲3000的服務器。
(其中+ETL: 0中的0爲連接到服務器的代號,後面發送數據時需要根據這個代號來指定發送,這也是與SIM不同之處)

第二種:假設服務器域名爲14z95r6380.iask.in。端口號3000。此時不能直接通過AT+ETL去連接,而是需要先進行域名解析出IP地址,再通過此指令連接,這也是和SIM非常不同的地方**

發送AT+EDNS=0,”14z95r6380.iask.in”解析成功返回內容如下:
+EDNS: “202.1.1.100”,”14z95r6380.iask.in”
OK
指令說明:對域名14z95r6380.iask.in完成IP地址的解析,並返回IP地址202.1.1.100。

此時可以發送指令AT+ETL=1,0,0,”202.1.1.100”,3000連接成功,返回如下內容:
+ETL: 0
OK

7:發送數據(以發送abc爲例)

發送AT+ETLTS=0(此指令沒有返回)
指令說明:模塊進入透傳,開始用戶想要發送的消息。與SIM不同,其中AT+ETLTS=0中的0表示服務器編號,也就是第6步中提到+ETL: 0中的0,所以程序實現時需要對其提取。

發送消息abc
發送+++(連續發送3個+號表示退出透傳)

調試經驗

使用過兩款模塊,可以總結如下幾點調試經驗

1)用過兩款類型的GPRS,整體感覺在連接服務器速度方面MT2503快許多。
2)每一條指令的等待速度也不一樣,SIM在指令AT+CREG?註冊會久一些,而MT2503註冊時間比較短。但是MT2503在指令AT+ETCPIP=1,0與基站建立連接過程中比較久些。
3)MT2503進入AT+ETCPIP=1,0指令時,連接過程需要較大電流,因此此時模塊供電和電流上一定要穩定,否則很容易返回失敗。
4)MT2503開電後默認休眠,必須得發送AT+ESLP=0進行喚醒,如果發其他指令容易卡死。

一些心得:SIM是早前開發用到的,MT2503是後面開發用到的。雖然兩者都是AT指令控制,但AT指令操作上有較大區別。尤其是開發過程中需要域名連接服務器時候,因爲先用的是SIM模塊,有些先入爲主的思想,覺得MT也能直接通過域名去連接,但屢次失敗,MT開發在網上資料不是很多,查了很多沒找到域名建立連接方法,感覺陷入了絕望。最終只能把希望寄託在MT2503的AT指令英文手冊上,逐個查找後發現了AT+EDNS這條指令,英文解釋是IP和域名相互轉化指令,似乎燃燒起了希望,試用了下,果不其然,確實解析出了IP地址,最後通過這個IP地址連接上了服務器,有種如釋負重的感覺。所以我的感悟是平時遇到困難不能退縮,辦法總是會有的。另外很多人經常都會遇到有問題但網絡資料甚少的情況而不知道所措,這個感悟比較深,這也是我想寫這篇文章的原因,希望給遇到過和我有一樣困惑的人提供幫助,壯大網絡的知識共享,節約更多的時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章