STM32 + ESP8266 通过固件方式实现MQTT 连接服务器

本文详细介绍了如何烧录ESP8266以支持MQTTAT指令,以及如何在STM32上通过AT指令配置ESP8266作为客户端连接MQTT服务器,包括MQTT服务器设置、连接过程和在QT中使用MQTT库进行数据接收与显示的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 ESP8266 烧录固件

1.1 烧录

ESP8266中原本的固件是没有MQTT相关的AT指令的,需要通过烧录固件使其支持对应的AT指令。
参考链接:https://blog.csdn.net/qq_43819071/article/details/132111194

2.2 烧录过程中需要注意的问题

烧录之前确保ESP8266的各个引脚必须连接正确,I0必须接地。
3.3V/5V ------ 3.3V/5V
​RX ------ TX
​TX ------ RX
GND ------ GND
I0 ------ GND
在烧录成功之后,拔掉I0接口,使其进去工作模式,通过串口工具测试MQTT的AT指令能否正确连接。

二、STM32连接MQTT服务器

2.1 通过AT指令将ESP8266 设置为客户端

先将STM32 与ESP8266连接的串口初始化。我这里采用的是UART4,连接到的MQTT服务器是巴法云,官网:https://cloud.bemfa.com/,注册后即可正常连接
代码如下:
void Configure_ESP8266_MQTT(void)
{
   
   
    rst_wifi();
    delay_ms(500);
    ESP8266_Clear();

//1 AT
    while(ESP8266_SendCmd("AT\r\n\r", "OK", 200))
    {
   
   
        printf("AT  Failed\r\n");
    }

    //2 将Wi-Fi模块设置为Station(STA)模式
    while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK", 50))
    {
   
   
        printf("STA Failed\r\n");
    }

    //3 连接WIFI的用户名和密码
    while(ESP8266_SendCmd("AT+CWJAP=\"ChinaNet-NrgD\",\"rnq265xq\"\r\n", "OK", 500))
    {
   
   
        printf("WIFI Failed\r\n");
    }

    //4 设置MQTT相关属性
    while(ESP8266_SendCmd("AT+MQTTUSERCFG=0,1,\"clientid\",\"username\",\"password\",0,0,\"\"\r\n", "OK", 500))
    {
   
   
        printf("MQTT Failed\r\n");
    }

    //5 连接MQTT的ip
    while(ESP8266_SendCmd("AT+MQTTCONN=0,\"bemfa.com\",9501,1\r\n", "OK",</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值