首先,需要安装MQTT库并添加到Arduino IDE中。可以使用PubSubClient库,它提供了MQTT客户端功能。

步骤1:包含所需的库文件

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

步骤2:设置WiFi连接信息

const char* ssid = "YourWiFiSSID";
const char* password = "YourWiFiPassword";

步骤3:设置MQTT服务器信息

const char* mqtt_server = "mqtt_server_ip";
const int mqtt_port = 1883;
const char* mqtt_user = "YourMQTTUsername";
const char* mqtt_password = "YourMQTTPassword";

步骤4:设置DHT11引脚

#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

步骤5:连接WiFi和MQTT服务器

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  //连接WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
  }

  //连接MQTT服务器
  client.setServer(mqtt_server, mqtt_port);
  while (!client.connected()) {
    if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
      Serial.println("connected to MQTT server");
    } else {
      delay(1000);
    }
  }

  //启动DHT11传感器
  dht.begin();
}

步骤6:发送DHT11数据到MQTT服务器

void loop() {
  //读取温度和湿度
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  //将数据转换为字符串
  String temperature_str = String(temperature, 1);
  String humidity_str = String(humidity, 1);

  //发布MQTT消息
  client.publish("topic/temperature", temperature_str.c_str());
  client.publish("topic/humidity", humidity_str.c_str());

  //延迟一段时间
  delay(10000);
}

以上就是通过MQTT协议发送DHT11温度和湿度数据的代码实现。可以根据自己的需要修改MQTT服务器信息和传感器引脚等信息。

Arduino IDE编写esp8266通过mqtt协议发送DHT11温度和湿度数据

原文地址: https://www.cveoy.top/t/topic/bd2V 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录