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

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

Окружающая среда I2C

Обзор

DHT20 — это высокоточный цифровой датчик температуры и влажности с интерфейсом I²C. Он отличается низким энергопотреблением, быстрым временем отклика и превосходной долгосрочной стабильностью, что делает его идеальным для широкого спектра приложений мониторинга окружающей среды.

DHT20 — это высокоточный цифровой датчик температуры и влажности с интерфейсом I²C. Это современная версия датчиков DHT11/DHT22 с значительно улучшенными характеристиками. Датчик имеет встроенную калибровку и обеспечивает стабильные показания.

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

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

  • Интерфейс I²C — простая и надежная коммуникация
  • Высокая точность — ±0.3°C для температуры, ±2% для влажности
  • Низкое энергопотребление — идеально для батарейных устройств
  • Долгосрочная стабильность — превосходная стабильность показаний
  • Компактный размер — встроенный корпус
Где купить

Приобретите DHT20

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

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

Интерфейс
I2C
Адрес I2C
0x38
Диапазон температуры
-40 ~ 80 °C
Диапазон влажности
0 ~ 100 % RH
Точность температуры
±0.3 °C
Точность влажности
±2 % RH
Напряжение питания
2.2V - 3.6V DC
Ток потребления
~1µA (сон)
Распиновка

Распиновка DHT20

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

Питание (2.2V - 3.6V)

2
SDA

I2C данные

3
GND

Земля

4
SCL

I2C тактирование

Быстрые советы
  • 🔌 I2C адрес — 0x38 (фиксированный)
  • 📏 Длина провода — до 10 метров
  • ⏱️ Частота опроса — рекомендуется каждые 5 секунд
  • 🔋 Питание — 3.3V (не 5V!)
Подключение

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

Подключение DHT20 к ESP32
Подключений
Требуется
4
Протокол
I2C
I2C
Вывод DHT20 Подключение Вывод ESP32 Описание
VCC Требуется 3.3V Питание (2.2V-3.6V)
GND Требуется GND Земля
SDA Требуется GPIO21 I2C данные
SCL Требуется GPIO22 I2C тактирование
Важные примечания
  • ⚠️ НАПРЯЖЕНИЕ — используйте 3.3V, а не 5V!
  • 📍 Адрес I2C — фиксированный 0x38
  • 🔧 Подтяжка — встроенные резисторы
Отладка и ошибки

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

Датчик не определяется

I2C сканер не находит датчик

Проблема: Датчик не обнаруживается по I2C.

Причины:

  • Неправильное напряжение питания (используется 5V вместо 3.3V)
  • Неправильное подключение SDA/SCL
  • Проблемы с проводами

Решение: Проверьте напряжение питания (должно быть 3.3V), проверьте подключение SDA к GPIO21 и SCL к GPIO22.

Нестабильные показания

Значения прыгают или некорректны

Проблема: Показания датчика нестабильны.

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

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

Советы по отладке
  • 🔌 Используйте I2C сканер для проверки адреса
  • 🔧 Проверьте напряжение питания (3.3V!)
  • 📏 Длина провода — не более 10 метров
  • ⏱️ Задержка — минимум 5 секунд между чтениями
Примеры кода

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

Arduino

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

C++
#include <Wire.h>
#include <DHT20.h>

DHT20 dht;

void setup() {
  Serial.begin(115200);
  Wire.begin(21, 22);  // SDA=21, SCL=22 на ESP32
  
  // Инициализация датчика
  while (dht.begin() != true) {
    Serial.println("DHT20 не найден!");
    delay(5000);
  }
  Serial.println("DHT20 инициализирован!");
}

void loop() {
  // Чтение данных (занимает ~5ms)
  dht.read();
  
  float temperature = dht.getTemperature();
  float humidity = dht.getHumidity();
  
  // Проверка на ошибки
  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Ошибка чтения!");
    return;
  }
  
  Serial.print("Температура: ");
  Serial.print(temperature);
  Serial.println(" °C");
  
  Serial.print("Влажность: ");
  Serial.print(humidity);
  Serial.println(" %");
  
  delay(5000);  // Минимум 2 секунды между чтениями
}

Пример использует библиотеку DHT20 для чтения данных. Датчик подключен к стандартным пинам I2C ESP32 (SDA=GPIO21, SCL=GPIO22).

ESPHome

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

YAML
i2c:
  sda: GPIO21
  scl: GPIO22

sensor:
  - platform: dht20
    temperature:
      name: "Гостиная Температура"
      unit_of_measurement: "°C"
    humidity:
      name: "Гостиная Влажность"
      unit_of_measurement: "%"
    update_interval: 60s

Конфигурация ESPHome для подключения DHT20. Датчик автоматически определяется по адресу 0x38.

MicroPython

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

Python
from machine import I2C, Pin
import time

i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)
DHT20_ADDR = 0x38

def read_dht20():
    # Отправка команды на измерение
    i2c.writeto(DHT20_ADDR, bytes([0xAC, 0x33, 0x00]))
    time.sleep_ms(80)
    
    # Чтение 6 байт данных
    data = i2c.readfrom(DHT20_ADDR, 6)
    
    # Проверка статуса
    if (data[0] >> 4) != 0x0A:
        return None, None
    
    # Расчет значений
    humidity = ((data[1] << 12) | (data[2] << 4) | (data[3] >> 4)) / (1 << 20) * 100
    temperature = (((data[3] & 0x0F) << 16) | (data[4] << 8) | data[5]) / (1 << 20) * 200 - 50
    
    return temperature, humidity

while True:
    temp, hum = read_dht20()
    if temp is not None:
        print(f"Температура: {temp:.1f}°C, Влажность: {hum:.1f}%")
    else:
        print("Ошибка чтения")
    time.sleep(5)

MicroPython пример для чтения DHT20 без внешней библиотеки. Данные считываются напрямую через I2C.

Итоги DHT20

Датчик DHT20 — это современная и высокоточная замена устаревшим датчикам DHT11/DHT22. Благодаря интерфейсу I²C, низкому энергопотреблению и превосходной стабильности, он идеально подходит для проектов IoT и систем мониторинга.

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

Интерфейс I²C, высокая точность ±0.3°C, низкое энергопотребление, долгосрочная стабильность.

Важно помнить

Питание только 3.3V (не 5V!), адрес I2C всегда 0x38.

Готовы начать создавать?

Теперь, когда у вас есть вся необходимая информация, пора интегрировать DHT20 в проект и воплотить идеи в жизнь!