Датчик температуры и влажности DHT11/DHT22 подключение и чтение данных
Датчик DHT11/DHT22 — один из самых популярных сенсоров для Arduino-проектов. Он измеряет температуру и влажность воздуха, стоит недорого и прост в подключении. DHT11 бюджетный (±2°C, ±5% влажности), DHT22 точнее (±0.5°C, ±2–5% влажности). В уроке подключим датчик к Arduino Uno, установим библиотеку Adafruit DHT, выведем данные в Serial Monitor на русском языке. Проект — основа для метеостанций, теплиц, умного дома или логгеров.
Возможности датчика
DHT11: температура 0–50°C, влажность 20–80%. DHT22: -40–80°C, 0–100% влажности. Чтение каждые 2 секунды. Цифровой однопроводный протокол. Легко интегрировать с дисплеями, Wi-Fi (ESP) или SD-картой для логирования.
Компоненты
- Arduino Uno/Nano/Mega
- DHT11 или DHT22 (модуль или отдельный)
- Резистор 10 кОм (для отдельного датчика)
- Провода
Подключение
Для модуля (3 вывода):
- VCC → 5V Arduino
- GND → GND
- Data → D2
Для отдельного DHT (4 вывода):
- 1 (VCC) → 5V
- 2 (Data) → D2
- 3 (NC) — не подключать
- 4 (GND) → GND
- Резистор 10 кОм между 1 и 2
Установка библиотеки
В Arduino IDE: Инструменты → Управление библиотеками → Поиск «DHT sensor library» Adafruit → Установить (и зависимости).
Скетч Arduino
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11 // DHT22 для точного
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("Тест DHT11/DHT22");
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");
}
инициализирует датчик DHT11/DHT22 на пине 2.
каждые 2 секунды читает влажность и температуру.
выводит значения в Serial Monitor.
при ошибке чтения выводит сообщение об ошибке.
Как работает
delay(2000) для стабильности. readHumidity() и readTemperature() возвращают значения. Проверка isnan() на ошибки. Вывод на русском в Serial Monitor каждые 2 секунды.
Заключение
DHT — отличный старт для измерения климата на Arduino. Легко добавить LCD, buzzer на превышение порога или запись на SD. Следующий шаг — веб-вывод через ESP8266.
FAQ — DHT11/DHT22 на Arduino
Почему значения NaN или ошибка?
Проверьте подключение, резистор 10 кОм, правильный DHTTYPE. Добавьте delay(2000) после dht.begin().
DHT22 или DHT11 — какой лучше?
DHT22 точнее и шире диапазон, DHT11 дешевле и проще для комнатных условий.
Можно несколько датчиков?
Да, создайте несколько объектов DHT на разных цифровых пинах.
Как вывести на LCD?
Добавьте LiquidCrystal, lcd.print(t) и lcd.print(h).
Чтение чаще 2 секунд?
Не рекомендуется — датчик обновляет данные раз в 2 секунды, будут ошибки.
Питание от 3.3В?
Да, DHT работает от 3–5В, но на Arduino Uno лучше 5В.
Интеграция с ESP8266?
Та же библиотека, но пины ограничены (не 15).