前言

注:

本程序发送心跳包,发送温湿度,返回控制数据这三个发送是单独的,有可能凑到一起发.

由于本身程序就是复杂性的程序,所以这节程序没有使用中断发送,没有使用环形队列发送,为了避免多条消息可能凑到一起发

ESA2GJK1DH1K基础篇: STM32+GPRS(AT指令版)实现MQTT源码讲解(支持Air202,SIM800)-LMLPHP

如果嫌弃这个延时请自行优化,或者采用自己的方式解决,谢谢支持!

抱歉哈!我首先期望的是大部分人都先要看懂程序,至于其他优化我会提供个思路和源码,大家可以根据自己的情况自行优化.

ESA2GJK1DH1K基础篇: STM32+GPRS(AT指令版)实现MQTT源码讲解(支持Air202,SIM800)-LMLPHP

打开第一节的源码

ESA2GJK1DH1K基础篇: STM32+GPRS(AT指令版)实现MQTT源码讲解(支持Air202,SIM800)-LMLPHP

ESA2GJK1DH1K基础篇: STM32+GPRS(AT指令版)实现MQTT源码讲解(支持Air202,SIM800)-LMLPHP

我只说注意的地方

现在的程序没有硬件复位Air202的地方

大家做项目的时候一定要加个硬件复位Air202的地方

大家做项目的时候一定要加个硬件复位Air202的地方

大家做项目的时候一定要加个硬件复位Air202的地方

但是每次硬件复位GPRS太浪费时间,可以这样加

假设PB2是控制重启的,低电平关机,高电平开机

ESA2GJK1DH1K基础篇: STM32+GPRS(AT指令版)实现MQTT源码讲解(支持Air202,SIM800)-LMLPHP

其它没有什么说的了

还有一点就是,我现在设置的心跳包是3S 一次,如果需要设置的时间太长的话

那么判断掉线就需要点时间了

大家呢,可以看一下资料,看看GPRS回复什么数据就是掉线了

可以在主函数里面

ESA2GJK1DH1K基础篇: STM32+GPRS(AT指令版)实现MQTT源码讲解(支持Air202,SIM800)-LMLPHP

ESA2GJK1DH1K基础篇: STM32+GPRS(AT指令版)实现MQTT源码讲解(支持Air202,SIM800)-LMLPHP

因为GPRS的延迟问题,我设置的心跳包应答超时等待时间为5S

ESA2GJK1DH1K基础篇: STM32+GPRS(AT指令版)实现MQTT源码讲解(支持Air202,SIM800)-LMLPHP

05-17 09:45