Датчик температуры и влажности DHT11/DHT22 подключение и чтение данных

Датчик DHT11/DHT22 — один из самых популярных сенсоров для Arduino-проектов. Он измеряет температуру и влажность воздуха, стоит недорого и прост в подключении. DHT11 бюджетный (±2°C, ±5% влажности), DHT22 точнее (±0.5°C, ±2–5% влажности). В уроке подключим датчик к Arduino Uno, установим библиотеку Adafruit DHT, выведем данные в Serial Monitor на русском языке. Проект — основа для метеостанций, теплиц, умного дома или логгеров.

DHT11/DHT22 на Arduino температура влажность

Возможности датчика

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).