Урок 8 Начинающий 40 минут

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

Научитесь создавать метеостанцию и мониторить окружающую среду с помощью цифровых датчиков.

1

Подготовка оборудования

Компоненты для урока

ESP32 DevKit

Любая версия (30/38 пинов)

🌡️

DHT11 или DHT22

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

⚙️

Резистор 10 кОм

Pull-up для линии DATA

🔌

Макетная плата

400 точек + джамперы

2

Как работает датчик DHT

Устройство датчика

Строение датчика 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 — он точнее и имеет больший диапазон измерений. Разница в цене минимальна.

2.1

Принцип измерения

Принцип измерения температуры и влажности
💧

Измерение влажности

Гигроскопичный материал впитывает влагу из воздуха, изменяя электрическое сопротивление между гребенчатыми электродами.

🔥

Измерение температуры

NTC термистор изменяет сопротивление при изменении температуры. NTC = Negative Temperature Coefficient.

⏱️ Временные характеристики

Интервал измерений

2 секунды

Минимальная пауза

Время отклика

< 30 сек

Для стабилизации

Частота опроса

0.5-1 Гц

DHT22 / DHT11

3

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

Схема подключения датчика DHT к ESP32
1

VCC Подключите 3.3V к пину 1 датчика

2

GND Подключите GND к пину 4 датчика

3

DATA Пин 2 → GPIO 4 (ESP32)

4

10kΩ Pull-up между VCC и DATA

⚠️ Важно о pull-up резисторе

Резистор 10 кОм между VCC и DATA необходим для стабильной связи. Некоторые модули DHT уже имеют встроенный резистор — проверьте вашу плату.

4

Программирование

Установка библиотеки DHT

📦

Откройте Sketch → Include Library → Manage Libraries

🔍

В поиске введите DHT sensor library

Установите библиотеку от Adafruit (требуется также Adafruit Unified Sensor)

DHT_Simple.ino
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
  Serial.begin(115200);
  dht.begin();
}
void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print("% Temp: ");
  Serial.print(temperature);
  Serial.println("°C");
  delay(2000);
}

Код в Arduino IDE

Код программы в Arduino IDE

Монитор порта

Данные с датчика в мониторе порта
4.1

График измерений

График изменения температуры и влажности
📈

Красная линия

Температура изменяется в течение часа. Обратите внимание на пик в 30 минут.

💧

Синяя линия

Влажность имеет обратную корреляцию с температурой — растёт T, падает RH.

⏱️

Интервал

Измерения каждые 2 секунды. Минимальный интервал для DHT22.

5

Возможные проблемы

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 греется). Избегайте прямых солнечных лучей и сквозняков.

6

Цех Испытаний

Отточите мастерство работы с датчиками температуры и влажности. Каждая задача — шаг к созданию умной метеостанции.

Время прохождения
~110 минут суммарно
🌡️
Уровень: Start 10m

Монитор температуры

Вывод температуры с форматированием

Миссия

Выводите только температуру в монитор порта с точностью до 2 знаков после запятой. Формат: 'Temperature: 25.34°C'. Используйте Serial.printf() для красивого форматирования.

01
💧
Уровень: Easy 15m

Тепловой индекс

Расчёт ощущаемой температуры

Миссия

Рассчитывайте и выводите Heat Index (ощущаемую температуру) используя встроенную функцию библиотеки. Выводите все три значения: влажность, температура, ощущаемая температура.

02
Уровень: Normal 20m

Пороговые уведомления

Реагирование на критические значения

Миссия

Выводите предупреждения при превышении температуры > 30°C или влажности > 70%. Используйте emoji для разных уровней: ⚠️ для предупреждения, 🚨 для критического значения (T > 35°C или RH > 85%).

03
📊
Уровень: Hard 30m

Логгер данных

Запись данных в формате 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 — данные должны разойтись по столбцам.

04
🚀
Уровень: Expert 40m

Умная метеостанция

Комплексная система с дисплеем

Миссия

Создайте умную сигнализацию без дополнительных дисплеев. Подключите 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 секунды.

05
🚀

Свой Проект

Создайте уникальную метеостанцию с дисплеем, кнопками, отправкой данных в облако... Ограничений нет!

Открыть Симулятор →

Поздравляем! 🎉

Вы освоили работу с цифровыми датчиками DHT11/DHT22! Теперь вы можете создавать метеостанции, системы мониторинга и умные устройства для дома.