ESP32配置mqtt arduino

这篇具有很好参考价值的文章主要介绍了ESP32配置mqtt arduino。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ESP32配置MQTT

明确流程
1. 需要在arduino上使用mqtt需要使用库 " PubSubClient "。
2. 使ESP32连接到WiFi网络
3. 连接mqtt代理
4. 订阅主题
5. 发布信息

安装库:

打开arduino选择“工具”里的管理库,在管理库里搜索:Pub SubClient,安装完成后即可使用该库。
ESP32配置mqtt arduino

在这里先贴上代码,需要可直接copy
#include <WiFi.h>
#include <PubSubClient.h>

const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* mqtt_server = "your_MQTT_SERVER";

WiFiClient espClient;
PubSubClient client(espClient);

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    if (client.connect("ESP32Client")) {
      Serial.println("connected");
      client.subscribe("test/topic1");
      client.subscribe("test/topic2");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
}
想继续了解的往下看(部分代码与上述不一致)

ESP32连接到WiFi网络:确定连接WiFi的SSID和password,只需更改示例代码的ssid和password
示例代码

#include <WiFi.h>

const char* ssid = "SSID";
const char* password = "PASSWORD";

void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}

void loop() {
}

连接mqtt

先创建一个mqtt示例

WiFiClient espClient;
PubSubClient client(espClient);

"WiFiClient"是一个用于建立 TCP 连接的类,而 PubSubClient是一个 MQTT 客户端库,用于发布和接收 MQTT 消息。
在这里,WiFiClient 用于建立与 MQTT 服务器的连接,而 PubSubClient用于发布和接收 MQTT 消息。

确定mqtt服务器

client.setServer(mqtt_server, 1883);

mqtt连接并使用回调 – 需要账号密码类型

const char* mqtt_server = "";    //改自己的
const char* mqtt_username = "";
const char* mqtt_password = "";

while (!client.connected()) {
    Serial.println("Connecting to MQTT server...");
    if (client.connect("ESP32", mqtt_username, mqtt_password)) {
      Serial.println("Connected to MQTT server");
      client.subscribe("topic1");
      client.subscribe("topic2");
    } else {
      Serial.print("Failed to connect to MQTT server, rc=");
      Serial.print(client.state());
      Serial.println(" retrying in 5 seconds");
      delay(500);
    }
  }

参照下列填写连接函数参数

boolean connect (clientID, [username, password], [willTopic, willQoS, willRetain, willMessage], [cleanSession])
Parameters
clientID const char[] - the client ID to use when connecting to the server
Credentials - (optional)
username const char[] - the username to use. If NULL, no username or password is used
password const char[] - the password to use. If NULL, no password is used
Will - (optional)
willTopic const char[] - the topic to be used by the will message
willQoS int: 0,1 or 2 - the quality of service to be used by the will message
willRetain boolean - whether the will should be published with the retain flag
willMessage const char[] - the payload of the will message
cleanSession boolean (optional) - whether to connect clean-session or not

回调函数讲解

void callback(char* topic, byte* payload, unsigned int length)

callback函数是一种函数指针,它指向一个函数。当事件发生时,系统会自动调用这个函数。在Arduino中,callback函数通常用于处理中断事件。例如,当一个按钮被按下时,系统会自动调用一个callback函数来处理这个事件。
在代码中,callback函数被定义为一个带有三个参数的函数:char* topicbyte* payloadunsigned int length。当一个消息到达时,系统会自动调用这个函数,并将消息的主题、有效载荷和长度作为参数传递给它。

如何发布信息?
首先确认需要向那个主题发布信息、信息质量和信息体
例如下列这个简单例子

void loop() {
char message[50];
sprintf(message, "Hello from ESP32");
client.publish("test_topic", message);
delay(5000);
}

使用的前提是mqtt成功连接

提问:如何订阅两个主题并且区分接收到的mqtt信息属于那个主题?

非常简单即可做到!文章来源地址https://www.toymoban.com/news/detail-475771.html

到了这里,关于ESP32配置mqtt arduino的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 零基础STM32+ESP12F+MQTT连接阿里云服务器完整流程(三、STM32通过代码连接阿里云服务器)

    要想实现通过代码实现STM32连入阿里云服务器,要首先实现使用AT指令通过串口连接阿里云,大家可以参考我之前的两篇文章,链接如下 链接: 零基础STM32+ESP12F+MQTT连接阿里云服务器完整流程(一、给ESP12F烧写AT/MQTT固件) 链接: 零基础STM32+ESP12F+MQTT连接阿里云服务器完整流程(

    2024年02月03日
    浏览(73)
  • ESP8266+STM32+MQTT发送数据到阿里云服务器(三、配置ESP8266模块并测试连接)

    1、固件烧录器 2、固件 3、串口工具 4、ESP866模块 5、USB转TTL模块 (以上软件工具文末分享的链接有,硬件请淘宝自行购买) 硬件如下图: 1、按照下面对照关系进行接线 USB转TTL ESP8266 3.3V 3V3 GND GND RX TX TX RX IO0 GND 2、打开固件烧录工具图标 3、点击“ OK ” 4、在出现的界面中,

    2024年03月23日
    浏览(52)
  • 【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第3节-云产品流转配置

    本节目标: 本节目标是进行云产品流转配置为后面实际的手机APP的接入做铺垫。云产品流转配置的目的是为了后面能够让后面实际做出来的手机APP可以控制STM32/MCU,STM32/MCU可以将数据发给实际的手机APP。 配置步骤主要分为三步: 1.创建数据源;2.创建数据目的;3.创建解析器

    2024年02月03日
    浏览(64)
  • 【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第1节-阿里云配置+MQTT.fx模拟与使用AT命令发布订阅消息

    🌟博主领域:嵌入式领域人工智能软件开发 本节目标: 通过MQTT.fx模拟连接或通过串口连接ESP8266发送AT命令,实现阿里云物联网平台发送数据同时接收数据,IOT studio界面显示数据。具体来说:使用ESP8266 ESP-01来连接网络,获取设备数据发送到阿里云物联网平台并显示且oled显

    2024年02月03日
    浏览(62)
  • Arduino ESP32开发环境搭建入门教程,esp32的arduino开发环境搭建教程,arduino导入eps32开发插件

    从官网下载 Arduino IDE 软件并安装。下载链接:Software | Arduino 网盘链接:链接:https://pan.baidu.com/s/1ZuSbo1BPy8XyyXzfl4KNzg?pwd=f8yd 提取码:f8yd 1、找到Arduino IDE安装目录,打开hardware文件夹。 2、在hardware文件夹中创建一个espressif文件夹。 3、将解压出的文件夹移动到espressif文件夹中,

    2024年02月13日
    浏览(56)
  • Arduino ESP32

    Arduino官网 1.下载Arduino IDE=SOFTWARE页面下载所需适配的操作系统(Windows, Linux, macOS)等; 其中Windows版本MSI installer是需要安装的。zip的解压即可运行不需要安装。 2.Arduino IDE中添加ESP32开发板软件包数据: Arduino IDE:文件首选项附加开发板管理器网址 中加入Arduino core for esp32的地

    2024年02月15日
    浏览(57)
  • ESP32 模拟键盘的简单操作 (ESP32 for Arduino)

    本来是以前做过的ESP32项目,但是想拿来用在别的项目上时发现找不到了。所以重新写一下这个项目,记录一下。 首先说明 :使用ArduinoIDE、模块型号为esp32-wroom-32。 库文件链接: 期间发现了好几个库,但是这个库选择的人比较多,就是用这个库。 Arduino 也有相类似的库,介

    2024年02月06日
    浏览(51)
  • Arduino离线安装esp32/esp8266

    使用本教程所示的安装方法,双击安装包的傻瓜式操作,不用进入文件夹修改,不用添加网站地址,免去网络带来的烦恼。安装完成后直接使用。 官网地址:Software | Arduino 打开链接后如图  点击红色框内以后跳转到此界面 再次选择红框后下载 打开安装包一直下一步就好 打

    2023年04月13日
    浏览(49)
  • Arduino ESP32的串口

    在Arduino的核心中有三个串口,分别是Serial,Serial1,和Serial2. 当然ESP32也可以使用软串口。但硬件串口更稳健(我这样理解)。但Serial1这个串口不能使用,因为端口GPIO6 ~ GPIO11都用到了Flash。那如何使用你的Serial1串口哪?可以通过改变串口1的rxPin和txPin的方法,具体如下。 在

    2024年02月11日
    浏览(37)
  • ESP32-Touch(Arduino)

    Touch 传感器是一种外围设备,具有内部振荡器电路,可在固定时间段内测量相应GPIO引脚上的充电/放电频率。 因此,这些触摸传感器也被称为电容式传感器。例如,如果您触摸这些引脚中的任何一个,手指电荷将改变这个周期数, 通过更改连接到触摸传感器的 RC 电路。 Tou

    2024年01月16日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包