Как подключить DHT22 к ESP32
Три провода, данные на GPIO4, питание 3,3 В.
Схема подключения
Открыть в конструктореСборка по шагам
3 шага- 3 провода по порядку: земля, питание, сигналы.Нажмите на провод на схеме или строку таблицы, чтобы открыть его шаг.Стрелки ← → листают шаги.
- Шаг 1: минус датчика на GND платы
- Шаг 2: плюс датчика на 3V3 платы3,3 В, датчик берёт до 1,5 мА, вывод даёт около 500 мА.
- Шаг 3: out датчика на D4 платы
- Готово: 3 провода на месте.Сверьте с таблицей соединений ниже.
Соединения
| Шаг | Откуда | Куда | Цвет |
|---|---|---|---|
| 1 | ESP32 DOIT GND | DHT22 модуль - | чёрный |
| 2 | ESP32 DOIT 3V3 | DHT22 модуль + | красный |
| 3 | ESP32 DOIT D4 | DHT22 модуль out | белый |
Детали
- ESP32 DOIT DevKit V1, 30 пинов× 1
- Модуль DHT22 (AM2302) на плате (+, out, −)× 1
- Провода3 шт.
Проверка питания и проводов
- Проверка схемы, та же, что в конструкторе, не нашла ошибок: напряжения выводов совпадают, земля общая, шины подключены целиком.
- DHT22 модуль берёт до 1.5 мА (обычно около 1) с вывода 3V3 ESP32 DOIT, вывод даёт около 500 мА: стабилизатор AMS1117 на 1 А, до 500 мА берёт сам ESP32.
Ток всей схемы и сколько она проработает от аккумулятора: расчёт питания. Где что втыкать: схема на макетке.
Пример кода
Arduino IDE, DHT sensor library (Adafruit) 1.4, Adafruit Unified Sensor.
#include <DHT.h>
DHT dht(4, DHT22);
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
delay(2000); // DHT22 отвечает не чаще раза в 2 секунды
float t = dht.readTemperature();
float h = dht.readHumidity();
if (isnan(t) || isnan(h)) {
Serial.println("DHT22 не ответил: проверьте провод out и питание");
return;
}
Serial.printf("%.1f °C, %.1f %%\n", t, h);
}
Распиновки деталей
Как подключено
У модуля DHT22 три вывода: + на 3V3, out на GPIO4, минус на GND. Подтяжка 10 кОм от out к плюсу уже стоит на плате модуля. У голого DHT22 с четырьмя ногами её ставят самому: 4,7-10 кОм от DATA к VDD, третья нога ни к чему не подключена.
Датчик отвечает не чаще раза в 2 секунды, поэтому в примере задержка 2000 мс. Первую секунду после включения он молчит.
Частые ошибки
- Берут для данных GPIO34-39. Эти пины ESP32 работают только на вход, а DHT22 ждёт от контроллера стартовый импульс, и датчик не отвечает.
- Выбирают в библиотеке тип DHT11 для DHT22. Числа приходят, но неверные: формат данных у датчиков разный.
Частые вопросы
- Можно ли питать DHT22 от 5 В при подключении к ESP32?
- Нельзя без делителя: подтяжка на модуле потянет линию данных к 5 В, а пин ESP32 рассчитан на 3,3 В. От 3,3 В датчик работает по даташиту Aosong.
- Чем DHT22 отличается от DHT11?
- DHT22 точнее (±2 % влажности и ±0,5 °C) и меряет от −40 до 80 °C. Провода те же, в коде меняется только тип датчика.
- Почему приходит nan?
- Датчик не ответил: нет питания, провод out не на том пине или опрос чаще раза в 2 секунды. Для провода до 20 м Aosong советует подтяжку около 5 кОм, на модуле стоит 10 кОм: с длинным проводом добавьте ещё 10 кОм от out к плюсу.