ESP8266/ESP32构建MQTT协议连接进入EMQX服务器进行服务器指令通讯(客户端控制灯)

一、配置Arduino IDE以及esp8266/esp32环境

Arduino IDE 2.0安装,ESP8266/ESP32环境配置(Win11)_JASON丶LI的博客-CSDN博客https://blog.csdn.net/weixin_61908666/article/details/127828616?spm=1001.2014.3001.5501

二、搭建emqx环境

win11搭建EMQX环境_JASON丶LI的博客-CSDN博客https://blog.csdn.net/weixin_61908666/article/details/127944288?spm=1001.2014.3001.5502

三、点灯测试

输入下列代码上传到开发板(作者用的是ESP8266)

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);

  delay(1000);                      
  digitalWrite(LED_BUILTIN, HIGH);  
  delay(2000);                      
}

看到ESP8266上蓝色的呼吸灯一闪一闪就成功啦!!!

四、代码实现将ESP8266接入服务器并订阅对应信息

const char *ssid = "Jason";  // 输入你的WiFi名称
const char *password = "88888888";  // 输入你的WiFi密码
const char *mqtt_broker = "10.12.3.89";  //输入你的无线局域网适配器IPv4地址
const int mqtt_port = 1883;  //默认为1883

 Win+R打开运行框-->输入cmd-->输入ipconfig-->查找IPv4地址

 ESP8266接入服务器

创建WebSocket客户端

 下发指令

 查看ESP8266接收指令情况

 

源代码:

#include <ESP8266WiFi.h>  //esp8266
#include <PubSubClient.h>
//#include <WiFi.h>  // esp32  

const char *ssid = "Jason";  // 输入你的WiFi名称
const char *password = "88888888";  // 输入你的WiFi密码
const char *mqtt_broker = "10.12.3.89";  //输入你的无线局域网适配器IPv4地址
const int mqtt_port = 1883;  //默认为1883

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(115200); // 频段
  WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.println("Connecting to WiFi..");
    }
    Serial.println("Connected to the WiFi network");
    client.setServer(mqtt_broker, mqtt_port);
    client.setCallback(callback);
        while (!client.connected()) {
        Serial.println("Connecting to public emqx mqtt broker.....");
        if (client.connect("esp8266-client")) {
            Serial.println("Public emqx mqtt broker connected");
        } else {
            Serial.print("failed with state ");
            Serial.print(client.state());
            delay(2000);
        }
    }
    // publish and subscribe
    client.publish("esp8266/test", "hello emqx");
    client.subscribe("Android");
}

void callback(char *topic, byte *payload, unsigned int length) {
  
    Serial.print("Message arrived in topic: ");
    Serial.println(topic);
    Serial.print("Message:");
    String message;
    for (int i = 0; i < length; i++) {
        message = message + (char) payload[i];  // convert *byte to string
    }
    Serial.print(message);
    if (message == "lon") {
            digitalWrite(LED_BUILTIN, LOW);// LED on
      Serial.print(" on ready");
    }
      
    if (message == "loff"){ 
      digitalWrite(LED_BUILTIN, HIGH);// LED off
      Serial.print(" on ready");
      } 
    
    Serial.println();
    Serial.println("-----------------------");
}

void loop() {
  // digitalWrite(LED_BUILTIN, LOW);

  // delay(1000);                      
  // digitalWrite(LED_BUILTIN, HIGH);  
  // delay(2000);
  client.loop();                      
}

本文为作者独立编写

 本BLOG上所有的原创文章未经本人许可,不得用于商业用途及传统媒体。网络媒体转载请注明出处,否则属于侵权行为。

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: 要将STM32与ESP8266连接EMQX,需要遵循以下步骤: 1. 首先,您需要在STM32上安装MQTT客户库,例如MQTT-SN或Paho MQTT。 2. 然后,您需要将ESP8266配置为MQTT客户,并确保它可以连接EMQX代理。 3. 接下来,您需要编写STM32代码来连接ESP8266,并使用MQTT协议EMQX代理通信。 4. 最后,您需要测试连接并确保数据可以在STM32和EMQX之间传输。 需要注意的是,连接EMQX代理需要正确的配置和设置,以确保安全和可靠的通信。您可以参考EMQX文档和社区支持来获取更多信息和帮助。 ### 回答2: STM32是一款常用的嵌入式处理器,而ESP8266则是一款常用的Wi-Fi模块,可以提供网络连接功能。而EMQX则是一款开源的MQTT消息服务器,可以提供MQTT协议的消息传递功能。将这三个模块结合在一起,可以实现STM32通过ESP8266模块连接EMQX消息服务器的功能,并可以实现简单的消息传递。 要实现STM32使用ESP8266连接EMQX,需要先了解MQTT协议的相关知识。MQTT协议是一种轻量级的物联网通信协议,可以实现消息的订阅、发布和分发。ESP8266模块可以通过Wi-Fi连接EMQX服务器,并且使用MQTT协议服务器发送消息或从服务器接收消息。而STM32代码可以使用MQTT库实现协议的相应控制。 具体实现步骤如下: 1. 搭建EMQX服务器,并在MQTT客户中创建一个新的Topic。 2. 将ESP8266连接到Wi-Fi网络,并设置其为MQTT客户。在ESP8266代码中,可以使用MQTT库来实现连接EMQX服务器。 3. STM32需要使用串口通信与ESP8266进行数据通信。可以使用USART或UART来实现这种通信,其中USART可以提供更高的传输速度,并能够同时实现发送和接收数据。 4. 将STM32连接ESP8266,再通过USART或UART实现数据的双向传输。将STM32中的MQTT库与ESP8266的MQTT库结合起来,就可以实现STM32使用ESP8266连接EMQX服务器的功能。 总之,STM32通过ESP8266连接EMQX服务器,需要实现的主要功能包括建立Wi-Fi连接,使用MQTT协议进行通信,实现STM32与ESP8266之间的双向数据传输等。需要对MQTT协议ESP8266的操作和STM32的串口通信有较深入的了解才能实现这一功能。 ### 回答3: stm32是一款广泛应用于嵌入式系统的微控制器,而esp8266是一款高集成度、高性能的Wi-Fi芯片,可用于连接互联网。emqx是一款开源的分布式消息中间件,在物联网领域中得到了广泛的应用。在这篇文章中,我们将探讨如何使用stm32和esp8266mqtt连接emqx。 首先,我们需要准备一些材料。我们需要一块stm32开发板和一块esp8266无线模块,以及相应的连接电缆。我们还需要在计算机上安装keilMDK开发环境和相关的驱动程序。 接下来,我们需要在开发板上连接esp8266模块。我们可以使用UART串口或SPI接口来进行连接。如果使用UART串口,我们需要连接GND、TX和RX引脚。如果使用SPI接口,我们需要连接GPIO引脚和SPI接口。可以根据不同的开发板和esp8266模块来进行调整。 一旦我们成功地将stm32和esp8266连接起来,我们就可以开始编程了。我们可以使用keilMDK环境和相应的库文件来实现这个过程。在代码中,我们需要封装mqtt连接指令,以实现与emqx连接。我们还需要将mqtt协议的实现代码加入到我们的程序中。 最后,在我们的代码中添加相应的数据包并发送到emqx服务器,以与其他设备进行通信。我们可以在emqx中配置相应的订阅和发布主题,确保我们的设备能够正确地接收和发送消息。 总之,使用stm32和esp8266mqtt连接emqx可以帮助我们实现设备之间的通信,提高物联网系统的整体性能。使用正确的工具和方法,可以使这个过程变得非常简单,让我们能够更好地应对物联网的挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JASON丶LI

作者码力不足了,卑微的求个打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值