ESP8266 AT指令开发(基于STC89C52单片机): 关于上一节MQTT底层封包解包源码使用说明

Posted yangfengwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP8266 AT指令开发(基于STC89C52单片机): 关于上一节MQTT底层封包解包源码使用说明相关的知识,希望对你有一定的参考价值。

 

 

 

前言

  请先看这一节了解一下MQTT

  https://www.cnblogs.com/yangfengwu/p/11762642.html  (了解MQTT)

  如果自己有兴趣可以自己去安装MQTT软件

  然后让自己的设备通过自己的服务器进行通信

  或者根据文章直接连接阿里云物联网平台

  技术图片

 

 

 

说明

  用户看完上面的文章以后,需要明确,MQTT软件就是一个TCP服务器

  然后在TCP服务器的基础上封装了一套协议

  只要是咱的模块可以实现TCP,那么就可以实现连接MQTT

  本人这节的MQTT包底层封装的非常全面,

  用户可根据自己对MQTT的理解合理的运用.

  由于本节的开发板使用的是89C58,其容量受到限制

  故只能提供以消息等级0进行通信的基础例子

  如果想了解封装的更加全面的代码请点击链接

 

  

先说一下程序的流程

  一,配网(控制wifi模块连接上路由器)

  配网采用的SmartConfig

  技术图片

 

 

  SmartConfig流程就是上一节的APP绑定设备的流程

 

  具体流程请看上一节

 

 

 

  模块配网以后便连接上了路由器,那么便可以访问广域网

 

 

 

 

控制模块连接MQTT

  1.请用户自行打开一下函数

  技术图片

 

 

  2.获取了MAC地址

  连接MQTT的Client采用 设备的MAC地址

 

  设备订阅的主题是:user/MAC地址

 

  设备发布的主题是:device/MAC地址

 

  所以获取了MAC地址

 

  技术图片

 

 

 

 

 

  3.连接TCP服务器

  实际上就是连接MQTT服务器,MQTT服务器就是一个TCP

  所以先用TCP连接上

  我使用的是AT+SAVETRANSLINK

  这个指令是直接进入透传模式+自动重连

  单片机通过串口发送的数据,wifi模块接收以后自动发给TCP服务器

  wifi模块从TCP服务器接收的数据直接通过串口发给单片机

  技术图片

 

 

   4.打包MQTT连接指令

  技术图片

 

 

  int mqtt_msg_connect(mqtt_connect_info_t* info,unsigned char **data_ptr,unsigned char* buffer,int buffer_length)

 

  技术图片

 

 

 

  判断是否连接上

  技术图片

 

 

 

  6.订阅主题

  技术图片

 

 

 

  int mqtt_msg_subscribe_topic(unsigned char* topic, int qos,unsigned char **data_ptr,unsigned char* buffer,int buffer_length)

 

  技术图片

 

 

 

 

 

 

  判断是否订阅成功

  技术图片

 

 

 

  7.发布消息

  技术图片

 

 

   

  技术图片

 

 

  int mqtt_msg_publish(unsigned char* topic,unsigned  char* date, int data_length, int qos, int retain,unsigned  char **data_ptr,unsigned char* buffer,int buffer_length)

  技术图片

 

 

 

 

 

   8.接收处理消息

  技术图片

 

 

  技术图片

 

 

 

 

  9.发送心跳包

 

  技术图片

 

 

  技术图片

 

 

 

 

 

 

 

 

结语

  这是最底层的MQTT封包

  用户可根据自己的单片机容量合理的再次封装

  技术图片

 

 

 

  

  

以上是关于ESP8266 AT指令开发(基于STC89C52单片机): 关于上一节MQTT底层封包解包源码使用说明的主要内容,如果未能解决你的问题,请参考以下文章

ESP8266 + STC15基于AT指令通过TCP通讯协议获取时间

ESP8266 + STC15基于AT指令通过TCP通讯协议控制IO状态

实现手机app和微信小程序远程控制加人体探测自动化控制51单片机打开流水灯(ESP8266 STC89C52RC http请求转串口通信系统)

求stc89C52型单片机与DS18B20传感器和MQ-2烟雾传感器电路连接图以及原理

ESP8266|ESP8266入门教程-AT指令视频教程(基于ESP-01S/ESP8266-01S)

STC15系列学习