微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于SIM800C的GPRS数据传输系统设计*

基于SIM800C的GPRS数据传输系统设计*

时间:10-27 来源:电子产品世界 点击:

Com公司其他型号的物联网通讯模块的指令大部分相同,可用以兼容各个不同的硬件版本,用来建立TCP连接的相关命令及其作用如表1。

利用STM32的标准库函数可以快速对芯片的USART进行初始化,在STM32的main函数中,上电后主要完成相应的时钟以及GPIO,使能芯片的USART接口、初始化波特率等。并配置中断向量,编写相关的串口中断处理程序,作为返回值接收处理函数的基础。为测试系统传输数据的准确性,通过STM32的485接口,应用Modbus协议每隔1秒采集一款485型温湿度传感器及其他传感器的数据进行传输,每隔30秒进行一次GPRS传输,并将数据保存在DeviceRunStatus_Struct结构体中。

针对SIM800C操作需要初始化STM32的串口,配置SIM800C运行模式,其中,网络域名的参数保存在DNSPara_Struct结构体中,例如,域名地址、DNS服务器地址1和DNS服务器地址2。ProtocolPara_Struct结构体中主要存放与IP相关的参数,例如本地TCP端口m_LocalTcpPort、服务器Tcp地址m_ServerTcpPort和服务器地址m_ServerIPAddr。在利用SIM800C进行TCP连接的AT命令时,直接调用这两个结构体内的参数进行连接即可。根据AT命令执行后的返回值判断连接是否成功,此时令m_RunPara.m_DeviceRunStatus.m_nGprs = 1,置位连接状态标志。

2.2 异常处理

在日常测试中发现,可能会由于信号或环境的影响导致SIM800C模块出现异常,模块串口报错TCP CLOSED导致连接中断。软件设计中,在处理此类型问题时,利用GPRS_Check_Periodic_Handle()函数每隔30秒检查一次连接状态,若内存中的变量m_RunPara.m_DeviceRunStatus.m_nGprs值为0,即连接失败时,对SIM800C模块进行重新上电操作,将模块远程自动重启,重新执行开机、配置、连接TCP等一系列动作以恢复模块的正常运行。并在程序中设定域名最大连接次数为3次,即在3次域名连接仍未成功则使用IP地址方式进行连接,保证域名及IP连接均可正常使用。

2.2 心跳包机制

在模块与服务器建立TCP连接后,由于GPRS网络运营商的设置,若在某一时间段内客户端与服务端没有任何数据交换,会将网络断开,导致连接中断,数据无法正常传输,为解决这一问题,在TCP通讯协议内加入心跳包机制,用于长连接的保持和断线处理。CMD_HeartTime命令号,在第一次建立连接后,客户端发送当前设备时钟,服务端开启Timer定时器每隔30秒钟根据命令号进入心跳包处理的case语句中执行,进行双向对时操作,这样既可以保持双向稳定连接,又可以对物联网设备进行RTC更新时间操作,保证了设备运行的稳定性。下位机软件代码如下:

case CMD_HeartTime:

if(pNetComm->m_Header.m_nOperation == 0)

{

UpdateTimer(pNetComm->unoin.m_TimerPara.m_TimestampL);

pNetComm->m_Header.m_nOperation = 1;

chRet = 1;

}

break;

在下位机收到CMD_HeartTime命令号时,进入该case语句内,UpdateTimer函数用于更新设备的RTC时钟,并置TCP数据包的头部m_Header中的.m_nOperation为1,在最后打包结构体数据通过TCP协议发送给服务器端。

将未加入异常处理与心跳包机制的1号设备与经过优化的2号设备运行一上午的时间进行对比,具体连接情况对比如表2与表3所示。

测试发现,1号设备会因网络问题超时而断开连接,只能靠人工手动进行复位重连;2号设备在上线后仅因服务器原因断开连接,随后便立即自动重连并保持连接至测试结束。说明异常处理、心跳包机制与断线重连起到了提高设备传输稳定性的作用。将2号设备接入独立IP的云服务器,通过网页查看观测24小时,发现无异常掉线问题,数据正确稳定传输。服务器端部分接收情况如图6所示。

3 结论

论文以STM32F207VCT6为主控芯片,以最新的GPRS模块SIM800C为物联网通讯模块进行无线数据传输,长时间设备运行测试未发现掉线及传输错误情况,传输情况稳定,基于C语言编写的嵌入式程序代码可方便地移植到其他类型的单片机中,方便进行二次开发,为物联网设备数据的传输提供了一种新的稳定的解决方案。

参考文献:

[1]刘火良.STM32库开发实战指南[M].北京:机械工业出版社,2013.

[2]李涛,马殷元,杨东. 基于STM32的GPRS远程检测终端设计[J]. 电子世界,2012.

[3]张逢雪,王香婷,王通生. 基于STM32单片机的无线智能家居控制系统[J]. 自动化技术与应用,2011.

[4]Simcom. SIMCOM800C硬件设计手册.pdf[EB/OL]. http://simcomm2m.com/UploadFile/TechnicalFile/SIM800C_硬件设计手册_V1.01.pdf.

[5]Simcom. SIM800Series AT Command ManualV1.09.pdf[EB/OL].

http://simcomm2m.com/UploadFile/TechnicalFile/SIM800Series_ATC

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top