使用 ESP8266 通过 MQTT 传输 DHT11 传感器数据

本教程将引导你使用 ESP8266 和 MQTT 协议将 DHT11 传感器的温度和湿度数据传输到 MQTT 服务器。

步骤如下:

  1. 确保你已经安装了 MQTT 库,例如 PubSubClient。
  2. 连接 ESP8266 和 DHT11。
  3. 在代码中包含必要的库和声明变量。
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

const char* ssid = 'your_SSID';
const char* password = 'your_PASSWORD';
const char* mqtt_server = 'your_MQTT_SERVER';
const char* mqtt_username = 'your_MQTT_USERNAME';
const char* mqtt_password = 'your_MQTT_PASSWORD';
const char* mqtt_topic = 'your_MQTT_TOPIC';

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

WiFiClient espClient;
PubSubClient client(espClient);

float temperature;
float humidity;
  1. 在 setup() 中连接 WiFi,并连接 MQTT 服务器。
void setup() {
  Serial.begin(9600);
  dht.begin();
  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);

  while (!client.connected()) {
    Serial.println('Connecting to MQTT...');
    if (client.connect('ESP8266Client', mqtt_username, mqtt_password)) {
      Serial.println('Connected to MQTT');
    } else {
      Serial.print('Failed with state ');
      Serial.print(client.state());
      delay(2000);
    }
  }
}
  1. 在 loop() 中读取 DHT11 的温度和湿度,并将它们发布到 MQTT 服务器中。
void loop() {
  humidity = dht.readHumidity();
  temperature = dht.readTemperature();

  if (isnan(humidity) || isnan(temperature)) {
    Serial.println('Failed to read from DHT sensor');
    return;
  }

  Serial.print('Humidity: ');
  Serial.print(humidity);
  Serial.print(' %	Temperature: ');
  Serial.print(temperature);
  Serial.println(' *C');

  String temperatureString = String(temperature);
  String humidityString = String(humidity);

  client.publish(mqtt_topic, (temperatureString + ',' + humidityString).c_str());
  delay(5000);
}
  1. 现在,你可以通过订阅你的 MQTT 主题来接收 ESP8266 发送的 DHT11 数据了。

注意:

  • 请将代码中的占位符替换为你自己的网络配置和 MQTT 服务器信息。
  • 确保你已经正确安装了所需的库并连接了 DHT11 传感器。
  • 你可以使用 MQTT 客户端工具(如 MQTT.fx)来订阅你的 MQTT 主题并查看 ESP8266 发送的数据。
ESP8266 使用 MQTT 传输 DHT11 传感器数据

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

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