STM32+ESP-01s+EMQX实现单片机MQTT协议传输数据上云(二)STM32F103与ESP-01s的Usart通信,实现STM32连接上网上云

这篇具有很好参考价值的文章主要介绍了STM32+ESP-01s+EMQX实现单片机MQTT协议传输数据上云(二)STM32F103与ESP-01s的Usart通信,实现STM32连接上网上云。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

单片机:STM32F103c8t6

WiFi模块:ESP8266-01s

EMQX:自身服务器上搭载emq服务器或者借用emqx window 版本 

USB TO TTL模块:CH340

因为CH340不能给ESP-01s供3.3V的电,所以测试时需要外加供电

基于stm32实现mqtt,stm32,单片机,C,单片机,stm32,嵌入式硬件 基于stm32实现mqtt,stm32,单片机,C,单片机,stm32,嵌入式硬件

        本章中涉及到的技术原理主要为ESP01S wfi模块的AT指令通信,我在上一篇文章给大家提到了ESP01S AT指令的使用,大家可以先通过我的上一篇文章入门。

 STM32+ESP-01s+EMQX实现单片机MQTT协议传输数据上云(一)ESP-01s的AP-MQTT bin文件安装以及指令使用_JASON丶LI的博客-CSDN博客

如果大家嫌我啰嗦,也可以直接去看乐鑫公司AT指令集合,链接我也放下面了

AT 命令集 - ESP32 - — ESP-AT 用户指南 latest 文档 (espressif.com)

一、原理

连接:首先通过STM32的Usart通信给ESP01S(下面简称ESP)模块发送相关指令,开启ESP模块的Station(客户端模式),在进行配网模式,连接进入STM32设定好的WIFI信息,然后定义ESP的MQTT属性,最后连接进入STM32设定好的MQTT服务器。

 发送指令:STM32发送指令到ESP使其向对应topic发送任意QOS等级的Message

接收指令:STM32发送指令到ESP使其订阅定义的topic,在指令接收发送方面,采用Usart接收文本数据包的形式。由于MQTT下发的通知默认格式为 '+' 为开头换行符( '/r/n' )为结尾的,所以如下图所示以 '+' 为数据的接收提取标志位,换行符作为接收标志位。

基于stm32实现mqtt,stm32,单片机,C,单片机,stm32,嵌入式硬件

 二、接线

ESP-01s STM32
TXD RXD
RXD TXD
3.3v 3.3v
GND GND

三、AT指令

STM32 连网+连服务器 AT指令:

//ESP模块初始化
Serial_SendString("AT+RST\r\n");
Delay_s(1);

//ESP模块设置为Station模式
Serial_SendString("AT+CWMODE=1\r\n");
Delay_s(1);

//ESP模块连接进入WIFI(ID:JASON;  PASSWORD:88888888)
Serial_SendString("AT+CWJAP=\"JASON\",\"88888888\"\r\n");
Delay_s(1);

//设定ESP模块MQTT属性(服务器ID:JASON123456car;  ID:JASON;  PASSWORD:123)
Serial_SendString("AT+MQTTUSERCFG=0,1,\"JASON123456car\",\"JASON\",\"123\",0,0,\"\"\r\n");
Delay_s(1);

//ESP模块连接MQTT服务器(服务器域名:123.0.0.1;  服务器端口:1883)
Serial_SendString("AT+MQTTCONN=0,\"127.0.0.1\",1883,0\r\n");
Delay_s(1);

STM32 订阅服务器端口 AT指令:

//ESP订阅TOESP01S端口
Serial_SendString("AT+MQTTSUB=0,\"TOESP01S\",0\r\n");

STM32 发送指令到服务器端口 AT指令:

//不带参:向FROMESP01S端口发送STM_OK信息  消息服务等级QOS为;0
Serial_SendString("AT+MQTTPUB=0,\"FROMESP01S\",\"STM_OK\",0,0\r\n");

//带参:向FROMESP01S端口发送信息i  消息服务等级QOS为;0
printf("AT+MQTTPUB=0,\"FROMESP01S\",\"Num=%d\",0,0\r\n",i)

STM接收订阅的服务器端口的指令信息

if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
        {
            uint8_t RxData = USART_ReceiveData(USART1);
            
            if (RxStare == 0) //状态1
            {
                if (RxData == '+' && Serial_RxFlag == 0)
                {
                    RxStare = 1;
                    pRxPacket = 0;
                }
                
            }
            else if (RxStare == 1) //状态2
            {
                if (RxData == '\r')
                {
                    RxStare =2;
                }
                else
                {
                    Serial_RxPacket[pRxPacket] = RxData;
                    pRxPacket ++;
                }
                
            }
            else if (RxStare == 2) //状态3
            {
                if (RxData == '\n')
                {
                    RxStare = 0;
                    Serial_RxPacket[pRxPacket] = '\0';
                    Serial_RxFlag = 1;
                }
            }
            USART_ClearITPendingBit(USART1, USART_FLAG_RXNE);
        }

四、联网代码

STM32C8T6-learning-project: STM32 project (gitee.com)

点赞后,发表评论后评论区即可领取解压密码,作者24小时冲浪,秒回!

基于stm32实现mqtt,stm32,单片机,C,单片机,stm32,嵌入式硬件

 本文为作者独立编写

 本BLOG上所有的原创文章未经本人许可,不得用于商业用途及传统媒体。网络媒体转载请注明出处,否则属于侵权行为。文章来源地址https://www.toymoban.com/news/detail-579166.html

到了这里,关于STM32+ESP-01s+EMQX实现单片机MQTT协议传输数据上云(二)STM32F103与ESP-01s的Usart通信,实现STM32连接上网上云的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32-01-认识单片机

    单片机是什么? 单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片。 下面是电脑与单片机的对应关系: 单片机的特点? 体积小:5mmx5mm 功耗低:mA级 集成度高:IO、TIM、AD、DA 使用方便:C、Debug 拓展灵活:IIC、SPI、FSMC 单片机有什么用? 仪器仪表:电源、

    2024年02月03日
    浏览(20)
  • 【STM32】单片机启动文件分析 01

    启动文件由汇编语言写成,时单片机上电之后执行的第一个文件。 也就是从上电到mian函数中间的一段过程。 bootloader也可以叫 启动文件 ,每种MCU都有对应的启动文件。 但开发环境往往自动完整地提供了这个启动文件 ,不需要开发人员再行干预启动过程,只需要从main函数开

    2024年01月18日
    浏览(19)
  • 单片机项目分享 单片机(stm32)远程智能宠物喂养系统 - 物联网 esp8266

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(35)
  • 单片机01天---stm32基本信息了解

    下载数据手册 以STM32F407ZG为例 网站:www.st.com,搜索芯片型号,下载“数据手册”使用 数据手册使用 查看芯片型号信息 芯片资源信息 时钟框图 芯片资源表格下方 GPIO口表格 一般位于下图后面的位置 ①工作电压:1.8V – 3.6V,VSS/GND(电源负极0)、VDD/VCC/V3.3(电源正极1),

    2024年02月20日
    浏览(20)
  • ESP32的MQTT AT固件烧录+STM32以ESP32的MQTT AT固件的AT指令连接EMQX下mqtt服务器实现消息订阅和发布

    目录 写在前面 三种方案(利用ESP32连接EMQX下的MQTT) 步骤 ESP32烧录固件并AT指令进行测试。 下载固件  烧录工具下载 烧录固件(选择ESP32)  关于AT 指令与MQTT服务器断开后自动重连MQTT服务器 关于AT指令设置上电自动连接WIFI 关于AT指令设置断开后自动重新连接WIFI STM32对接E

    2023年04月12日
    浏览(17)
  • 物联网实践教程(终章):微信小程序结合OneNET平台MQTT实现51/STM32单片机智能控制与温度等数据实时显示【微信小程序篇】

    本项目教程总共分为四节 1.创建OneNET新版MQTT设备:为微信小程序与单片机通信打基础(微信小程序通信单片机前置任务) 2.ESP8266-01s入门:烧录AT固件与OneNET MQTT通信教程包含MQTT.fx1.7.1教程(微信小程序通信单片机前置任务) 3.物联网实践教程:微信小程序结合OneNET平台MQTT实

    2024年02月03日
    浏览(71)
  • 嵌入式项目分享 单片机(stm32)远程智能宠物喂养系统 - 物联网 esp8266

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月21日
    浏览(27)
  • 单片机设计_语音识别分类智能垃圾桶(STM32 ESP8266 LD3320)

    想要更多项目私wo!!!         离线语音识别识别垃圾种类并且垃圾桶自动翻盖: 说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应,便会将结果通过串口发送到STM32端,STM32端接着会发送打开相应垃圾桶盖的指令,6s后,垃圾桶盖自动关闭。

    2024年02月06日
    浏览(24)
  • 毕业设计 单片机语音识别分类智能垃圾桶(STM32 ESP8266 LD3320)

    离线语音识别识别垃圾种类并且垃圾桶自动翻盖: 说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应,便会将结果通过串口发送到STM32端,STM32端接着会发送打开相应垃圾桶盖的指令,6s后,垃圾桶盖自动关闭。其中翻盖功能是通过STM32端控制舵

    2024年04月26日
    浏览(29)
  • STM32 + ESP32(AT固件 MQTT协议) + MQTTX(桌面终端) + (EMQX消息服务器)

    翻出老物件,搭建一个简单的 IOT 开发环境,也算是废物利用了 ,接下来加传感器。 1. STM32  采集数据:      RTOS。      资源相对比较丰富,可以根据项目需求定制。 2. ESP32  网络传输(AT固件 MQTT协议) :     AT:封装好的接口,扩展性不是那么好,业务简单的话将就可以

    2024年02月08日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包