DHT22 датчик температуры и влажности

Изучите всё о датчике DHT22 (AM2302): технические характеристики, распиновка, схемы подключения, datasheet и примеры кода для ESP32, Arduino, Raspberry

Температура и влажность Цифровой

Обзор

DHT22 (также известный как AM2302) — это высокоточный цифровой датчик для измерения температуры и влажности. В отличие от DHT11, он обеспечивает лучшую точность и более широкий диапазон измерений. Благодаря калиброванным цифровым выходам, он прост в подключении и широко используется в проектах мониторинга окружающей среды.

DHT22 (AM2302) — это высокоточный цифровой датчик для измерения температуры и влажности. Он обеспечивает калиброванные цифровые выходы и имеет значительно лучшую точность по сравнению с DHT11. Датчик широко используется в проектах Arduino, ESP32 и Raspberry Pi.

Датчик DHT22
Быстрая навигация
Основные разделы статьи
Примеры кода
Популярные платформы

Ключевые особенности

  • Высокая точность — ±0.5°C для температуры, ±2% для влажности
  • Широкий диапазон — от -40°C до 80°C
  • Цифровой выход — не требует АЦП
  • Калибровка — встроенная заводская калибровка
  • Низкое энергопотребление
Где купить

Приобретите DHT22

Характеристики

Технические характеристики DHT22

Интерфейс
Цифровой (1-Wire)
Диапазон температуры
-40 ~ 80 °C
Диапазон влажности
0 ~ 100 % RH
Точность температуры
±0.5 °C
Точность влажности
±2 % RH
Напряжение питания
3.3V - 5V DC
Распиновка

Распиновка DHT22

Распиновка DHT22
1
VCC

Питание (3.3V - 5V)

2
DATA

Линия данных (требуется подтяжка 4.7kΩ)

3
NC

Не используется

4
GND

Земля

Быстрые советы
  • 🔌 Резистор подтяжки — обязателен 4.7kΩ - 10kΩ
  • 📏 Длина провода — до 30 метров
  • ⏱️ Частота опроса — не чаще 1 раза в 2 секунды
  • 🔋 Питание — рекомендуется 3.3V для ESP32
Подключение

Подключение DHT22 к ESP32

Подключение DHT22 к ESP32
Подключений
Требуется
3
Протокол
Цифровой
1-Wire
Вывод DHT22 Подключение Вывод ESP32 Описание
VCC Требуется 3.3V Питание
DATA Требуется GPIO4 Линия данных (с подтяжкой 4.7kΩ)
GND Требуется GND Земля
Отладка и ошибки

Устранение неполадок DHT22

Показания "0" или "-1"

Датчик не отвечает

Проблема: Датчик возвращает значения 0 или -1.

Причины:

  • Неправильное подключение
  • Отсутствует резистор подтяжки
  • Слишком длинный провод
  • Неправильный пин GPIO

Решение: Проверьте подключение, добавьте резистор подтяжки 4.7kΩ - 10kΩ между DATA и VCC.

Ошибка CRC

Несовпадение контрольной суммы

Проблема: Ошибка контрольной суммы при чтении данных.

Причина: Помехи на линии данных или нестабильное питание.

Решение: Добавьте конденсатор 100nF между VCC и GND, укоротите провода, проверьте качество питания.

Советы по отладке
  • 🔌 Используйте Serial Monitor для отладки
  • 🔧 Проверьте подтягивающий резистор
  • 📏 Длина провода — не более 30 метров
  • ⏱️ Задержка — минимум 2 секунды между чтениями
Примеры кода

Примеры программирования DHT22

Arduino

Совместимо с Arduino IDE и ESP32

C++
#include <DHT.h>

#define DHTPIN 4     // Пин данных
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
  Serial.println("Датчик DHT22 инициализирован!");
}

void loop() {
  // Задержка между измерениями (DHT22 мин. 2 секунды)
  delay(2000);
  
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  
  // Проверка на ошибки чтения
  if (isnan(h) || isnan(t)) {
    Serial.println("Ошибка чтения с датчика DHT22!");
    return;
  }
  
  Serial.print("Влажность: ");
  Serial.print(h);
  Serial.println(" %");
  
  Serial.print("Температура: ");
  Serial.print(t);
  Serial.println(" °C");
}

Пример использует библиотеку DHT для чтения данных с датчика. Измените DHTTYPE на DHT22 (для DHT11 используйте DHT11).

ESPHome

Конфигурация для Home Assistant

YAML
sensor:
  - platform: dht
    pin: GPIO4
    model: DHT22
    temperature:
      name: "Living Room Temperature"
      unit_of_measurement: "°C"
    humidity:
      name: "Living Room Humidity"
      unit_of_measurement: "%"
    update_interval: 60s

Конфигурация ESPHome для подключения DHT22 к GPIO4. Укажите model: DHT22 для правильной работы.

MicroPython

Python для микроконтроллеров

Python
from machine import Pin
from dht import DHT22
import time

# Создаем объект датчика на пине GPIO4
dht = DHT22(Pin(4))

while True:
    try:
        dht.measure()
        temp = dht.temperature()
        hum = dht.humidity()
        print(f"Температура: {temp}°C, Влажность: {hum}%")
    except OSError as e:
        print("Ошибка чтения датчика:", e)
    
    time.sleep(2)

MicroPython поддерживает DHT22 через класс DHT22. Подключите датчик к GPIO4.

Итоги DHT22

Датчик DHT22 (AM2302) — это высокоточный и надежный датчик для измерения температуры и влажности. Благодаря широкому диапазону измерений и лучшей точности по сравнению с DHT11, он идеально подходит для проектов мониторинга окружающей среды.

Преимущества

Высокая точность ±0.5°C, широкий диапазон температур от -40°C до 80°C, 0-100% влажности.

Ограничения

Требует задержки 2 секунды между измерениями, дороже чем DHT11.