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

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

DHT22 к Arduino подключают тремя проводами: 5 В, земля и данные на любой цифровой вывод. Весь протокол берёт на себя библиотека DHT.

Схема подключения DHT22 к Arduino

DHT22 (AM2302)Arduino Uno
SDAD4
VCC5V
GNDGND

Схема из примера «Arduino Uno: датчик DHT22 на одном проводе».

Arduino Uno: датчик DHT22 на одном проводе

Открыть пример целиком

Выводы DHT22 (AM2302)

ВыводНазначение
NCне подключается
SDAлиния данных (в документации — DATA); нужна подтяжка 10 кОм к питанию
VCCпитание 3,3–5 В
GNDобщий провод

Код для Arduino

#include <DHT.h>

// DHT22 на выводе 4. Шины здесь нет вовсе: обмен идёт по одной линии,
// импульсами разной длины, и всю работу делает библиотека.
//
// Датчик медленный, и это не библиотека тормозит. Внутри он измеряет
// около двух секунд, а между опросами ему нужен покой: спросите чаще —
// получите прошлое значение или NaN. Отсюда delay в конце цикла.
//
// Проверка на NaN обязательна. Отвалившийся провод не даёт ни ошибки,
// ни исключения: возвращается «не число», и любая арифметика с ним
// тихо превращается в бессмыслицу.

#define DHTPIN 4
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println(F("датчик не ответил"));
    delay(2000);
    return;
  }

  Serial.print("t:");
  Serial.print(t, 1);
  Serial.print(" h:");
  Serial.println(h, 1);

  delay(2000);
}

Скетч можно править и запускать в симуляторе без платы и установки среды.

Что учесть на Arduino

В железе

На модуле (плата с тремя выводами) подтягивающий резистор обычно уже стоит. У голого датчика с четырьмя ножками его ставят сами: 10 кОм между DATA и VCC.

Частые ошибки при подключении к Arduino

Другие детали для Arduino