【原创连载】+和土匪一起玩GPRS模块
本帖最后由 我是土匪 于 2016-7-19 14:39 编辑随着物联网技术的普及,GPRS模块使用越来越广泛,从工业设备远程监控到智慧农业,从智能家居到电力集抄,从智能穿戴到物流运输,GPRS应用在众多行业都能找到踪影,发挥作用,恰好二姨家做连载活动,一时心血来潮,利用工作之余策划连载。
这个连载并不是说我本人对GPRS多熟、玩的多好,只是抛砖引玉,和大家一起来学习一下GPRS,一起迎接物联网应用大潮。
模块选择目前主流的SIMCOM产品,比如SIM900A,SIM800结合STM32处理器.
分主题的方式,比如开关机、电话、短信、TCPIP、HTTP、DTMF、FTP等等。请大家出谋划策,一起学习。
因为是工作之余,进度不会很快,但会**,请谅解,请支持。
目录(更新中):
第一章GPRS开、关机
第二章浅谈AT
第三章AT架构浅谈
第四章DTMF实现远程开门第五章 短信
第六章 TCPIP数据连接第七章 原理图
第八章 PCB
搬个小板凳听课了。能否选华为的GSM模块啊,这种量大又便宜,好找。 lfjwfm 发表于 2015-8-20 19:02
搬个小板凳听课了。能否选华为的GSM模块啊,这种量大又便宜,好找。
选择SIMCOM是因为他们的模块出货量据说世界第二,其二本人更熟悉一些。
不过可以考虑硬件上,单片机作为底板,GPRS模块作为小板,做成模块和底板直插。
代码角度,模块的差别主要在于非标准的AT,操作流程基本差别不大。如果时间和精力允许,移植代码用其他家模块试试。
搬个小板凳听课了,虚心求教,哈哈 关注一下。
本帖最后由 lijunlinv 于 2015-9-7 09:22 编辑
楼主啊,更新的太慢了! 本帖最后由 我是土匪 于 2015-10-10 14:17 编辑
敲门篇:
第一章开、关机。
也许你会觉得GPRS开机很简单,单独来讲有点小题大做,那是你运气好,没有掉进这个坑。
下面步入正题,看看土匪有没有危言耸听。
本帖最后由 我是土匪 于 2015-8-24 17:53 编辑
1、为什么要开机?
GPRS模块不同于其它模块如:433M等上电后稍做延时就能工作,GPRS模块必须要对其开机,才能对其进行操作,就像手机。
2、如何开机?
先看看simcom的硬件手册是如何描述开机的:
SIM900A的两种开机方式:
使用PWRKEY引脚
使用PWRKEY引脚和PWRKEY_OUT引脚
我们这里学习使用PWRKEY 引脚开启模块(开机)
用户通过拉低PWRKEY 信号至少1秒然后释放来开机。此引脚已在模块内部上拉到3V。推荐电路如下图:
图1:使用PWRKEY驱动电路开机
图 2:使用PWRKEY按键开机
下图是开机时序说明:
开机之前要确保模块已经供电,个人认为开机流程如下:
3、如何判断开机成功?
模块既然开机,就要知道动作成功或失败,正确判断开机成功与否至关重要。
常见判断开机成功的几种方法:
人眼看,如果网络灯闪烁,一定开机成功。
串口监控,如果开机模块会通过串口主动上报RDY(只有在固定波特率的情况下才会上报)
AT方式,发送“AT\r\n”,如果立即返回“OK\r\n”,则开机成功
Status引脚监控,模块成功开机,该引脚输出高电平,否则低电平。
个人喜欢AT方式,通用,且能判断MCU和GPRS串口的通信情况。
本帖最后由 我是土匪 于 2015-8-24 17:58 编辑
4、如何关机?
关机不能粗暴的断电,虽然干净利索,不过容易对模块系统造成伤害,有可能导致模块内部文件系统崩溃,如同用扣掉手机电池的方法关机一个道理。
关机和开机时序几乎相同,按照simcom手册描述如下:
下面是SIM900A的几种关机方法:
使用PWRKEY引脚关机
使用PWRKEY引脚和 PWRKEY_OUT 引脚关机
使用AT命令关机
高压或者低压自动关机
高温或者低温自动关机
具体操作官方手册有详细描述,不再重复。
关机成功串口会收到,NORMAL POWER DOWN
如果要断电,请延时5秒(实验测试有些模块接近5秒status电压到0)。
即使没有输出NORMAL POWER DOWN 或STATUS输出仍高电平(排除程序问题),最终也要断电。
如果本次关机不断电,就要另作处理:
或:
5、如何判断关机成功
收到,NORMAL POWER DOWN,status引脚电平为0
本帖最后由 我是土匪 于 2015-8-24 18:05 编辑
6、如何主动控制重启?
复位引脚。听说SIM900该引脚不足够可靠。
AT命令:AT+CFUN=1,1,前提模块没有死机。
7、注意事项:
POWERKEY通过下拉电阻接地:
有很多人不用单片机控制POWERKEY引脚,而是直接用POWERKEY引脚一个下拉电阻接地,只要模块上电就会自动开机。
这种方法简单,实用,不过局限性。
如果你希望模块关机,如何控制?
直接断电还是用AT+CPOWD=1?
如果电压或温度异常,模块自动关机,会因为POWERKEY接地导致模块2分钟后自动重启,这样模块会反复重启。SIM800和SIM900均测试过,其他模块没做过测试。
模块开机和关机都有一定概率会失败,有些低功耗设备,需要频繁开关机时对这个性能尤为重视。而开机和关机的时序是相同的,如果弄反意味着开关机时序反了。
解决办法:结合status引脚状态判断模块当前的状态,结合开关机电源控制尤佳,毕竟模块产生的漏电流对低功耗设备而言也是不小的耗电。
关于串口串电,这个问题很隐蔽,概率很低,但很要命,是个定时炸*。
所谓的串口串电,是模块在开机之前(切断模块电源的方式下),在模块的电源引脚上也能检测到1.8V左右或者更高的电平?这个电压来自哪?串口!某公司量产产品出现该问题,千分之几的问题,随机出现,这是很要命的问题,花费大量人力、物力最终定位到这个问题,教训就是白花花的银子。
这有什么危害?危害就是某些模块在此时无法成功开机?
如何解决?对于单片机工程师而言,软件处理起来已经很容易了。
模块开机和关机都有一定概率会失败,有些低功耗设备,需要频繁开关机时对这个性能尤为重视。而开机和关机的时序是相同的,如果弄反意味着开关机时序反了。
解决办法:结合status引脚状态判断模块当前的状态,结合开关机电源控制尤佳,毕竟模块产生的漏电流对低功耗设备而言也是不小的耗电。
关于串口串电,这个问题很隐蔽,概率很低,但很要命,是个定时炸*。
所谓的串口串电,是模块在开机之前(切断模块电源的方式下),在模块的电源引脚上也能检测到1.8V左右或者更高的电平?这个电压来自哪?串口!
这有什么危害?危害就是某些模块在此时无法成功开机?
如何解决?对于单片机工程师而言,软件处理起来已经很容易了。
本帖最后由 我是土匪 于 2015-8-24 18:10 编辑
lijunlinv 发表于 2015-8-24 16:27
楼主啊,更新的太慢了,可否把你的代码分享给我,先学习一下,谢谢啦!
因为工作也很忙,只能抽时间了。边构思,边写文档和代码,写好一部分更新一部分,现场直播,速度快不了,抱歉了。
本帖最后由 我是土匪 于 2015-8-24 18:08 编辑
改天上传开关机部分参考原理图和代码。
和大家一起切磋,有问题随时纠正,技术交流,有交流才有提升。
感谢支持!欢迎交流,欢迎板砖。
整理成文档供下载会不错。 mark 我也来听课了! 持续关注学习 第一页占座, 现在各种只能玩意用到这些的越来越多,不了解就落后了。收藏学习 赞楼主一个,专业、深入。