无线路灯项目——SIM900A调试
来源:互联网 发布:网络学习论坛发帖 编辑:程序博客网 时间:2024/05/17 04:33
1.波特率
1.1自适应波特率
当SIM900A模块处于自适应波特率下,模块开机后,会从串口发出一串字符,在上位机不同的波特率下,会显示出不同的字符,以115200为例子,模块开机后,上位机会收到如下信息,其中0x49是英文字母”I”的ASCII码:
然后我们发送AT指令,即可把模块的波特率同步成我们上位机的波特率(能同步成功的波特率是特定的几个:1200、2400、4800、9600、19200、38400、57600、115200)同步好后,会出现以下界面,返回“OK”,自适应下同步出来的波特率,在关机后就失效,下次启动还是自适应波特率。
1.2确定波特率
当SIM900A模块处于确定波特率下,模块开机后,若上位机在正确的波特率下,那么就会收到如下的信息,其中“RDY”代表模块启动成功,可以接收AT指令,“+CREG: 1”代表SIM卡注册网络成功。
SIM900A AT Command Manual:
2.GPRS心跳包
GPRS连上TCP后,若长期不发送数据,会发生连接在但不能发数据的情况。这是运营商为了保护网络资源而设定的。我们需要定时发生数据包以维持连接一直可用,这个数据包也叫做心跳包。心跳包的间隔随着地区运营商不同而不同,可根据实验情况确定,网络繁忙地区一般为几分钟。当SIM发送心跳包或者其他数据,服务器没有回应的时候,我们不需要继续等待数据,认为这次的连接已失效,主动断开连接,转入重连程序。
系统有这么一个徐需求:服务器决定SIM900A何时上传数据,上传什么数据,由于服务器不能主动去连接SIM900A,且SIM900A是运营商的内网,服务器是外网,要实现这样的需求,有两个方案:
1.SIM900A一直连接TCP,用心跳包维持;
2.SIM900A平时与服务器是断开连接的,要连接时,服务器发送短信,SIM900A然后连接TCP。
我使用的是方案1,用定时中断。不一定是SIM向服务器发送心跳包,服务器定时向SIM发送数据也是可以维持的。
心跳包的作用可以不仅仅是维持连接,我们可以在心跳包里附加一点有价值的状态信息等。
在我调试这个模块的时候,经常连接不上,后来发现是信号的问题,信号低于10,很难通信成功。
3.网络时间同步
如果SIM模块是带有网络时间功能的,就可以不使用MCU的RTC了。授时服务器可以多准备几个,防止某一个服务器挂掉。另外,还可以根据ntp协议,做一个自己的授时服务器。
【Reference】
心跳包:
http://bbs.eeworld.com.cn/thread-427882-1-1.html
http://www.amobbs.com/forum.php?mod=viewthread&tid=5582370
http://www.amobbs.com/forum.php?mod=viewthread&tid=5544395
网络时间同步:
http://www.amobbs.com/thread-5589688-1-1.html
- 无线路灯项目——SIM900A调试
- 无线路灯项目——SX1278调试
- 无线路灯项目——STM32L151概述
- 无线路灯项目——STM32L低功耗相关
- SIM900A GPRS调试笔记
- 网易——奖学金、路灯
- SIM900A基站定位调试笔记
- 关路灯——power 解题报告
- 每天一个小题目——路灯
- 华为编程大赛—路灯统计
- 赛码网—在线编程(四)路灯
- Android应用程序调式——无线调试
- Android——真机无线调试
- sim900A透传调试及问题解决
- sim900A透传调试及问题解决
- 路灯
- 路灯
- 路灯
- QT 模拟鼠标点击的例子
- 在MVC使用Log4Net
- linux 查看elf相关命令
- Oracle 设定允许访问的IP地址
- 简单c语言习题:矩阵求乘积
- 无线路灯项目——SIM900A调试
- 山东省第四届蓝桥杯 ///题目标题: 高斯日记//c/c++组
- opencv CvArr、Mat、CvMat、IplImage、BYTE之间的转换
- 全局获取Context的方法
- python build-in functions
- 【C++ STL应用与实现】17: 如何使用迭代器辅助函数
- IOS-Label
- 重置 Mac 上的系统管理控制器 (SMC)
- HDU 5603 the soldier of love (线段树)