https://www.cnblogs.com/yangfengwu/p/11482905.html
上一节测试的是Wi-Fi 这节测试 GPRS
看名字就知道了,简单的说 就是 单片机使用AT指令控制模块实现MQTT通信控制
这节是 STM32+GPRS(AT指令)实现MQTT通信控制:
一,下载STM32程序
1,方式一,串口下载(其他下载方式在最后补充)
①调整拨动开关位置 → 短接BOOT0和3.3V → 复位STM32
②打开下载软件,下载程序
选择对应的串口
去掉短接,复位下单片机
①手机卡
②天线
③调整拨动开关,让STM32和GPRS通信
打开手机APP
下载APP(该APP购买到安全篇即可获取,只有学到微信小程序篇才能看得懂源码,涉及的知识点多一些)
扫码下载
注意:只有这样的时候说明MQTT通信正常 (刚刚才知道可以插入视频....)
然后
最后说一下程序
首先看一下官方的文档
自行查看
整体代码和上一节一样,有几个地方说一下
实际上是为了缩短发送指令的时间,只要判断接收到相应的数据了,就立刻发送下一条指令
但是,为了保险起见,中间有500ms延时
再者,主函数里面用了一个串口回调函数
如果想知道回调函数怎么写的,可以看这篇 https://www.cnblogs.com/yangfengwu/p/11112014.html
获取IMEI,我感觉这样获取IMEI比较放心.
注:这个代码没有做上,断线重连呢!
其实用GPRS实现MQTT有个矛盾的地方.
MQTT是靠心跳包判断设备在不在线,心跳包数据是 C0,00
但是呢,对于GPRS来讲,心跳包时间太短的话...流量需要的多
太长的话又不可以及时的知道掉没掉线....