Обзор
KY-001 — это модуль датчика температуры, работающий в широком диапазоне температур. Он использует протокол 1-Wire и основан на популярном цифровом датчике DS18B20. Этот модуль идеально подходит для проектов мониторинга температуры, требующих точных и надёжных показаний.
KY-001 — это модуль датчика температуры на базе DS18B20 с интерфейсом 1-Wire. Он обеспечивает высокую точность и широкий диапазон измерений, что делает его отличным выбором для метеостанций, умного дома и промышленных систем.
О датчике температуры KY-001
KY-001 — это модуль датчика температуры на базе цифрового датчика DS18B20. Он обменивается данными по протоколу 1-Wire, что обеспечивает простую интеграцию с ESP32, Arduino и другими микроконтроллерами. С высокой точностью и широким диапазоном температур он идеально подходит для мониторинга температуры в умном доме, метеостанциях и промышленных системах.
⚡ Ключевые особенности
- На базе DS18B20 — обеспечивает надёжные и точные измерения температуры.
- Высокая точность — ±0.5°C в диапазоне от -10°C до +85°C.
- Широкий рабочий диапазон — поддерживает от -55°C до +125°C.
- Протокол 1-Wire — простое подключение одним проводом данных.
- Требует резистор подтяжки 4.7кОм — для стабильной работы между_DATA_ и VCC.
🔗 Подробнее о датчике DS18B20.
Приобретите KY-001
Характеристики KY-001
Полные технические характеристики модуля датчика температуры KY-001.
Распиновка KY-001
KY-001 — это трехконтактный модуль датчика температуры на базе чипа DS18B20:
- Протокол: 1-Wire (Dallas/Maxim single-wire).
- Основа: цифровой сенсор DS18B20.
- Резистор подтяжки: 4.7кОм между DATA и VCC.
| № | Название | Тип | Описание | Примечания |
|---|---|---|---|---|
| 1 | GND | Питание | Подключение земли | Общая земля |
| 2 | VCC | Питание | Питание | 3.3В или 5В |
| 3 | DATA | 1-Wire Data | Линия данных 1-Wire | Требует резистор подтяжки 4.7кОм |
Подключение KY-001 к ESP32
Для подключения KY-001 к ESP32 используйте протокол 1-Wire. Требуется резистор подтяжки 4.7кОм между контактом DATA и VCC.
| Вывод KY-001 | Подключение | Вывод ESP32 | Описание |
|---|---|---|---|
| GND обязательно | → | GND | Общая земля |
| VCC обязательно | → | 3.3V или 5V | Питание (3.3В или 5В) |
| DATA обязательно | → | GPIO4 (или любой) | Линия данных 1-Wire (с резистором 4.7кОм) |
Устранение неполадок KY-001
Распространённые проблемы и решения, которые помогут запустить датчик.
Датчик не обнаруживается (сканер 1-Wire ничего не находит)
Возвращается -127°C или нет данных
Проблема: модуль не отвечает по 1-Wire, библиотека не находит устройство.
Возможные причины: неправильное подключение, отсутствие резистора 4.7кОм между DATA и VCC, неисправность датчика.
Решение: проверьте все соединения, установите подтягивающий резистор, убедитесь в питании 3.3В или 5В. Попробуйте сканирующий код OneWire для поиска адресов.
Температура постоянно -127°C
Критическая ошибка сенсора
Причина: датчик не получает питание, повреждён или не ответил вовремя.
Решение: проверьте напряжение на контактах VCC и GND, убедитесь в отсутствии коротких замыканий, попробуйте другой пин для DATA. Значение -127°C — это код ошибки DS18B20.
Показания скачут или неточные
Шумы на линии или плохая схема
Причины: длинные провода без экранирования, отсутствие или неправильное значение подтяжки, помехи от соседних компонентов.
Решение: используйте экранированный кабель для длинных линий, убедитесь в наличии резистора 4.7кОм, разместите датчик вдали от источников электромагнитных помех.
Код CRC error или Device not responding
Ошибка контрольной суммы или отсутствие ответа
Причина: нарушение временных диаграмм 1-Wire из-за длинных проводов или высокого уровня помех.
Решение: сократите длину линии, добавьте конденсатор 100нФ между VCC и GND рядом с датчиком, проверьте целостность подтяжки. Убедитесь, что на линии нет других устройств 1-Wire с конфликтующими адресами.
Советы по отладке
Serial монитор
Проверка логов и ошибок
Проверка напряжения
Мультиметр и целостность цепи
Дополнительные ресурсы
Примеры программирования KY-001
Готовые к использованию примеры кода для различных платформ и фреймворков.
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
C++
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
#include <OneWire.h>
#include <DallasTemperature.h>
// Контакт данных 1-Wire (подключите DATA KY-001 к этому пину)
#define ONE_WIRE_BUS 4
// Создаём объекты OneWire и DallasTemperature
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
// Инициализация Serial Monitor
Serial.begin(115200);
Serial.println("Пример датчика KY-001");
// Запуск библиотеки DallasTemperature
sensors.begin();
Serial.println("Датчик KY-001 инициализирован.");
}
void loop() {
// Запрос на чтение температуры всех датчиков на шине
sensors.requestTemperatures();
// Получение температуры с первого датчика (индекс 0)
float tempC = sensors.getTempCByIndex(0);
// Вывод значения в Serial Monitor
Serial.print("Температура: ");
Serial.print(tempC);
Serial.println(" °C");
// Задержка между измерениями
delay(2000);
}
Этот Arduino-скетч использует библиотеки OneWire и DallasTemperature для работы с KY-001 по протоколу 1-Wire. В функции setup() инициализируется последовательный порт и библиотека датчиков. В loop() каждые 2 секунды запрашивается температура и выводится в монитор порта. Контакт данных 1-Wire подключен к пину GPIO4 (можно изменить на любой другой).
Требуемые библиотеки
Установите следующие библиотеки через Arduino Library Manager:
- OneWire — парадрайвер шины 1-Wire
- DallasTemperature — надстройка для удобной работы с DS18B20
Пример для 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 "onewire.h"
#include "ds18b20.h"
#define ONE_WIRE_GPIO GPIO_NUM_4 // Пин данных 1-Wire
void app_main(void) {
printf("KY-001 Sensor Test\n");
// Инициализация 1-Wire шины
onewire_bus_handle_t bus = onewire_bus_init(ONE_WIRE_GPIO);
// Буфер для ROM-кода датчика
uint8_t rom_code[8];
// Поиск первого датчика на шине
if (!onewire_search_first(bus, rom_code, false)) {
printf("Датчик не найден. Проверьте подключение.\n");
return;
}
printf("Датчик KY-001 обнаружен. Начинаю чтение.\n");
while (1) {
float temp;
// Запуск преобразования температуры
ds18b20_start_conversion(bus, rom_code);
// Ожидание завершения (750мс для 12-битного разрешения)
vTaskDelay(pdMS_TO_TICKS(750));
// Чтение температуры
ds18b20_get_temperature(bus, rom_code, &temp);
// Вывод результата
printf("Температура: %.2f°C\n", temp);
// Задержка между измерениями
vTaskDelay(pdMS_TO_TICKS(2000));
}
}
Этот пример для ESP-IDF использует компоненты onewire и ds18b20 из официального репозитория ESP-IDF. В функции app_main() инициализируется шина 1-Wire на GPIO4, затем выполняется поиск датчика по уникальному ROM-коду. В бесконечном цикле каждые 2 секунды запускается преобразование, ожидается завершение и выводится температура.
Требуемые компоненты
Добавьте в CMakeLists.txt:
idf_component_register(
SRCS "main.c"
INCLUDE_DIRS "."
REQUIRES onewire ds18b20
)
И установите зависимости через idf.py add-dependency или вручную.
Пример для ESPHome
Конфигурация ESPHome для Home Assistant
YAML
Пример для ESPHome
Конфигурация ESPHome для Home Assistant
# Конфигурация ESPHome для KY-001 (DS18B20)
esphome:
name: ky001-sensor
platform: ESP32
board: esp32dev
# Настройка 1-Wire шины
# Обычно используется любой GPIO, кроме 34-39
onewire:
- platform: onewire
id: "onewire_bus_ky001"
pin: GPIO4
# Сенсор температуры на основе DS18B20/KY-001
sensor:
- platform: ds18b20
onewire_id: "onewire_bus_ky001"
address: !secret ds18b20_address # Уникальный 64-битный ID
name: "KY-001 Temperature"
unit_of_measurement: "°C"
update_interval: 10s
Эта конфигурация ESPHome настраивает 1-Wire шину на GPIO4 и подключает к ней датчик DS18B20/KY-001. Укажите уникальный 64-битный адрес датчика (можно узнать через скрипт поиска или монитор). Значения температуры будут автоматически публиковаться в Home Assistant с интервалом 10 секунд. Для поиска адреса используйте встроенный лог ESPHome или скрипт:
# Включить логирование для поиска:
logger:
level: DEBUG
Смотрите консоль при загрузке: там будут выведены все обнаруженные 1-Wire устройства.
Пример для PlatformIO
Профессиональная среда разработки
C++
Пример для PlatformIO
Профессиональная среда разработки
platformio.ini
[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
paulstoffregen/OneWire@^2.3.5
milesburton/DallasTemperature@^3.9.0
main.cpp
#include <Arduino.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Пин данных 1-Wire
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(115200);
Serial.println("KY-001 с PlatformIO");
// Инициализация датчика
sensors.begin();
Serial.println("Датчик готов.");
}
void loop() {
// Запрос температуры
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
// Вывод результата
Serial.print("Температура: ");
Serial.print(tempC);
Serial.println(" °C");
delay(2000);
}
Этот проект PlatformIO настроен для платы ESP32 и использует те же библиотеки OneWire и DallasTemperature, что и обычный Arduino. Преимущество PlatformIO — удобное управление зависимостями и интеграция с VS Code. Код идентичен Arduino-примеру, но управление библиотеками происходит через lib_deps в platformio.ini.
Пример для MicroPython
Python для микроконтроллеров
Python
Пример для MicroPython
Python для микроконтроллеров
import machine
import time
import onewire
import ds18x20
# Инициализация 1-Wire на GPIO4
pin = machine.Pin(4)
ow = onewire.OneWire(pin)
ds = ds18x20.DS18X20(ow)
# Сканирование шины на наличие датчиков
roms = ds.scan()
print('Найдено датчиков:', len(roms))
if len(roms) == 0:
print('Датчик KY-001 не обнаружен. Проверьте подключение.')
else:
print('Датчик готов к чтению.')
# Основной цикл
while True:
try:
# Запуск преобразования температуры
ds.convert_temp()
time.sleep_ms(750) # Ждём завершения
# Чтение температуры всех найденных датчиков
for rom in roms:
temp = ds.read_temp(rom)
print('Температура: {:.2f}°C'.format(temp))
time.sleep(2) # Задержка между измерениями
except Exception as e:
print('Ошибка:', e)
time.sleep(2)
Этот скрипт MicroPython использует встроенные модули onewire и ds18x20 для работы с KY-001. На пине GPIO4 создаётся объект OneWire, затем оборачивается в DS18X20. Сканирование шины scan() находит все подключённые датчики и возвращает их уникальные ROM-адреса. В цикле запускается преобразование, ждётся 750 мс (для 12-битного разрешения), затем читается температура. Обработка исключений помогает отловить ошибки связи.
Итоги KY-001
Модуль датчика температуры **KY-001** на базе **DS18B20** — это надёжный и простой в использовании датчик для ESP32 и Arduino. С поддержкой протокола **1-Wire** он идеально подходит для метеостанций, умного дома и промышленных задач.
Рекомендации
Для стабильной работы всегда устанавливайте резистор подтяжки **4.7кОм** между контактами DATA и VCC. Используйте качественные провода, особенно при больших расстояниях, и размещайте датчик вдали от источников тепла для точных измерений.
Безопасность прежде всего
Перед подачей питания проверьте полярность подключения VCC и GND. Не применяйте к модулю напряжение выше 5.5В. При использовании с ESP32 предпочтительно питание 3.3В для избежания level shifting.
Готовы начать создавать?
Теперь, когда у вас есть вся необходимая информация, пора интегрировать KY-001 в проект на ESP32 и воплотить идеи в жизнь!
Изучите альтернативные датчики
Ищете альтернативы **KY-001**? Посмотрите эти похожие датчики — возможно, они лучше подойдут под задачи вашего проекта.

Двухцветный светодиод KY-011
Модуль KY-011 представляет собой двухцветный светодиод (красный/зелёный) с общим катодом. Позволяет создавать различные цвета...

Сенсор касания KY-036
Модуль KY-036 — это сенсор касания с металлическим наконечником. Обеспечивает как аналоговый, так и цифровой выход, с регулируемым порогом срабатывания...

Сенсор пламени KY-026
Модуль KY-026 — это сенсор пламени, способный обнаруживать свет в диапазоне длин волн 760–1100 нм. Обеспечивает аналоговый и цифровой выход...