Как подключить датчик DHT21 к Arduino

Сегодня познакомимся с датчиком температуры и влажности DHT21, который стоит на ступень выше популярных DHT11 и DHT22, также он известен как сенсор AM2301. Это цифровой датчик для микроконтроллера Ардуино с одним проводом данных, который сочетает высокую точность, стабильность и промышленный дизайн. Применяется при создании метеостанции, инкубаторов, управление увлажнителями и вентиляцией.

Датчик DHT21 (AM2301) характеристики, распиновка

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

DHT21 — это цифровой комбинированный датчик с встроенным калиброванным сигналом. Внутри имеется ёмкостный элемент для измерения влажности и термистор для измерения температуры. Встроенный 8-битный микроконтроллер в сенсоре, сам измеряет температуру и влажность, потом оцифровывает показания и передаёт на микроконтроллер Ардуино по однопроводному интерфейсу (1-Wire-like).

Характеристики датчика температуры DHT21 (datasheet)

  • Напряжение питания: 3.3 – 5.5 V DC
  • Ток потребления: ~1 мА (измерение), ~0.1 мА (ожидание)
  • Диапазон влажности: 0–100% RH
  • Точность влажности: ±2% RH (при 25°C)
  • Разрешение влажности: 0.1% RH
  • Диапазон температур: -40…+80°C
  • Точность температуры: ±0.3°C
  • Разрешение температуры: 0.1°C
  • Частота опроса: не чаще 2 раз в секунду (0.5 Гц)
  • Интерфейс: 1-Wire (однопроводной)
  • Максимальная длина линии: до 20 метров (при качественном кабеле)
  • Корпус: пластиковый, IP-защита, но не герметичен

Подключение датчика DHT21 к Arduino

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • датчик DHT21 / AM2301
  • резистор 4.7 кОм
  • макетная плата
  • провода «папа-мама», «папа-папа»
Подключение датчика температуры DHT21 Arduino
Подключение датчика температуры и влажности DHT21 Arduino

Схема подключения датчика температуры и влажности AM2301:

  • VCC (красный провод) → +5V Arduino
  • DATA (жёлтый / белый провод) → цифровой пин (например 10)
  • NC → Не подключается
  • GND (чёрный провод) → GND Arduino

При подключении сенсора к микроконтроллеру необходим подтягивающий резистор 4.7 кОм между пином DATA и +5V (смотри схему подключения датчика). Интерфейс 1-Wire требует подтяжки линии данных к питанию, чтобы обеспечить логическую «1» в пассивном состоянии. Без резистора связь будет нестабильной. Если у вас не сенсор, а готовый модуль — проверьте наличие компонента на плате, иногда он уже есть.

Скетч для датчика температуры и влажности DHT21 Ардуино

#include "DHT.h"
// тип датчика: DHT21
#define DHTTYPE DHT21
// пин подключения DATA
#define DHTPIN 10
// инициализация объекта датчика
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();  // запускаем датчик
}

void loop() {
  // ждём 2 секунды между измерениями (рекомендовано производителем)
  delay(2000);
  
  // чтение влажности воздуха
  float humidity = dht.readHumidity();
  // чтение температуры в градусах Цельсия
  float temperature = dht.readTemperature();
  // (опционально) температура в Фаренгейтах
  // float fahrenheit = dht.readTemperature(true);
  
  // проверка на ошибки чтения
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Ошибка чтения датчика DHT21!");
    return;
  }
  
  // вывод в монитор порта
  Serial.print("Влажность: ");
  Serial.print(humidity);
  Serial.print(" %\t");
  Serial.print("Температура: ");
  Serial.print(temperature);
  Serial.println(" °C");
}

Пояснения к коду:

  1. для работы с DHT21 (AM2301) лучше использовать проверенную библиотеку DHT sensor library от Adafruit. Она поддерживает все семейство DHT;
  2. после включения дайте датчику несколько секунд на стабилизацию, особенно если он подключается первый раз или долгое время был без питания;
  3. не опрашивайте датчик AM2301 чаще 1 раза в 2 секунды. Иначе, сенсор не успевает переключиться, и вы получите ошибку.

Настройка и решение проблем

  1. В мониторе порта «nan» или «Ошибка чтения»
    Неправильное питание, отсутствие подтягивающего резистора или слишком частая выборка. Проверьте резистор, увеличьте задержку между запросами до 2-3 секунд, убедитесь, что используете DHT21 в коде (DHTTYPE DHT21).
  2. Температура скачет или нереалистична
    Плохой контакт или наводки по длинному проводу. Укоротите провода, добавьте конденсатор 100 нФ между VCC и GND у датчика.
  3. При питании от 3.3V датчик работает нестабильно
    Проверьте, что подтягивающий резистор подключён к 3.3V, а не к 5V. Но лучше использовать 5V, так как DHT21 стабильнее работает при питании от 5V.

Заключение. DHT21 — это надёжный и точный датчик, который легко подключается к Arduino и даёт стабильные показания. Он идеально подходит для проектов, где нужна высокая точность температуры и влажности без сложного калибрования. Просто подключите, загрузите библиотеку и получайте данные! Теперь ваша умная теплица или метеостанция будут работать профессионально. Пробуйте и делитесь результатами!



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.