Обзор
KY-015 — это модуль температуры и влажности на основе датчика DHT11. Он предоставляет цифровой вывод для измерений температуры и влажности, что делает его идеальным для приложений мониторинга окружающей среды. Модуль использует проприетарный однопроводный протокол (1-Wire), что упрощает подключение к микроконтроллерам типа Arduino и ESP32.
KY-015 — модуль датчика температуры и влажности на базе DHT11 с однопроводным цифровым интерфейсом. Подходит для простых задач мониторинга климата, систем увлажнения и образовательных проектов.
О модуле KY-015 и датчике DHT11
DHT11 — это базовый цифровой датчик температуры и влажности от компании Aosong. В составе модуля KY-015 он поставляется с предустановленным резистором и удобным 3‑пиновым разъёмом. Датчик использует проприетарный однопроводный протокол (1‑Wire) для передачи данных, что требует точного соблюдения временных интервалов.
⚡ Ключевые особенности
- Простота подключения — всего 3 вывода: питание, земля, данные.
- Низкая стоимость — один из самых доступных датчиков температуры и влажности.
- Цифровой вывод — минимизирует влияние шумов по сравнению с аналоговыми сенсорами.
- Медленная частота опроса — новое измерение каждые 2 секунды, что подходит для нетребовательных задач.
Модуль популярен в образовательных проектах, простых метеостанциях и системах контроля микроклимата, где не требуется высокая точность или частота обновления.
Приобретите KY-015
Характеристики KY-015
Полные технические характеристики модуля KY-015 с датчиком DHT11.
Распиновка KY-015
Модуль KY-015 имеет 3 вывода: питание (VCC), землю (GND) и цифровой выход данных (DATA). Протокол обмена — 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В.
| Вывод KY-015 | Подключение | Вывод ESP32 | Описание |
|---|---|---|---|
| - (GND) обязательно | → | GND | Общая земля |
| VCC обязательно | → | 3.3V | Питание (рекомендуется 3.3В) |
| OUT (DATA) обязательно | → | GPIO4 | Линия данных 1-Wire (любой GPIO) |
Устранение неполадок 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 монитор
Проверка логов и ошибок
Проверка напряжения
Мультиметр и целостность цепи
Дополнительные ресурсы
Примеры программирования KY-015
Готовые к использованию примеры кода для различных платформ и фреймворков
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
C++
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
#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:
- Откройте Arduino IDE.
- Перейдите Sketch → Include Library → Manage Libraries.
- Найдите ‘DHT sensor library’ и установите её.
Пример для ESP-IDF
Официальный фреймворк Espressif для разработки IoT
C++
Пример для ESP-IDF
Официальный фреймворк Espressif для разработки IoT
#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
Конфигурация ESPHome для Home Assistant
# Конфигурация 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
Профессиональная среда разработки
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
Пример для MicroPython
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 и воплотить идеи в жизнь!
Изучите альтернативные датчики
Ищете альтернативы **KY-015**? Посмотрите эти похожие датчики — возможно, они лучше подойдут под задачи вашего проекта.

KY-019 5V Relay Module
Модуль реле KY-019 включает 5V реле и драйвер, позволяя микроконтроллерам управлять высоковольтными устройствами. Поддерживает как переменный, так и постоянный ток.

KY-027 Magic Light Cup Module
Модуль детектирования наклонов KY-027 использует ртутный переключатель и светодиод. Он реагирует на изменения угла наклона или ориентации и может...

KY-040 Rotary Encoder Module
Модуль энкодера KY-040 выдаёт цифровые сигналы, соответствующие углу поворота и направлению. Имеет тактовый выход и Determining...