Датчик температуры и влажности DHT11/DHT22
Научитесь создавать метеостанцию и мониторить окружающую среду с помощью цифровых датчиков.
Подготовка оборудования
ESP32 DevKit
Любая версия (30/38 пинов)
DHT11 или DHT22
Датчик температуры/влажности
Резистор 10 кОм
Pull-up для линии DATA
Макетная плата
400 точек + джамперы
Как работает датчик DHT
Устройство датчика
Датчик DHT содержит два сенсора: гигроскопичный материал для влажности и NTC термистор для температуры. Встроенная ИС преобразует сигналы в цифровые данные.
Pin 1
VCC (3-5V)
Pin 2
DATA
Pin 3
NC
Pin 4
GND
DHT11 vs DHT22
| Параметр | DHT11 | DHT22 |
|---|---|---|
| Температура | 0-50°C (±2°C) | -40-80°C (±0.5°C) |
| Влажность | 20-90% (±5%) | 0-100% (±2%) |
| Частота | 1 Гц | 0.5 Гц |
| Цена | Дешевле | Дороже |
💡 Рекомендация
Для большинства проектов выбирайте DHT22 — он точнее и имеет больший диапазон измерений. Разница в цене минимальна.
Принцип измерения
Измерение влажности
Гигроскопичный материал впитывает влагу из воздуха, изменяя электрическое сопротивление между гребенчатыми электродами.
Измерение температуры
NTC термистор изменяет сопротивление при изменении температуры. NTC = Negative Temperature Coefficient.
⏱️ Временные характеристики
Интервал измерений
2 секунды
Минимальная пауза
Время отклика
< 30 сек
Для стабилизации
Частота опроса
0.5-1 Гц
DHT22 / DHT11
Схема подключения
VCC Подключите 3.3V к пину 1 датчика
GND Подключите GND к пину 4 датчика
DATA Пин 2 → GPIO 4 (ESP32)
10kΩ Pull-up между VCC и DATA
⚠️ Важно о pull-up резисторе
Резистор 10 кОм между VCC и DATA необходим для стабильной связи. Некоторые модули DHT уже имеют встроенный резистор — проверьте вашу плату.
Программирование
Установка библиотеки DHT
Откройте Sketch → Include Library → Manage Libraries
В поиске введите DHT sensor library
Установите библиотеку от Adafruit (требуется также Adafruit Unified Sensor)
Код в Arduino IDE
Монитор порта
График измерений
Красная линия
Температура изменяется в течение часа. Обратите внимание на пик в 30 минут.
Синяя линия
Влажность имеет обратную корреляцию с температурой — растёт T, падает RH.
Интервал
Измерения каждые 2 секунды. Минимальный интервал для DHT22.
Возможные проблемы
NaN в данных (Not a Number) ↓
Проверьте подключение: VCC к 3.3V, GND к земле, DATA к GPIO 4. Убедитесь, что установлен pull-up резистор 10 кОм между VCC и DATA. Проверьте, что библиотека DHT установлена корректно.
Нет данных в мониторе порта ↓
Убедитесь, что выбран правильный GPIO (по умолчанию GPIO 4). Проверьте, что скорость монитора порта установлена на 115200 baud. Убедитесь, что dht.begin() вызван в setup().
Значения не меняются или застывшие ↓
Соблюдайте интервал минимум 2 секунды между измерениями (delay(2000)). Датчик DHT22 не может измерять чаще 0.5 Гц. Проверьте, что датчик не перегревается от nearby компонентов.
Библиотека не находится ↓
Установите библиотеку 'DHT sensor library' от Adafruit через Library Manager. Также требуется 'Adafruit Unified Sensor' — установите обе библиотеки.
Слишком большие отклонения в данных ↓
Датчик должен стабилизироваться 30+ секунд после включения. Разместите датчик подальше от источников тепла (ESP32 греется). Избегайте прямых солнечных лучей и сквозняков.
Цех Испытаний
Отточите мастерство работы с датчиками температуры и влажности. Каждая задача — шаг к созданию умной метеостанции.
Монитор температуры
Вывод температуры с форматированием
Выводите только температуру в монитор порта с точностью до 2 знаков после запятой. Формат: 'Temperature: 25.34°C'. Используйте Serial.printf() для красивого форматирования.
Тепловой индекс
Расчёт ощущаемой температуры
Рассчитывайте и выводите Heat Index (ощущаемую температуру) используя встроенную функцию библиотеки. Выводите все три значения: влажность, температура, ощущаемая температура.
Пороговые уведомления
Реагирование на критические значения
Выводите предупреждения при превышении температуры > 30°C или влажности > 70%. Используйте emoji для разных уровней: ⚠️ для предупреждения, 🚨 для критического значения (T > 35°C или RH > 85%).
Логгер данных
Запись данных в формате CSV
Выводите данные в формате CSV для экспорта в Excel/Google Sheets. Строго формат каждой строки: 'millis,humidity,temperature,heat_index' — например '12345,45.20,24.30,25.10'. В setup() первой строкой выведите заголовок 'ms,RH,T,HI'. Обновление каждые 2 секунды. Проверка: скопируйте 5 строк из Serial Monitor и вставьте в Google Sheets — данные должны разойтись по столбцам.
Умная метеостанция
Комплексная система с дисплеем
Создайте умную сигнализацию без дополнительных дисплеев. Подключите active buzzer к GPIO 21 и LED к GPIO 2. Логика: T < 20°C — LED мигает 1 раз (200мс), «холодно»; 20–30°C — LED горит постоянно, тишина, «комфорт»; T > 30°C — LED мигает быстро (5 раз по 100мс) + buzzer 3 писка по 200мс, «жарко»; влажность > 75% при любой T — добавить одиночный писк каждые 5 секунд. Выводите в Serial текущий режим каждые 2 секунды.
Свой Проект
Создайте уникальную метеостанцию с дисплеем, кнопками, отправкой данных в облако... Ограничений нет!
Поздравляем! 🎉
Вы освоили работу с цифровыми датчиками DHT11/DHT22! Теперь вы можете создавать метеостанции, системы мониторинга и умные устройства для дома.