KY-015 — модуль датчика температуры и влажности (DHT11)

Узнайте всё о модуле KY-015 с датчиком DHT11: характеристики, распиновка, схемы подключения, даташит и примеры кода для Arduino, ESP32, ESP-IDF, ESPHome, PlatformIO, MicroPython

Окружающая среда 1-Wire

Обзор

KY-015 — это модуль температуры и влажности на основе датчика DHT11. Он предоставляет цифровой вывод для измерений температуры и влажности, что делает его идеальным для приложений мониторинга окружающей среды. Модуль использует проприетарный однопроводный протокол (1-Wire), что упрощает подключение к микроконтроллерам типа Arduino и ESP32.

KY-015 — модуль датчика температуры и влажности на базе DHT11 с однопроводным цифровым интерфейсом. Подходит для простых задач мониторинга климата, систем увлажнения и образовательных проектов.

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

О модуле KY-015 и датчике DHT11

DHT11 — это базовый цифровой датчик температуры и влажности от компании Aosong. В составе модуля KY-015 он поставляется с предустановленным резистором и удобным 3‑пиновым разъёмом. Датчик использует проприетарный однопроводный протокол (1‑Wire) для передачи данных, что требует точного соблюдения временных интервалов.

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

  • Простота подключения — всего 3 вывода: питание, земля, данные.
  • Низкая стоимость — один из самых доступных датчиков температуры и влажности.
  • Цифровой вывод — минимизирует влияние шумов по сравнению с аналоговыми сенсорами.
  • Медленная частота опроса — новое измерение каждые 2 секунды, что подходит для нетребовательных задач.

Модуль популярен в образовательных проектах, простых метеостанциях и системах контроля микроклимата, где не требуется высокая точность или частота обновления.

Где купить

Приобретите KY-015

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

Характеристики KY-015

Полные технические характеристики модуля KY-015 с датчиком DHT11.

Интерфейс
1-Wire
Точность
±2°C, ±5% RH
Диапазон
0–50°C, 20–90% RH
Питание
3.3V – 5V
Скачать полный даташит
Конфигурация пинов

Распиновка KY-015

Модуль KY-015 имеет 3 вывода: питание (VCC), землю (GND) и цифровой выход данных (DATA). Протокол обмена — 1‑Wire, реализованный на уровне библиотек.

Визуальная диаграмма распиновки
Основное
Распиновка KY-015
Всего выводов
3
Типы
Питание + 1-Wire
Быстрые советы
  • Нет стандартного адреса — каждый датчик идентифицируется по линии.
  • Точность — температура ±2°C, влажность ±5%.
  • Подтяжка — на DATA обычно уже есть резистор на модуле.
Описание выводов
Название Тип Описание Примечания
1 - (GND) Земля Подключение к GND Общая земля
2 VCC Питание Питание 3.3В или 5В Поддерживает оба напряжения
3 OUT (DATA) Данные Цифровой выход (1-Wire) Проприетарный протокол DHT
Руководство по подключению

Подключение KY-015 к ESP32

Подключите KY-015 к ESP32, используя одножильный цифровой протокол (1-Wire). Модуль уже содержит подтягивающий резистор, поэтому дополнительных компонентов не требуется. Следите за совместимостью напряжения: ESP32 работает на 3.3В, а DHT11 может питаться и 3.3В, и 5В.

Схема подключения
Рекомендуемая (1-Wire)
Подключение KY-015 к ESP32
Подключений
3
Статус
Все обязательны
Протокол
1-Wire (DHT)
Подключения пинов
Вывод KY-015 Подключение Вывод ESP32 Описание
- (GND) обязательно GND Общая земля
VCC обязательно 3.3V Питание (рекомендуется 3.3В)
OUT (DATA) обязательно GPIO4 Линия данных 1-Wire (любой GPIO)
📍 Протокол: 1-Wire (DHT) 🔧 Подтяжка: встроена ⚡ Питание: 3.3В или 5В ⏱️ Частота: каждые 2 секунды 🌡️ Диапазон: 0–50°C 💧 Влажность: 20–90%
Помощь и поддержка

Устранение неполадок KY-015

Распространённые проблемы и решения, которые помогут запустить модуль KY-015.

Датчик возвращает NaN или 0
Ардуино: "Failed to read from DHT sensor!"

Проблема: библиотека DHT не может считать данные.

Возможные причины: неправильный номер пина, отсутствие питания, слишком быстрый опрос (меньше 2 секунд), помехи на линии.

Решение: проверьте подключение DATA к указанному GPIO, убедитесь, что питание подано (3.3В или 5В), добавьте задержку минимум 2 секунды между `read()` и используйте библиотету Adafruit DHT.

Зна jumping или нестабильны
Показа то взлетают, то падают

Причины: DHT11 чувствителен к помехам, при монтаже рекомендуется ставить конденсатор 100нФ между VCC и GND рядом с датчиком.

Решение: добавьте керамический конденсатор 100 нФ параллельно питанию датчика, используйте качественные провода и не прокладывайте их рядом с силовыми цепями. Также можно усреднить несколько измерений в коде.

Нет данных при питании 3.3В
ESP32 не видит датчик

Причина: некоторые дешёвые клоны DHT11 плохо работают с 3.3В, требуется минимум 5В.

Решение: попробуйте подать 5В на пин VCC (если ваша плата это поддерживает). Убедитесь, что общая земля (GND) соединена с ESP32. Если работают оба напряжения, используйте 3.3В для безопасности ESP32.

Библиотека не компилируется в ESP-IDF
Ошибки компонента DHT

Проблема: стандартный компонент DHT в ESP-IDF может требовать дополнительной настройки.

Решение: используйте компонент dht из ESP-IDF (он уже поддерживает DHT11). В CMakeLists.txt добавьте dht в REQUIRES. Для более надежной работы можно использовать第三方компоненты, такие как esp_dht.

Советы по отладке

Serial монитор
Проверка логов и ошибок
Используйте Serial Monitor, чтобы видеть сообщения об ошибках и проверять вывод датчика. Добавьте отладочную печать в код, чтобы отслеживать состояние датчика и значение кодов ошибок.
Проверка напряжения
Мультиметр и целостность цепи
Используйте мультиметр для проверки уровней напряжения и целостности соединений. Убедитесь, что питание стабильно и соответствует требованиям (3.3В или 5В). Проверьте, что data-линия не разомкнута.

Дополнительные ресурсы

Примеры кода

Примеры программирования KY-015

Готовые к использованию примеры кода для различных платформ и фреймворков

Пример для Arduino

Совместим с Arduino IDE и платами ESP32

C++
#include <DHT.h>

// Настройки пина и типа датчика
#define DHTPIN 4        // Цифровой пин, к которому подключен DATA
#define DHTTYPE DHT11   // DHT 11 (тип датчика)

// Создаем экземпляр библиотеки DHT
DHT dht(DHTPIN, DHTTYPE);

void setup() {
    // Инициализация последовательного порта
    Serial.begin(115200);
    Serial.println("KY-015 Test — Температура и влажность:");
    
    // Инициализация датчика DHT11
    dht.begin();
}

void loop() {
    // Задержка 2 секунды между измерениями (минимум для DHT11)
    delay(2000);

    // Считывание влажности
    float h = dht.readHumidity();
    // Считывание температуры в градусах Цельсия
    float t = dht.readTemperature();

    // Проверка, удачно ли прошло чтение
    if (isnan(h) || isnan(t)) {
        Serial.println("Не удалось считать данные с датчика DHT!");
        return;
    }

    // Вывод результатов в Serial Monitor
    Serial.print("Влажность: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Температура: ");
    Serial.print(t);
    Serial.println(" °C");
}

Этот скетч Arduino использует библиотеку DHT для чтения температуры и влажности с модуля KY-015 (DHT11). Датчик подключён к цифровому пину 4. Код выводит оба значения в Serial Monitor каждые 2 секунды. Если чтение не удаётся, выводится сообщение об ошибке. Обратите внимание: DHT11 требует паузы минимум 2 секунды между измерениями.

Требуемая библиотека

Установите библиотеку DHT sensor library by Adafruit через Arduino Library Manager:

  1. Откройте Arduino IDE.
  2. Перейдите SketchInclude LibraryManage Libraries.
  3. Найдите ‘DHT sensor library’ и установите её.

🔗 Официальный репозиторий DHT library

Пример для ESP-IDF

Официальный фреймворк Espressif для разработки IoT

C++
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "dht.h"  // Компонент DHT из ESP-IDF

// Настройки пина
#define DHT_PIN GPIO_NUM_4  // Пин, к которому подключен DATA

void app_main(void) {
    printf("KY-015 (DHT11) Sensor Test\n");

    while (1) {
        int16_t temperature = 0;
        int16_t humidity = 0;

        // Чтение данных с DHT11
        // Функция возвращает ESP_OK при успешном чтении
        if (dht_read_data(DHT_TYPE_DHT11, DHT_PIN, &humidity, &temperature) == ESP_OK) {
            // Данные в формате целых чисел, делим на 10 для получения .
            printf("Humidity: %d.%d%%  Temperature: %d.%d°C\n",
                   humidity / 10, humidity % 10,
                   temperature / 10, temperature % 10);
        } else {
            printf("Could not read data from sensor (DHT11)\n");
        }

        // Ожидание следующего измерения (минимум 2 секунды для DHT11)
        vTaskDelay(pdMS_TO_TICKS(2000));
    }
}

Этот пример для ESP-IDF использует встроенный компонент dht для работы с DHT11. Датчик подключён к GPIO4. Функция dht_read_data возвращает сырые значения влажности и температуры, которые делятся на 10 для получения корректного формата с десятичными знаками. Результат выводится в консоль каждые 2 секунды.

Для добавления компонента DHT в проект, убедитесь, что в CMakeLists.txt есть:

idf_component_register(SRCS "main.c"
                    INCLUDE_DIRS ".")

и dht указан в REQUIRES вашего компонента.

Пример для ESPHome

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

YAML
# Конфигурация ESPHome для KY-015 (DHT11)
dht:
  - pin: GPIO4
    model: DHT11
    temperature:
      name: "Кухня Температура"
      unit_of_measurement: "°C"
    humidity:
      name: "Кухня Влажность"
      unit_of_measurement: "%"
    update_interval: 60s

Эта конфигурация ESPHome настраивает датчик KY-015 (DHT11) на GPIO4. Используется компонент dht с моделью DHT11. Создаются два сенсора: температура и влажность, обновляемые каждые 60 секунд. Значения автоматически публикуются в Home Assistant.

Пример для PlatformIO

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

C++

platformio.ini

[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
    adafruit/DHT sensor library

src/main.cpp

#include <Arduino.h>
#include <DHT.h>

// Настройки пина и типа датчика
#define DHTPIN 4        // Пин, к которому подключен DATA
#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
    Serial.begin(115200);
    Serial.println("KY-015 (DHT11) Test");

    // Инициализация датчика
    dht.begin();
}

void loop() {
    // Ждём не менее 2 секунд между измерениями
    delay(2000);

    // Считывание данных
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    // Проверка на ошибки
    if (isnan(h) || isnan(t)) {
        Serial.println("Ошибка чтения с датчика DHT!");
        return;
    }

    // Вывод значений
    Serial.print("Влажность: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Температура: ");
    Serial.print(t);
    Serial.println(" °C");
}

Конфигурация PlatformIO для ESP32 с фреймворком Arduino и библиотекой DHT sensor library. Код инициализирует датчик на GPIO4 и выводит показания каждые 2 секунды в Serial Monitor. Формат вывода совпадает с Arduino-примером.

Пример для MicroPython

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

Python
# Установите библиотеку dht через upip или скопируйте в папку lib:
# import upip; upip.install('micropython-dht')

import machine
import time
import dht  # Встроенная библиотека dht в MicroPython

# Инициализация пина для данных
pin = machine.Pin(4, machine.Pin.IN, machine.Pin.PULL_UP)

# Создание объекта датчика DHT11
sensor = dht.DHT11(pin)

while True:
    try:
        # Запуск измерения
        sensor.measure()
        
        # Чтение температуры и влажности
        temp = sensor.temperature()  # °C
        hum = sensor.humidity()      # %
        
        # Вывод значений
        print("Температура: {} °C  Влажность: {} %".format(temp, hum))
        
    except OSError as e:
        print("Ошибка чтения датчика DHT11:", e)
    
    # Задержка перед следующим измерением (минимум 2 секунды)
    time.sleep(2)

Этот скрипт MicroPython использует встроенную библиотеку dht для работы с DHT11. Датчик подключён к GPIO4. Каждые 2 секунды производится измерение, и значения температуры и влажности выводятся в консоль. В случае ошибки чтения выводится сообщение. Обратите внимание: machine.Pin.PULL_UP активирует внутренний подтягивающий резистор, что рекомендуется для DHT-датчиков.

Итоги KY-015

Модуль **KY-015 с DHT11** — это простой и недорогой датчик температуры и влажности с однопроводным интерфейсом. Подходит для базовых проектов, обучения и нетребовательных систем мониторинга микроклимата. Поддерживается на всех популярных платформах: Arduino, ESP-IDF, ESPHome, PlatformIO и MicroPython.

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

Для стабильной работы используйте конденсатор 100 нФ параллельно питанием датчика. Выбирайте GPIO без конфликтов и соблюдайте паузу минимум 2 секунды между чтениями. Для улучшенной точности рассмотрите DHT22.

Безопасность прежде всего

Проверяйте совместимость напряжения: при питании 5В убедитесь, что сигнальный пин платы является 5В-терпимым. ESP32 требует 3.3В на своих пинах, поэтому лучше питать DHT11 от 3.3В.

Готовы начать создавать?

Теперь, когда у вас есть вся необходимая информация, пора интегрировать KY-015 в проект на ESP32 и воплотить идеи в жизнь!