Приобретите Датчик температуры и влажности DHT21 / AM2301A
Обзор
DHT21 (также известный как AM2301) — это надежный цифровой датчик для измерения температуры и влажности, обеспечивающий калиброванный цифровой выход и простоту интеграции с микроконтроллерами.
DHT21 / AM2301A использует емкостный датчик влажности и термистор для обеспечения точных и стабильных измерений. Он идеально подходит для мониторинга климата в умных домах, системах вентиляции и промышленной автоматизации.
Где купить DHT21 / AM2301A
Цены могут меняться. Мы получаем комиссию за покупки по партнерским ссылкам Amazon.
Характеристики DHT21 / AM2301A
Распиновка DHT21 / AM2301A
Для надежной передачи данных требуется подтягивающий резистор 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 Пин | Описание |
|---|---|---|
| 1 VCC | 3.3V / 5V | Питание датчика (рекомендуется 3.3В для ESP32) |
| 2 DATA | GPIO4 | Линия передачи данных |
| 4 GND | GND | Общий провод |
Типичные проблемы и решения
⚠️
Неверные показания температуры
Проблема: Датчик возвращает аномальные значения, например, 225°C.
Решение: Проверьте инициализацию в коде. Убедитесь, что выбран тип DHT21 или AM2301. Также проверьте стабильность питания и качество контактов.
💧
Влажность застыла на 99.9%
?
Ошибки "NaN" в консоли
Примеры кода для DHT21 / AM2301A
Arduino Framework
Библиотека Adafruit DHT
C++
Библиотека Adafruit DHT
#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
Native Development Framework
C / C++
Native Development Framework
#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
Конфигурация Home Assistant
YAML
Конфигурация Home Assistant
sensor:
- platform: dht
pin: GPIO4
model: DHT21
temperature:
name: "Температура в комнате"
humidity:
name: "Влажность в комнате"
update_interval: 60s
MicroPython
Python для ESP32
Python
Python для ESP32
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В и избегайте прямого контакта с водой (используйте защитный корпус при наружной установке).
Готовы начать проект?
Используйте проверенные примеры кода и документацию для быстрого старта.