esp8266at指令开发(基于stc89c52单片机):关于上一节mqtt底层封包解包源码使用说明

yangfengwu yangfengwu     2023-04-11     216

关键词:

 

 

 

前言

  请先看这一节了解一下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+stc15基于at指令通过tcp通讯协议获取时间

ESP8266+STC15基于AT指令通过TCP通讯协议获取时间如果纯粹拿32位的ESP8266模块给8位的单片机仅供授时工具使用,有点大材小用了。这里不讨论这个拿esp8266来单独开发使用。本案例只是通过学习esp8266AT指令功能来验证方案的可行性。 查看详情

esp8266+stc15基于at指令通过tcp通讯协议控制io状态

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

esp8266|esp8266入门教程-at指令视频教程(基于esp-01s/esp8266-01s)(代码片段)

...电脑端手机端ESP-01S对接到小程序控制103上的硬件ESP8266AT指令视频教程(基于ESP-01S)前言这个课程的目的是让大家学会使用ESP8266AT指令,课程安排包括&#x 查看详情

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

首先你有这样的8266这种8266自身带2个按键和烧录芯片方便调试,综合性价比较高。有一个51单片机或者其他芯片都行。还有就是需要这种人体红外探测模块和led灯有了这2个芯片我们开始吧!1.先看一段视频效果演示,... 查看详情

stc15系列学习(代码片段)

...周期=2*时钟周期机器周期=6状态周期=12时钟周期指令周期:执行一条指令所需的全部时间,不同的指令需要的时间不同。单周期指令:执行指 查看详情

十二高级篇wifi模块-esp8266(代码片段)

WIFI模块-ESP8266AT指令集AT指令使用示例ESP8266单连接:ESP8266透传ESP8266驱动代码:WiFi:芯片是ESP8266(32bit的单片机芯片),2.4GHz的无线射频模块,内部集成了TCP/UDP的协议栈需要通过串口为ESP8266发送AT指令&... 查看详情

基于micropython结合esp8266模块实现tcp通信(at指令版)(代码片段)

...1个microUSB数据线1条杜邦线若干本实验采用TPYBoardv102串口AT指令的方式,去连接控制ESP8266模块(型号ESP-01)。第一步:烧写 查看详情

基于stc89c52单片机的语音温度计全套解决方案

基于STC89C52单片机的语音温度计全套解决方案设计中采用DS18B20温度传感器来实时采集温度,通过STC89C52单片机的控制,再结合ISD4004语音芯片、LCD1602显示模块,整个设计实现了对温度实时测量显示并且进行语音播报,智能监控0临... 查看详情

esp8266esp8266通讯使用的at指令

一、AT指令介绍  AT(Attention),AT指令一般应用于终端设备和PC应用之间建立连接。通过AT指令来控制。二、常用AT指令  AT指令主要分为:基础AT指令,WIFI功能AT指令,TCP/IP工具箱AT指令  每条指令分为四种:测试指令AT+<... 查看详情

基于stc89c52的四轮小车电机控制函数

51单片机是大多数同学入门单片机的首选,在现今的高校也是十分地普及,而智能小车也是一个很有意思的东西。废话不多说,直接上代码:.C文件部分/*********************************************\\*          _ooOoo_  ... 查看详情

esp8266tcp传输at指令顺序

1    ret=ESP8266_Cmd("AT+RST","OK","ready",2500);//复位2ret=ESP8266_Cmd("AT","OK",NULL,500);//测试AT启动3ret=ESP8266_Cmd("AT+CWMODE=3","OK",NULL,1500);//选择WIFI应用模式softAP+station4//ret=ESP8266_Cmd("AT+CWLAP" 查看详情

stc12c5a60s2的单片机与at89c51单片机有啥区别论文上面要用

...用atmel高密度非易失性存储器制造技术,与工业标准mcs-51指令集和输出引脚兼容。ATMEL的AT89C51是一款高效的微控制器,AT89C051是AT89C051的简化版,它将多功能8位CPU和闪存集成在一块芯片中。AT89C51单片机为许多嵌入式控制系统提供... 查看详情

esp8266at指令

...传模式下断电后,下次上电仍会进入透传模式,不响应AT指令,很容易误以为模块坏了。如果 查看详情

esp8266配置透传模式(at指令)(代码片段)

ESP8266使用AT指令的前提是模块已烧录AT固件,固件可以在官网下载,固件烧录这里也直接略过,可以参考其他博文首先,用AT指令将ESP8266恢复出厂设置(因为之前配置了什么也不确定,直接恢复出厂)AT... 查看详情

基于stm32的esp8266天气时钟---------at指令获取天气数据(代码片段)

前言:很久以前就想着能够做一个可以显示天气还有时间的小东西,刚好最近有空,研究了一下,发现并没有之前想象的那么难,网上也有很多资料,不过大部分并没有一步一步详细介绍,故把自己的... 查看详情

无线模块推荐一下。求stc89c52单片机与单片机之间串口无线收发程序?

参考技术A你好!1、2.4G无线模块2、Zigbee无线模块3、WIFI无线模块关键还要看做什么用途,无线通信距离需要多远 参考技术BESP8266. 查看详情

stc89c52实现万年历(代码片段)

STC89c52实现万年历文章目录STC89c52实现万年历1、原理图2、实验操作说明3、代码1、原理图2、实验操作说明模式切换键对应实验板K5加按钮对应实验板K6减按钮对应实验板K7立刻跳出调整模式按钮对应实验板K83、代码 查看详情

stc89c52实现万年历(代码片段)

STC89c52实现万年历文章目录STC89c52实现万年历1、原理图2、实验操作说明3、代码1、原理图2、实验操作说明模式切换键对应实验板K5加按钮对应实验板K6减按钮对应实验板K7立刻跳出调整模式按钮对应实验板K83、代码 查看详情