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

Изучите всё о датчике DHT11: технические характеристики, распиновка, схемы подключения, datasheet и примеры кода для ESP32, Arduino, Raspberry

Окружающая среда Цифровой

Обзор

DHT11 — это недорогой цифровой датчик для измерения температуры и влажности. Он обеспечивает калиброванные цифровые выходы и прост в подключении к микроконтроллерам. Благодаря диапазону измерения температуры 0-50°C и влажности 20-90%, он подходит для базовых задач мониторинга окружающей среды.

DHT11 — это недорогой цифровой датчик для измерения температуры и влажности. Он использует собственный протокол связи и обеспечивает калиброванные цифровые выходы. Датчик широко используется в проектах Arduino, ESP32 и Raspberry Pi благодаря простоте подключения и низкой стоимости.

Датчик DHT11
Быстрая навигация
Основные разделы статьи
Примеры кода
Популярные платформы

Ключевые особенности

  • Низкая стоимость — отличное соотношение цена/качество
  • Цифровой выход — не требует АЦП
  • Простой протокол — однопроводной интерфейс
  • Калибровка — встроенная заводская калибровка
  • Широкий диапазон питания — 3.3V - 5V
Где купить

Приобретите DHT11

Характеристики

Технические характеристики DHT11

Интерфейс
Цифровой (1-Wire)
Диапазон температуры
0 ~ 50 °C
Диапазон влажности
20 ~ 90 % RH
Напряжение питания
3.3V - 5V DC
Распиновка

Распиновка DHT11

Распиновка DHT11
1
VCC

Питание (3.3V - 5V)

2
DATA

Линия данных (требуется подтяжка 4.7kΩ)

3
NC

Не используется

4
GND

Земля

Вывод Название Описание
1 VCC Питание (3.3В – 5.5В)
2 DATA Передача данных (однопроводной интерфейс)
3 NC Не используется
4 GND Земля (0В)
Подключение

Подключение DHT11 к ESP32

Подключение DHT11 к ESP32
Статус
Активен
DHT11
Подлючений
3 провода
Цифровой
Вывод DHT11 Микроконтроллер Описание
VCC 3.3V / 5V Питание датчика
DATA GPIO (например, 4) Линия данных (с подтяжкой 4.7кОм)
GND GND Общий провод
Важные примечания
  • 🔧 Резистор подтяжки — используйте 4.7кОм - 10кОм между DATA и VCC
  • ⏱️ Задержка опроса — не чаще 1 раза в 2 секунды
  • 📏 Длина провода — до 20 метров (используйте витую пару)
Отладка и ошибки

Устранение неполадок DHT11

Показания "0" или "-1"

Датчик не отвечает

Проблема: Датчик возвращает пустые или ошибочные значения.

Причины:

  • Неправильное подключение DATA пина
  • Отсутствует резистор подтяжки 4.7кОм
  • Слишком высокая частота опроса (нужно > 2 сек)
  • Неправильный выбор типа датчика в коде (DHT11 vs DHT22)

Решение: Проверьте схему, добавьте резистор и увеличьте delay() в коде.

Ошибка CRC

Несовпадение контрольной суммы

Проблема: Данные искажаются при передаче.

Причина: Электромагнитные помехи или нестабильное питание.

Решение: Добавьте конденсатор 100нФ между VCC и GND датчика, укоротите провода.

Примеры кода

Примеры программирования DHT11

Arduino

Совместимо с Arduino IDE и ESP32

C++
#include <DHT.h>

#define DHTPIN 4     // Пин данных
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
  Serial.println("Датчик DHT11 инициализирован!");
}

void loop() {
  // Задержка между измерениями (DHT11 мин. 2 секунды)
  delay(2000);
  
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  
  // Проверка на ошибки чтения
  if (isnan(h) || isnan(t)) {
    Serial.println("Ошибка чтения с датчика DHT11!");
    return;
  }
  
  Serial.print("Влажность: ");
  Serial.print(h);
  Serial.println(" %");
  
  Serial.print("Температура: ");
  Serial.print(t);
  Serial.println(" °C");
}

Пример использует библиотеку DHT для чтения данных с датчика. Подключите пин DATA к GPIO4 (можно изменить на любой цифровой пин).

Требуемая библиотека: Установите DHT sensor library через Arduino Library Manager.

ESP-IDF

Официальный фреймворк Espressif

C++
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"

#define DHT11_PIN GPIO_NUM_4

// Пример чтения датчика напрямую через GPIO 
// Для стабильной работы рекомендуется использовать компоненты ESP-IDF-DHT
void read_dht11_task(void *pvParameters) {
    while(1) {
        printf("Чтение данных с DHT11 на GPIO4...\n");
        // Логика чтения протокола 1-Wire
        vTaskDelay(pdMS_TO_TICKS(2000));
    }
}

void app_main() {
    xTaskCreate(read_dht11_task, "dht11_task", 2048, NULL, 5, NULL);
}

Пример для ESP-IDF требует реализации временных задержек протокола 1-Wire. Рекомендуется использовать готовые компоненты из реестра IDF.

ESPHome

Конфигурация для Home Assistant

YAML
sensor:
  - platform: dht
    pin: GPIO4
    model: DHT11
    temperature:
      name: "Температура комнаты"
    humidity:
      name: "Влажность комнаты"
    update_interval: 60s

Конфигурация ESPHome для подключения DHT11 к GPIO4. Датчик автоматически создает сенсоры в Home Assistant.

PlatformIO

Профессиональная среда разработки

C++

platformio.ini:

[env:esp32dev]
platform = espressif32
framework = arduino
lib_deps =
    adafruit/DHT sensor library @ ^1.4.6

Используйте тот же код, что и для Arduino, добавив нужную библиотеку в зависимости проекта.

MicroPython

Python для микроконтроллеров

Python
from machine import Pin
import dht
import time

sensor = dht.DHT11(Pin(4))

while True:
    time.sleep(2)
    sensor.measure()
    print(f"Температура: {sensor.temperature()}°C")
    print(f"Влажность: {sensor.humidity()}%")

MicroPython имеет встроенную поддержку DHT11. Подключите датчик к GPIO4.

Итоги DHT11

Датчик DHT11 — это отличный выбор для базовых проектов мониторинга окружающей среды. Благодаря низкой стоимости и простоте подключения, он широко используется в образовательных проектах и прототипировании.

Рекомендации

Для лучшей точности используйте резистор подтяжки 4.7кОм. Не опрашивайте датчик чаще 1 раза в 2 секунды.

Ограничения

DHT11 имеет ограниченную точность. Для более точных измерений используйте DHT22 или датчики серии SHT.

Готовы начать?

Теперь, когда у вас есть вся необходимая информация, пришло время подключить DHT11 к вашему проекту!