stm32与sim900之GPRS通信(电脑串口与SIM900通信)
扫描二维码
随时随地手机看文章
注意:
1 sim900在进行GPRS通信的时候最大电流可以到90MA.瞬间电流SIM900模块可能高达2A@4V,即输入端电流瞬间值可能高达740mA@12V,故给模块选择电源的时候,要能满足瞬间电流峰值。
以上这段话摘录自正点原子的SIM900用户手册,也就是说你在用SIM900这个模块进行GPRS数据传输时,要保证能给这个模块提供2A左右的电流,在实际的测试当中,如果提供的电流过小,会造成GPRS通信偶尔几次通信成功。
2 stm32向SIM900通信的时候,发送的每个AT指令之间是要有时间间隔的,可以先通过电脑串口与SIM900进行通信有一个简单的认识,然后再开始写程序,调试。
3 注意SIM卡安装的方向不要装反
一 模块实物图
二 通过电脑串口调试SIM900
1 SIM900上电后一般会有指示灯,其中一个指示灯常亮,表示电源供电正常,另一个指示灯如果保持亮1秒,熄灭2秒,则表示注册到网络
2 发送指令
2.1 发送指令之前最好先发送一个"AT",用于SIM900进行串口波特率的同步。
注意AT指令不区分大小写,发送时应勾选发送新行。
2.2发送相关的设置指令
[cpp]view plaincopy
AT+CGCLASS="B"//设置移动台类别为B,即模块支持包交换和电路交换模式,但不能同时支持
[csharp]view plaincopy
AT+CGDCONT=1,"IP","CMNT"//设置PDP上下文标志1,采用互联网协议(IP)接入点为“CMNET”
[cpp]view plaincopy
AT+CGATT=1//用于设置附着和分离GPRS业务
[cpp]view plaincopy
AT+CIPCSGP=1,"CMNET"//设置为GPRS连接,接入点为“CMNET”
[cpp]view plaincopy
AT+CIPCSGP=1,"CMNET"//设置TCP连接本地端口号为2000
注意:1 在输入AT指令时,所有的符号都是英文的,中文的会导致错误,还有在输入的时候,要看清AT指令,不要输错。
2 在SIM900返回错误的时候先检查指令有没有输入错误,确保指令没有出错的情况下就要检查为什么AT指令会出错了,这里建议看一下SIM900的指令手册,举个例子
在当时我第一次测试的时候,这个总是返回错误,后来才发现原来我的手机卡欠费了,根本不支持GPRS业务。所以说出了错误不要干着急,要学会分析错误的原因。
3 花生壳的使用
3.1打开花生壳和网络调试助手
输入:%20%20%20
[cpp]view%20plaincopy
AT+CIPSTART="tcp","c1594751r4.iok.la","13938"
为什么是"c1594751r4.iok.la","13938",这个是和花生壳有关的。
注意:输入上面的指令后先出现“OK”,要稍等一会后才会出现“CONNECT OK”(连接成功),这也就是我在开头说的为什么一定要在程序里面加延时的原因。
好了,现在就可以向网络端发送数据了。
[cpp]view plaincopy
at+cipsend//开始发送数据指令
这次待发送的数据是“hello word",可以看到网络调试助手那里并没有收到数据,那是因为还要发送十六进制的"1A"
注意:要勾选HEX发送
注意事项:1 用花生壳是因为我们学校是内网,关于花生壳的时候我会接着写下来
2 长期使用GPRS要注意心跳包的维持
3 原则上讲现在我们是可以通过stm32来模拟这个过程与SIM900通信了,但是实际中却稍微有一些改动。