笔记-SIM900A模块开发:GPRS建立TCP连接与服务器进行数据传输

写在前面:以下步骤可能并不严谨,仅供参考。

首先,简单说明一下开发目的:本次开发想要实现单片机采集到的信息直接发送到服务器端处理。我现在所知道的可以实现的方式有两种:①利用SIM卡;②利用WIFI传输。两者各有优缺点,而SIM卡最大的优势就是不受WIFI范围限制,因为开发的不是固定场所设备,因此选择了SIM卡。

以下步骤中有在调试过程中出现的问题及解决方案,直接进入正题,拿到某宝买的SIM900A以后,直接看学习资料,明确接线,初始化指令等。

【指令概述】

1、AT [用来同步波特率(默认波特率9600、数据位8、停止位1、无校验位)]

2、AT+CGCLASS="B" [用于设置移动台类别,SIM900A模块仅支持类别"B"和"CC",发送: AT+CGCLASS="B",设置移动台类别为 B]

3、AT+CGDCONT=1,"IP","CMNET" [设置 PDP 上下文标志为 1,采用互联网协议(IP),接入点为"CMNET"]

4、AT+CGATT=1 [附着GPRS业务]

5、AT+CIPCSGP=1,"CMNET" [AT+CIPCSGP,用于设置 CSD 或 GPRS 链接模式。发送: AT+CIPCSGP=1,"CMNET",设置为GPRS连接,接入点为”CMNET“]

6、AT+CLPORT="TCP","2000" [设置 TCP 连接本地端口号为 2000]

7、AT+CIPSTART="TCP","180.120.52.129","8086[建立一个TCP连接,连接目标地址为:180.120.52.129(需要根据自己的实际情况更换),连接端口为 8086(这个也可以更换),连接成功会返回: CONNECT OK。 ]

8、AT+CIPSEND [用于发送数据,发送后返回:>]

9、1A [发送数据结束后发送1A,必须以HEX发送,发送后如发送成功则返回SEND OK]

10、AT+CIPCLOSE=1 [断开TCP连接]

11、AT+CIPSHUT [断开场景]

【操作步骤及可能出错原因】

1、大家可以查阅网上相关文章来获取自己的IP地址,但是因为我调试的时候是校园网,路由器设置多次仍然不能解决问题,便向其他人索要了一个服务器地址和端口号进行调试。

2、首先进行线路的连接,连接成功,等待一段时间后发送AT,返回OK,用来同步波特率,以免返回乱码

3、紧接着发送AT+CGCLASS="B",返回OK

4、发送AT+CGDCONT=1,"IP","CMNET",返回OK

5、发送AT+CGATT=1,返回OK

6、发送AT+CLPORT="TCP","2000",返回OK

7、发送AT+CIPSTART="TCP","180.120.52.222","8086",返回OK,一直等待到返回CONNECT OK

     (这里是最容易出现错的地方,网上也有很多解决方案,我这里列出我出现的错误及自己是如何解决的):

     第一种错误:没有返回CONNECT OK,而是+PDP DEACT。这个错误是网络问题,第一考虑自己SIM卡有没有欠费,第二考虑是否供电不足(电流太小),我们一般调试用USB供电的时候就会出现这样的错误。

     第二种错误:没有返回CONNECT OK,而是STATE: TCP CLOSED       CONNECT FAIL 。这种错误我的是因为服务器的问题,调试的时候一般是用网络调试助手来接受SIM900A发出的数据,但是因为本机IP一直不能连接,找了很多网上的方法,大概都是明确对外IP和本地IP,然后调整路由器设置(路由器设置有DMZ主机设置和虚拟服务器设置),但是我在设置以后依然不能进行连接(我怀疑是校园网的问题,也可能是其他原因,但是没有外网,无法排除第一种可能),因此就借用了别人的服务器试了一下,结果是完美连接,直接解决问题。在此感谢某店提供的服务器。

【图片区】

指令图:

-----------------------------------------------------------------------------

开发还没有结束,接下来的调试和单片机程序后续更新。

如有错误请及时指正,谢谢。

猜你喜欢

转载自blog.csdn.net/Forever1715/article/details/81020052