以下是一个简单的ArduinoIDE环境下使用ESP8266模块传输DHT11温湿度数据的MQTT代码示例:

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

// WiFi网络设置
const char* ssid = "your_wifi_ssid";
const char* password = "your_wifi_password";

// MQTT服务器设置
const char* mqtt_server = "mqtt_server_address";
const int mqtt_port = 1883;
const char* mqtt_client_id = "ESP8266_DHT11";
const char* mqtt_username = "mqtt_username";
const char* mqtt_password = "mqtt_password";
const char* mqtt_topic = "dht11";

// DHT11设置
#define DHTPIN D1
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

// ESP8266WiFiClient和PubSubClient对象
WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);
  
  // 连接WiFi网络
  Serial.print("Connecting to WiFi...");
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println(" connected");
  
  // 连接MQTT服务器
  client.setServer(mqtt_server, mqtt_port);
  while (!client.connected()) {
    Serial.print("Connecting to MQTT server...");
    if (client.connect(mqtt_client_id, mqtt_username, mqtt_password)) {
      Serial.println(" connected");
    } else {
      Serial.print(" failed, rc=");
      Serial.print(client.state());
      Serial.println(" retrying in 5 seconds");
      delay(5000);
    }
  }

  // 初始化DHT11
  dht.begin();
}

void loop() {
  delay(2000);
  
  // 读取DHT11数据
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();
  
  // 发布MQTT消息
  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Failed to read DHT11 data");
  } else {
    char message[50];
    sprintf(message, "{\"temperature\":%.1f,\"humidity\":%.1f}", temperature, humidity);
    client.publish(mqtt_topic, message);
    Serial.print("Published to MQTT: ");
    Serial.println(message);
  }
}

在代码中,首先需要根据实际情况设置WiFi网络和MQTT服务器的相关参数,然后初始化DHT11传感器和ESP8266WiFiClient、PubSubClient对象。在主循环中,先读取DHT11传感器的温湿度数据,然后将数据转换为JSON格式的字符串,并使用PubSubClient对象发布到MQTT服务器上。最后输出数据到串口以便调试。

ArduinoIDE环境下esp8266使用mqtt协议传输dht11数据代码

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

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