Подключение датчика DHT11/DHT22 к ESP8266: чтение температуры и влажности
Датчик DHT к ESP8266 — простой способ измерять температуру и влажность. Подключение по трём проводам, данные выводятся в Serial Monitor. Проект — основа для метеостанций, умного дома, логгеров. Используем библиотеку DHT sensor library. DHT11 бюджетный (±2°C), DHT22 точнее (±0.5°C). Сборка за минуты, работает стабильно.
Возможности
Чтение температуры и влажности. Вывод в Serial Monitor. Поддержка DHT11/DHT22. Несколько датчиков на разных пинах. Легко добавить веб-сервер, Telegram или графики. Низкое потребление для батарейного питания.
Компоненты
- ESP8266 NodeMCU
- DHT11 или DHT22 (модуль или отдельный)
- Резистор 10 кОм (если без модуля)
Подключение
- VCC → 3.3V ESP
- GND → GND
- Data → D4 (GPIO2)
- Резистор 10 кОм от Data к VCC
Библиотека
DHT sensor library by Adafruit (менеджер библиотек).
Скетч ESP8266
#include <DHT.h>
#define DHTPIN D4
#define DHTTYPE DHT11 // DHT22 для точного
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Ошибка чтения DHT!");
return;
}
Serial.print("Влажность: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Температура: ");
Serial.print(t);
Serial.println(" °C");
}
Считывает каждые 2 секунды влажность и температуру.
Выводит значения в сериал-монитор.
Проверяет корректность считывания и выводит сообщение об ошибке при сбое.
Как работает
delay(2000) для стабильного чтения. readHumidity() и readTemperature() возвращают float. Проверка isnan() на ошибки. Вывод в Serial каждые 2 секунды.
Заключение
Простое подключение DHT к ESP8266. Готово к интеграции с веб-сервером, Telegram или графиками температуры.
FAQ — DHT на ESP8266
Почему значения NaN?
Проверьте подключение, резистор, питание 3.3V. Добавьте delay(2000) после dht.begin().
DHT22 вместо DHT11?
Измените DHTTYPE на DHT22 — точность выше.
Несколько датчиков?
Создайте несколько объектов DHT на разных пинах.
Питание от 5В?
DHT работает от 3–5В, но сигнал на ESP 3.3V — используйте делитель или уровень-преобразователь.
Как часто читать данные?
DHT11 — каждые 1 сек, DHT22 — каждые 2 сек минимум.
Вывод в Fahrenheit?
dht.readTemperature(true) — параметр true для °F.
Интеграция с веб?
Добавьте ESPAsyncWebServer и выводите значения на страницу.