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

Технические характеристики, распиновка, схемы подключения к ESP32, даташит и примеры кода для DHT21 (AM2301A).

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

Где купить

Приобретите Датчик температуры и влажности DHT21 / AM2301A

Обзор

DHT21 (также известный как AM2301) — это надежный цифровой датчик для измерения температуры и влажности, обеспечивающий калиброванный цифровой выход и простоту интеграции с микроконтроллерами.

DHT21 / AM2301A использует емкостный датчик влажности и термистор для обеспечения точных и стабильных измерений. Он идеально подходит для мониторинга климата в умных домах, системах вентиляции и промышленной автоматизации.

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

Где купить DHT21 / AM2301A

DHT21 / AM2301A
Ориентировочная цена
от $5.00
Amazon
Amazon.com
Доставка по всему миру
Смотреть
AliExpress
AliExpress
Лучшая цена
Смотреть

Цены могут меняться. Мы получаем комиссию за покупки по партнерским ссылкам Amazon.

Технические параметры

Характеристики DHT21 / AM2301A

Интерфейс
Single-Bus (OneWire)
Точность
Темп: ±0.5°C | Влажн: ±3% RH
Диапазон
-40°C ... 80°C | 0 ... 100% RH
Питание
3.3 В - 5.5 В (реком. 5 В)
PDF
DHT21 Datasheet
Скачать PDF
Подключение пинов

Распиновка DHT21 / AM2301A

Распиновка DHT21
💡
Важный совет

Для надежной передачи данных требуется подтягивающий резистор 5-10 кОм между пинами VCC и DATA.

⏱️
Частота опроса

Минимальный интервал между чтениями данных составляет 2 секунды.

Таблица назначения контактов
Пин # Название Тип Описание
1 VCC Power Питание (3.3В - 5.5В)
2 DATA I/O Цифровой выход данных
3 NC None Не используется (No Connection)
4 GND Power Общий (Земля)
Схема подключения

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

Схема подключения DHT21 к ESP32
Протокол
OneWire
1 цифровой пин
📍
GPIO
GPIO4
Можно использовать любой свободный GPIO
Таблица соединений
Датчик DHT21 ESP32 Пин Описание
1 VCC 3.3V / 5V Питание датчика (рекомендуется 3.3В для ESP32)
2 DATA GPIO4 Линия передачи данных
4 GND GND Общий провод
Устранение неполадок

Типичные проблемы и решения

⚠️
Неверные показания температуры

Проблема: Датчик возвращает аномальные значения, например, 225°C.

Решение: Проверьте инициализацию в коде. Убедитесь, что выбран тип DHT21 или AM2301. Также проверьте стабильность питания и качество контактов.

💧
Влажность застыла на 99.9%
Решение: Это часто случается при насыщении сенсора влагой или выпадении конденсата. Просушите датчик в сухом месте. Если показания не меняются, возможно, сенсор поврежден.
?
Ошибки "NaN" в консоли
Решение: Проверьте наличие подтягивающего резистора (5-10 кОм) на линии DATA. Также увеличьте задержку между измерениями до 2-3 секунд.
Примеры программирования

Примеры кода для DHT21 / AM2301A

Arduino
Arduino Framework

Библиотека Adafruit DHT

C++
#include "DHT.h"

#define DHTPIN 4     // Пин подключения DATA
#define DHTTYPE DHT21   // Тип датчика DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  Serial.println("DHT21 Sensor Example");
  dht.begin();
}

void loop() {
  delay(2000); // Минимум 2 секунды между чтениями

  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  Serial.printf("Humidity: %.1f %% | Temperature: %.1f °C\n", humidity, temperature);
}

Этот скетч инициализирует датчик на пине 4 и выводит данные в Serial Monitor каждые 2 секунды.

ESP-IDF
ESP-IDF

Native Development Framework

C / C++
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "dht.h"

#define DHT_PIN GPIO_NUM_4

void app_main() {
    setDHTgpio(DHT_PIN);
    while (1) {
        printf("Reading DHT21 sensor...\n");
        int ret = readDHT();
        errorHandler(ret);
        printf("Humidity: %.1f%%\n", getHumidity());
        printf("Temperature: %.1f°C\n", getTemperature());
        vTaskDelay(2000 / portTICK_PERIOD_MS);
    }
}
ESPHome
ESPHome

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

YAML
sensor:
  - platform: dht
    pin: GPIO4
    model: DHT21
    temperature:
      name: "Температура в комнате"
    humidity:
      name: "Влажность в комнате"
    update_interval: 60s
MicroPython
MicroPython

Python для ESP32

Python
from machine import Pin
from time import sleep
import dht

# Инициализация DHT21
sensor = dht.DHT21(Pin(4))

while True:
    try:
        sensor.measure()
        temp = sensor.temperature()
        hum = sensor.humidity()
        print('Temp: {:.1f}°C, Hum: {:.1f}%'.format(temp, hum))
    except OSError as e:
        print('Failed to read sensor.')
    sleep(2)

Итоги

DHT21 / AM2301A — отличный выбор для домашней автоматизации. Он точнее обычного DHT11 и надежнее в работе.

Безопасность

Не превышайте напряжение питания 5.5В и избегайте прямого контакта с водой (используйте защитный корпус при наружной установке).

Готовы начать проект?

Используйте проверенные примеры кода и документацию для быстрого старта.

Похожие варианты