Датчик температуры KY-001

Узнайте всё о датчике температуры KY-001: спецификации, распиновка, схемы подключения, документация и примеры кода для ESP32, Arduino, Raspberry

Температура 1-Wire

Обзор

KY-001 — это модуль датчика температуры, работающий в широком диапазоне температур. Он использует протокол 1-Wire и основан на популярном цифровом датчике DS18B20. Этот модуль идеально подходит для проектов мониторинга температуры, требующих точных и надёжных показаний.

KY-001 — это модуль датчика температуры на базе DS18B20 с интерфейсом 1-Wire. Он обеспечивает высокую точность и широкий диапазон измерений, что делает его отличным выбором для метеостанций, умного дома и промышленных систем.

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

О датчике температуры 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.

Интерфейс
1-Wire
Точность
±0.5°C (-10°C…+85°C)
Диапазон
-55°C…+125°C
Питание
3.0–5.5В
Разрешение
9–12 бит
Потребление
1мА актив., <1мкА режим ожидания
Скачать полный даташит
Конфигурация пинов

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

KY-001 — это трехконтактный модуль датчика температуры на базе чипа DS18B20:

Визуальная диаграмма распиновки
Основное
Распиновка KY-001
Всего выводов
3
Типы
Питание + 1-Wire
Быстрые советы
  • Протокол: 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.

Схема подключения
Рекомендуемая (1-Wire)
Подключение KY-001 к ESP32
Подключений
3
Статус
Все обязательны
Протокол
1-Wire
Подключения пинов
Вывод KY-001 Подключение Вывод ESP32 Описание
GND обязательно GND Общая земля
VCC обязательно 3.3V или 5V Питание (3.3В или 5В)
DATA обязательно GPIO4 (или любой) Линия данных 1-Wire (с резистором 4.7кОм)
📍 Протокол: 1-Wire 🔧 Резистор подтяжки: 4.7кОм ⚡ Питание: 3.3В или 5В 📊 Множество датчиков на одной линии 🎯 Уникальный 64-битный ID 🌡️ -55°C…+125°C 📈 ±0.5°C
Помощь и поддержка

Устранение неполадок 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 монитор
Проверка логов и ошибок
Используйте Serial монитор для вывода отладочной информации. Библиотека DallasTemperature умеет выводить адреса найденных датчиков и коды ошибок.
Проверка напряжения
Мультиметр и целостность цепи
Используйте мультиметр для проверки напряжения на контактах VCC относительно GND. Убедитесь, что оно находится в диапазоне 3.0–5.5В. Проверьте целостность соединений и отсутствие обрывов.

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

Примеры кода

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

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

Пример для Arduino

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

C++
#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:

  1. OneWire — парадрайвер шины 1-Wire
  2. DallasTemperature — надстройка для удобной работы с DS18B20

🔗 Библиотека OneWire
🔗 Библиотека DallasTemperature

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

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

C++
#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 для 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.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
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 и воплотить идеи в жизнь!