Обзор
DHT11 — это недорогой цифровой датчик для измерения температуры и влажности. Он обеспечивает калиброванные цифровые выходы и прост в подключении к микроконтроллерам. Благодаря диапазону измерения температуры 0-50°C и влажности 20-90%, он подходит для базовых задач мониторинга окружающей среды.
DHT11 — это недорогой цифровой датчик для измерения температуры и влажности. Он использует собственный протокол связи и обеспечивает калиброванные цифровые выходы. Датчик широко используется в проектах Arduino, ESP32 и Raspberry Pi благодаря простоте подключения и низкой стоимости.
⚡ Ключевые особенности
- Низкая стоимость — отличное соотношение цена/качество
- Цифровой выход — не требует АЦП
- Простой протокол — однопроводной интерфейс
- Калибровка — встроенная заводская калибровка
- Широкий диапазон питания — 3.3V - 5V
Приобретите DHT11
Технические характеристики DHT11
Распиновка DHT11
Питание (3.3V - 5V)
Линия данных (требуется подтяжка 4.7kΩ)
Не используется
Земля
| Вывод | Название | Описание |
|---|---|---|
| 1 | VCC | Питание (3.3В – 5.5В) |
| 2 | DATA | Передача данных (однопроводной интерфейс) |
| 3 | NC | Не используется |
| 4 | GND | Земля (0В) |
Подключение DHT11 к ESP32
| Вывод DHT11 | Микроконтроллер | Описание |
|---|---|---|
| VCC | 3.3V / 5V | Питание датчика |
| DATA | GPIO (например, 4) | Линия данных (с подтяжкой 4.7кОм) |
| GND | GND | Общий провод |
- 🔧 Резистор подтяжки — используйте 4.7кОм - 10кОм между DATA и VCC
- ⏱️ Задержка опроса — не чаще 1 раза в 2 секунды
- 📏 Длина провода — до 20 метров (используйте витую пару)
Устранение неполадок DHT11
Показания "0" или "-1"
Датчик не отвечает
Показания "0" или "-1"
Датчик не отвечает
Проблема: Датчик возвращает пустые или ошибочные значения.
Причины:
- Неправильное подключение DATA пина
- Отсутствует резистор подтяжки 4.7кОм
- Слишком высокая частота опроса (нужно > 2 сек)
- Неправильный выбор типа датчика в коде (DHT11 vs DHT22)
Решение: Проверьте схему, добавьте резистор и увеличьте delay() в коде.
Ошибка CRC
Несовпадение контрольной суммы
Ошибка CRC
Несовпадение контрольной суммы
Проблема: Данные искажаются при передаче.
Причина: Электромагнитные помехи или нестабильное питание.
Решение: Добавьте конденсатор 100нФ между VCC и GND датчика, укоротите провода.
Примеры программирования DHT11
Arduino
Совместимо с Arduino IDE и ESP32
C++
Arduino
Совместимо с Arduino IDE и ESP32
#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++
ESP-IDF
Официальный фреймворк Espressif
#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
ESPHome
Конфигурация для Home Assistant
sensor:
- platform: dht
pin: GPIO4
model: DHT11
temperature:
name: "Температура комнаты"
humidity:
name: "Влажность комнаты"
update_interval: 60s
Конфигурация ESPHome для подключения DHT11 к GPIO4. Датчик автоматически создает сенсоры в Home Assistant.
PlatformIO
Профессиональная среда разработки
C++
PlatformIO
Профессиональная среда разработки
platformio.ini:
[env:esp32dev]
platform = espressif32
framework = arduino
lib_deps =
adafruit/DHT sensor library @ ^1.4.6
Используйте тот же код, что и для Arduino, добавив нужную библиотеку в зависимости проекта.
MicroPython
Python для микроконтроллеров
Python
MicroPython
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 к вашему проекту!
Похожие датчики
Ищете альтернативы DHT11? Посмотрите эти похожие датчики.