ESP8266 使用 MQTT 传输 DHT11 传感器数据
使用 ESP8266 通过 MQTT 传输 DHT11 传感器数据
本教程将引导你使用 ESP8266 和 MQTT 协议将 DHT11 传感器的温度和湿度数据传输到 MQTT 服务器。
步骤如下:
- 确保你已经安装了 MQTT 库,例如 PubSubClient。
- 连接 ESP8266 和 DHT11。
- 在代码中包含必要的库和声明变量。
#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;
- 在 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);
}
}
}
- 在 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);
}
- 现在,你可以通过订阅你的 MQTT 主题来接收 ESP8266 发送的 DHT11 数据了。
注意:
- 请将代码中的占位符替换为你自己的网络配置和 MQTT 服务器信息。
- 确保你已经正确安装了所需的库并连接了 DHT11 传感器。
- 你可以使用 MQTT 客户端工具(如 MQTT.fx)来订阅你的 MQTT 主题并查看 ESP8266 发送的数据。
原文地址: https://www.cveoy.top/t/topic/mC6O 著作权归作者所有。请勿转载和采集!