Датчик температуры и влажности DHT11: руководство для Arduino, ESP32 и Pico
Что такое датчик температуры и влажности DHT11 и как он работает? Подключение к Arduino, библиотека DHT, пример кода, отличия DHT11 от DHT22, работа с ESP32 и Pico и частые ошибки.
DHT11 — недорогой цифровой датчик в синем пластиковом корпусе, который по одному проводу данных передаёт и температуру, и относительную влажность. Он встречается почти в каждой метеостанции на Arduino, системе контроля теплицы и цветов, термометре для детской и проекте умного дома, который включает вентилятор при росте влажности. В отличие от аналогового датчика, здесь не нужно измерять напряжение и возиться с формулами: датчик отправляет показание готовым числом.

Что такое DHT11 и где он используется?
Датчик измеряет относительную влажность: сколько процентов от максимально возможного при данной температуре количества водяного пара содержит воздух. Комфортной считается влажность 40–60%; выше 70% — это сырость и плесень, ниже 30% — сухой воздух. DHT11 измеряет это значение и температуру окружающей среды примерно раз в секунду.
- Домашняя метеостанция: вывод температуры и влажности на LCD- или OLED-дисплей.
- Контроль теплицы и растений: предупреждение при падении влажности и полив вместе с датчиком влажности почвы.
- Сигнализация сырости и плесени: звуковой сигнал, когда в ванной, подвале или шкафу влажность превышает 70%.
- Автоматический вентилятор или осушитель: включение устройства через реле при превышении порога влажности.
- Регистратор данных: запись показаний на SD-карту и построение графика за день.
- Удалённый мониторинг: с помощью ESP32 значения выводятся на веб-страницу, которую можно открыть с телефона.
Как работает DHT11?
Внутри корпуса два чувствительных элемента. Элемент влажности — это влагопоглощающий материал между двумя электродами: чем выше влажность воздуха, тем ниже его сопротивление. Температура измеряется NTC-термистором — маленьким резистором, сопротивление которого падает при нагреве. Крошечный микроконтроллер внутри датчика измеряет оба сопротивления, корректирует их по калибровочным значениям, записанным на заводе, и отправляет результат в цифровом виде.
Обмен данными идёт по одному проводу. Arduino будит датчик, удерживая линию данных в состоянии LOW не меньше 18 миллисекунд, а датчик отвечает пакетом из 40 бит: 16 бит влажности, 16 бит температуры и 8-битная контрольная сумма, чтобы отлавливать ошибочные показания. Писать эти тайминги самому не нужно: библиотека, которую мы установим ниже, всё сделает за тебя.
Характеристики: DHT11 и DHT22
| Параметр | DHT11 | DHT22 (AM2302) |
|---|---|---|
| Напряжение питания | 3–5,5 V | 3,3–6 V |
| Ток во время измерения | 0,5–2,5 mA | 1–1,5 mA |
| Диапазон температур | 0–50 °C | −40–80 °C |
| Точность по температуре | ±2 °C | ±0,5 °C |
| Диапазон влажности | 20–90% | 0–100% |
| Точность по влажности | ±5% | ±2% (макс. ±5%) |
| Разрешение | 1 °C / 1% | 0,1 °C / 0,1% |
| Частота опроса | Раз в секунду | Раз в 2 секунды |
| Цвет корпуса | Синий | Белый |

Коротко: если нужно примерно следить за температурой и влажностью в помещении, хватит DHT11, и он дешевле. На улице, при минусовой температуре или там, где важны полградуса, выбирай DHT22. Подключение и код у них одинаковые; в коде меняется только тип датчика.
Распиновка и подключение DHT11
DHT11 продаётся в двух вариантах: модуль с 3 пинами, на плате которого есть резистор и светодиод, или голый датчик с 4 ножками. У голого датчика ножки считают слева направо, повернув его решёткой к себе.
| Сигнал | Модуль с 3 пинами | Датчик с 4 ножками | Куда подключать |
|---|---|---|---|
| Питание | VCC (+) | Ножка 1 | 5V (на ESP32 и Pico — 3V3) |
| Данные | DATA / OUT / S | Ножка 2 | Цифровой пин (на Uno — D2) |
| Не используется | — | Ножка 3 | Не подключается |
| Земля | GND (−) | Ножка 4 | GND |
Установка библиотеки DHT
- Открой в Arduino IDE «Менеджер библиотек» (Library Manager); в Arduino IDE 2 это значок книги на левой панели.
- Введи в поиске DHT sensor library и установи библиотеку от Adafruit.
- Когда появится вопрос о зависимостях, выбери Установить все (Install all), чтобы заодно установилась Adafruit Unified Sensor.
- При желании попробуй готовый пример: «Файл › Примеры › DHT sensor library › DHTtester».
Пример кода для Arduino: температура, влажность и ощущаемая температура
Код ниже снимает показания раз в две секунды, сообщает, если чтение не удалось, и по температуре и влажности рассчитывает индекс жары (heat index — насколько жарко ощущается). Чтобы увидеть результаты, открой «Монитор порта» (Serial Monitor) на скорости 9600 бод.
1#include <DHT.h>
2
3#define DHT_PIN 2 // veri pini / data pin
4#define DHT_TYPE DHT11 // DHT22 kullanıyorsan DHT22 yaz / write DHT22 for a DHT22
5
6DHT dht(DHT_PIN, DHT_TYPE);
7
8void setup() {
9 Serial.begin(9600);
10 dht.begin();
11}
12
13void loop() {
14 delay(2000); // ölçümler arası bekleme / wait between readings
15
16 float humidity = dht.readHumidity(); // % bağıl nem / % relative humidity
17 float temperature = dht.readTemperature(); // °C
18
19 if (isnan(humidity) || isnan(temperature)) {
20 Serial.println("Okuma hatası / read error");
21 return;
22 }
23
24 // hissedilen sıcaklık / heat index (°C)
25 float heatIndex = dht.computeHeatIndex(temperature, humidity, false);
26
27 Serial.print("Sicaklik / Temp: ");
28 Serial.print(temperature);
29 Serial.print(" C Nem / Humidity: %");
30 Serial.print(humidity);
31 Serial.print(" Hissedilen / Feels like: ");
32 Serial.print(heatIndex);
33 Serial.println(" C");
34}DHT11 с ESP32
На ESP32 работает тот же код; достаточно задать DHT_PIN, например, равным 4. Питай датчик от пина 3V3 платы ESP32, чтобы линия данных тоже оставалась на 3,3 V; DHT11 спокойно работает при таком напряжении. GPIO 34–39 работают только на вход, поэтому для DHT не подходят: линия данных двунаправленная. При выборе пина проверь в утилите Распиновка, какие пины ESP32 безопасны. Показания можно вывести на веб-страницу по Wi-Fi и следить за ними с телефона.
DHT11 с Raspberry Pi Pico (MicroPython)
В MicroPython есть встроенный модуль dht для датчиков DHT, так что устанавливать библиотеку не нужно. Подключи датчик к пину 3V3 платы Pico, к GND и к пину GP15:
1import dht
2from machine import Pin
3import time
4
5sensor = dht.DHT11(Pin(15)) # GP15 veri pini / data pin (DHT22 için dht.DHT22)
6
7while True:
8 try:
9 sensor.measure()
10 t = sensor.temperature() # °C
11 h = sensor.humidity() # %
12 print("Sicaklik:", t, "C Nem: %", h)
13 except OSError:
14 print("Okuma hatası / read error")
15 time.sleep(2)Идеи проектов с DHT11
- Цифровой термометр с LCD: выводи значения на дисплей 16x2; как это сделать, рассказано в статье Как подключить I2C LCD-дисплей.
- Вентилятор с управлением по влажности: включай вентилятор через реле, когда влажность превышает 65%; подключение описано в статье Что такое модуль реле?
- Сигнализация сырости: включай зуммер при превышении порога; о звуковых сигналах рассказывает статья Что такое зуммер?.
- Регистратор температуры: сохраняй показания каждые 10 минут с помощью модуля часов и SD-карты.
- Метеостанция с Wi-Fi: публикуй показания с ESP32 на странице, которую можно открыть с любого устройства в домашней сети.
Частые ошибки и как их исправить
- Постоянно NaN или «Failed to read»: возможно, провод данных подключён не к тому пину, что указан в коде, нет подтягивающего резистора или в коде указан неверный тип датчика (DHT22 вместо DHT11).
- Слишком частое чтение: если опрашивать датчик чаще чем раз в 2 секунды, он возвращает старое значение или ошибку.
- Температура выше реальной: датчик может стоять слишком близко к стабилизатору напряжения Arduino или на солнце; размести его в нескольких сантиметрах от платы.
- Пропуски показаний на длинном кабеле: через несколько метров сигнал ослабевает; уменьши подтягивающий резистор до 4,7 kΩ, питай датчик от 5 V и используй качественный кабель.
- Нестабильная работа на ESP32: если датчик питается от 5 V, линия данных подтягивается к 5 V; питай его от 3V3 и используй GPIO, который может работать и на вход, и на выход (например, 4).
- Ожидание мгновенной реакции: на изменение влажности датчику нужно несколько секунд; DHT11 рассчитан на контроль помещения, а не на быстрые измерения.
Если интересно, какие ещё датчики можно использовать, загляни в руководство по датчикам для Arduino, а чтобы измерять расстояние, — в статью Датчик расстояния HC-SR04. В приложении BlueGrays есть пошаговые проекты с DHT11 и DHT22 со схемами и кодом.
Частые вопросы
Что купить: DHT11 или DHT22?
Чтобы примерно следить за температурой и влажностью в помещении, хватит DHT11, и он дешевле. Для улицы, минусовых температур или точности ±0,5 °C бери DHT22. В коде нужно лишь поменять тип датчика на DHT22.
Почему DHT11 возвращает NaN или «Failed to read from DHT sensor»?
Самые частые причины — неверный пин данных, отсутствие подтягивающего резистора, неправильный тип датчика в коде и слишком частое чтение. Проверь подключение, поставь резистор 10 kΩ на голый датчик и делай паузу 2 секунды между чтениями.
DHT11 показывает неправильную температуру. Как его откалибровать?
Погрешность ±2 °C для DHT11 нормальна. Положи датчик рядом с термометром, которому можно доверять, запиши разницу и в коде прибавляй или вычитай эту постоянную поправку из показания. Следи, чтобы датчик был подальше от нагревающихся деталей.
Работает ли DHT11 от 3,3 V?
Да, DHT11 работает от 3 до 5,5 V. На платах с 3,3 V, таких как ESP32 и Raspberry Pi Pico, лучше всего питать его от пина 3V3: тогда на линии данных никогда не будет 5 V.
Можно ли использовать DHT11 на улице или рядом с водой?
DHT11 не водонепроницаемый: дождь, конденсат и прямое солнце портят датчик или искажают показания. На улице держи его в вентилируемом коробе в тени, а для измерения температуры воды лучше подойдёт водонепроницаемый DS18B20.
Можно ли подключить к Arduino несколько DHT11?
Да, но каждому датчику нужен свой пин данных: общую линию данных они использовать не могут. В коде для каждого создаётся отдельный объект DHT, например DHT dht1(2, DHT11) и DHT dht2(3, DHT11).
Что собрать после прочтения
Все проекты
Температура и влажность с DHT11
Насколько тепло в твоей комнате и влажный ли воздух или сухой? Датчик DHT11 измеряет температуру и влажность, а Arduino выводит значения на двухстрочный LCD-экран и обновляет их каждые пару секунд. Ес

Температура и влажность с DHT22 на ESP32 (с LCD-дисплеем)
Этот проект измеряет температуру и влажность воздуха датчиком DHT22 и в реальном времени показывает данные на I2C LCD 16x2. Данные читаются с датчика по однопроводному протоколу через библиотеку Adafruit DHT. Проект служит основой для IoT-метеостанций, умного дома или систем мониторинга среды в теплицах. Связь с DHT22 идёт через пин GPIO 4 у ESP32.

Регистратор температуры на ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
Собери на ESP32 регистратор температуры с отметками времени! Каждую минуту читай температуру и влажность с DHT22, бери реальное время из DS1307 RTC и записывай всё на карту microSD в формате CSV. OLED показывает текущую температуру (крупным шрифтом), влажность в процентах, время и счётчик записей. Файл /temp_log.csv на SD-карте открывается в Excel, Google Sheets или Python pandas — идеально для теплиц, комнат, лабораторий и хранения продуктов.

Часы, календарь и метеостанция на матрице (MAX7219, DS1307)
Табло с бегущей строкой для стола или стены, которое по очереди показывает время, дату и погоду в комнате. На светодиодном дисплее 8x32 сначала видна температура в градусах Цельсия и Фаренгейта, затем

Измерение температуры с NTC и LCD-дисплеем 2x16
Измерь температуру вокруг с помощью датчика, похожего на крошечную бусинку. Эта деталь, NTC, при нагреве легче пропускает электричество; Arduino читает это изменение, по формуле переводит его в градус

ESP32 HTTPClient + API погоды (с экраном LCD)
В этом проекте ESP32 через HTTPClient.h делает вызов REST API к сервису погоды (wttr.in) через интернет. Полученный ответ в JSON разбирается с помощью ArduinoJson v7, а город, температура, влажность, погода и ветер выводятся на I2C LCD на турецком и английском. wttr.in бесплатен и не требует ключа API — достаточно указать любое название города, чтобы получить текущую погоду. Данные автоматически обновляются каждые 30 минут.

Умная станция полива
Садовник, который сам поливает растения, чтобы они не засохли, пока ты в отпуске. Датчик влажности почвы измеряет, насколько влажная земля; когда она сохнет, Arduino на несколько секунд включает водян
Другие статьи
Приложение BlueGrays
Собери эту схему шаг за шагом в телефоне
Схема подключения, код и список деталей на одном экране. 200+ проектов на Arduino, ESP32 и Pico готовы к сборке.
Наведи камеру телефона
Наведи камеру на код — откроется магазин приложений на телефоне.
или открыть магазин

