频道栏目
首页 > 资讯 > 其他综合 > 正文

MT2503与SIM系列模块连接服务器区别比较

17-06-15        来源:[db:作者]  
收藏   我要投稿

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指令手册进行分析。


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地址连接上了服务器,有种如释负重的感觉。所以我的感悟是平时遇到困难不能退缩,办法总是会有的。另外很多人经常都会遇到有问题但网络资料甚少的情况而不知道所措,这个感悟比较深,这也是我想写这篇文章的原因,希望给遇到过和我有一样困惑的人提供帮助,壮大网络的知识共享,节约更多的时间。

相关TAG标签
上一篇:iOS程序员、架构师、技术经理、技术总监和CTO有啥区别?
下一篇:敏捷开发学习笔记
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站