Датчик инфракрасного излучения KY-005

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

Инфракрасные Digital

Обзор

KY-005 — это инфракрасный (IR) передатчик, который излучает свет с длиной волны 940 нм. Модуль имеет встроенную инфракрасную светодиод и широко используется в приложениях удаленного управления. Может работать в паре с KY-022 Infrared Receiver Module для создания систем инфракрасной связи.

KY-005 — инфракрасный передатчик, излучающий свет на длине волны 940 нм. Состоит из 5-мм инфракрасного светодиода с прямым напряжением 1.1 В и током 20 мА. Идеально подходит для создания пультов ДУ и IR-связи.

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

О модуле инфракрасного передатчика KY-005

Семейство KY-0xx представляет собой набор модулей для прототипирования, совместимых с Arduino и другими микроконтроллерами. KY-005 — это инфракрасный передатчик, который излучает свет на длине волны 940 нм и предназначен для создания систем УКВ-управления и инфракрасной связи.

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

  • 940 нм инфракрасное излучение — подходит для пультов ДУ и передачи данных.
  • Требуется резистор — для ограничения тока через светодиод:
    • 3.3В → 120 Ом
    • 5В → 220 Ом
  • Простое цифровое управление — легко interfaciруется с ESP32, Arduino и другими микроконтроллерами.
  • Работает с KY-022 — используется совместно с KY-022 Infrared Receiver Module для получения IR-сигналов.

Благодаря компактному дизайну и надежной работе модуль KY-005 — отличный выбор для беспроводных IR-приложений. 🚀

Где купить

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

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

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

Полные технические характеристики модуля инфракрасного передатчика KY-005.

Номинальное напряжение
1.1 В
Рабочий ток
20 мА
Длина волны
940 нм
Резистор для 3.3В
120 Ом
Резистор для 5В
220 Ом
Размеры модуля
18.5×15 мм
Скачать полный даташит
Конфигурация пинов

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

KY-005 — это 3-пиновый модуль инфракрасного светодиода (940 нм).

Визуальная диаграмма распиновки
Основное
Распиновка KY-005
Всего выводов
3
Типы
Питание + сигнал
Быстрые советы
  • Управление — цифровой выход для IR-светодиода.
  • Длина волны — 940 нм инфракрасного излучения.
  • Резистор — 120 Ом для 3.3В, 220 Ом для 5В.
Описание выводов
Название Тип Описание Примечания
1 S (Signal) Цифровой выход Управляющий сигнал IR-светодиодом Подключается к GPIO
2 middle Питание Дополнительный земляной вывод Используется, если внешний резистор припаян
3 - (GND) Земля Общий земляной вывод Требует последовательный резистор (120 Ом@3.3В, 220 Ом@5В)
Руководство по подключению

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

Для работы KY-005 с ESP32 необходимо использовать последовательный резистор (120 Ом для 3.3В или 220 Ом для 5В) для ограничения тока через инфракрасный светодиод.

Схема подключения
Рекомендуемая (с резистором)
Подключение KY-005 к ESP32
Подключений
2–3
Статус
Обязательно: сигнал + GND
Протокол
Цифровой выход
Подключения пинов
Вывод KY-005 Подключение Вывод ESP32 Описание
1 Pin (S) обязательно GPIO17 Управляющий сигнал IR-светодиода
2 Pin (middle) опционально GND Дополнительный земляной вывод (если есть внешний резистор)
3 Pin (-) обязательно GND Общая земля (через резистор 120 Ом@3.3В или 220 Ом@5В)
📍 Напряжение светодиода: 1.1 В ⚡ Ток: 20 мА 📡 Длина волны: 940 нм 🔧 Резистор: 120 Ом (3.3В), 220 Ом (5В) 🎯 Совместим с KY-022 📏 Размер: 18.5×15 мм
Помощь и поддержка

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

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

IR-сигнал не излучается
Модуль ничего не передаёт

Проблема: светодиод не излучает инфракрасный свет при активации.

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

Решение: проверьте резистор (120 Ом для 3.3В, 220 Ом для 5В), убедитесь в надёжности контактов, проверьте настройки GPIO. Протестируйте светодиод камерой смартфона (большинство камер видят IR-свет).

Перегрев или повреждение модуля
Модуль становится горячим или вышел из строя

Причины: отсутствие или неверный резистор, превышение напряжения питания, короткое замыкание.

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

Неправильный протокол передачи
Приёмник не распознаёт сигнал

Возможные причины: несовместимость протоколов (NEC, Sony, etc.), неправильные параметры частоты/длительности.

Решение: убедитесь, что код отправки использует тот же протокол, что и приёмник. Проверьте неточности в частоте несущей (обычно 38 кГц) и длительности импульсов. Используйте библиотеки с поддержкой популярных протоколов.

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

Serial монитор
Проверка логов и состояний
Используйте Serial Monitor для проверки сообщений об ошибках и состояний передачи. Добавьте отладочный вывод в код, чтобы убедиться, что функция отправки вызывается корректно.
Проверка напряжения и тока
Мультиметр и резисторы
Используйте мультиметр для проверки напряжения на выводах светодиода и тока через него. Убедитесь, что резистор имеет правильное значение и падение напряжения соответствует ожидаемому (около 1.1 В на светодиоде).
Визуальная проверка IR-излучения
Использование камеры смартфона
Большинство цифровых камер (включая камеры смартфонов) чувствительны к инфракрасному свету. Направьте IR-светодиод KY-005 в камеру и активируйте передачу. На дисплее камеры вы должны увидеть фиолетовое или белое свечение светодиода. Если свечения нет, проверьте цепь и код.

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

Примеры кода

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

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

Пример для Arduino

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

C++
#include <IRremote.h>

IRsend irsend;

void setup() {
    Serial.begin(9600);
    Serial.println("KY-005 Infrared Transmitter Test");
}

void loop() {
    for (int i = 0; i < 3; i++) {
        irsend.sendNEC(0xA90, 32); // Отправка NEC-протокола с командой 0xA90
        delay(40);
    }
    delay(5000); // Ждём 5 секунд перед следующей передачей
}

Этот Arduino-скетч использует библиотеку IRremote для отправки инфракрасного сигнала по протоколу NEC с командой 0xA90. Сигнал отправляется три раза с задержкой 40 мс между передачами, после чего следует пауза в 5 секунд. Такой подход типичен для управления телевизорами и другой бытовой техникой.

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

Установите библиотеку IRremote через Arduino Library Manager:

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

Или скачайте с GitHub:

🔗 Библиотека IRremote

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

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

C++
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/rmt.h"

#define RMT_TX_CHANNEL RMT_CHANNEL_0
#define RMT_TX_GPIO 17
#define RMT_CLK_DIV 80  // 1 мкс на тик при 80 МГц

// Структура для NEC-протокола
typedef struct {
    rmt_item32_t items[68];  // 68 импульсов для NEC
    int length;
} rmt_nec_item_t;

// Формирование NEC-сигнала
void nec_encode(rmt_nec_item_t *nec, uint64_t address, uint8_t command) {
    int idx = 0;

    // Начальный импульс (9 мс + 4.5 мс)
    nec->items[idx++] = (rmt_item32_t){ .duration0 = 9000 / 10, .level0 = 1, .duration1 = 4500 / 10, .level1 = 0 };
    // Адрес (16 бит)
    for (int i = 0; i < 16; i++) {
        uint32_t bit = (address >> i) & 0x01;
        nec->items[idx++] = (rmt_item32_t){ .duration0 = 560 / 10, .level0 = 1, .duration1 = bit ? 1690 / 10 : 560 / 10, .level1 = 0 };
    }
    // Инверсия адреса
    for (int i = 0; i < 16; i++) {
        uint32_t bit = ~(address >> i) & 0x01;
        nec->items[idx++] = (rmt_item32_t){ .duration0 = 560 / 10, .level0 = 1, .duration1 = bit ? 1690 / 10 : 560 / 10, .level1 = 0 };
    }
    // Команда (8 бит)
    for (int i = 0; i < 8; i++) {
        uint32_t bit = (command >> i) & 0x01;
        nec->items[idx++] = (rmt_item32_t){ .duration0 = 560 / 10, .level0 = 1, .duration1 = bit ? 1690 / 10 : 560 / 10, .level1 = 0 };
    }
    // Инверсия команды
    for (int i = 0; i < 8; i++) {
        uint32_t bit = ~(command >> i) & 0x01;
        nec->items[idx++] = (rmt_item32_t){ .duration0 = 560 / 10, .level0 = 1, .duration1 = bit ? 1690 / 10 : 560 / 10, .level1 = 0 };
    }
    // Финишный импульс
    nec->items[idx++] = (rmt_item32_t){ .duration0 = 560 / 10, .level0 = 1, .duration1 = 0, .level1 = 0 };
    nec->length = idx;
}

void app_main() {
    // Конфигурация RMT
    rmt_config_t config = {
        .rmt_mode = RMT_MODE_TX,
        .channel = RMT_TX_CHANNEL,
        .gpio_num = RMT_TX_GPIO,
        .clk_div = RMT_CLK_DIV,
        .mem_block_num = 1,
        .tx_config = { .carrier_freq_hz = 38000, .carrier_duty_cycle = 0.33, .carrier_level = 1, .carrier_en = true }
    };
    rmt_config(&config);
    rmt_driver_install(config.channel, 0, 0);

    while (1) {
        rmt_nec_item_t nec;
        nec_encode(&nec, 0x00FFA90, 0x00FF);  // Адрес и команда
        rmt_write_items(config.channel, nec.items, nec.length, false);
        vTaskDelay(pdMS_TO_TICKS(5000));  // Задержка 5 секунд
    }
}

Этот пример для ESP-IDF использует периферию RMT (Remote Control) ESP32 для генерации инфракрасного сигнала. Функция nec_encode() формирует последовательность импульсов по протоколу NEC. В app_main() настраивается RMT на GPIO17 с несущей частотой 38 кГц. Сигнал отправляется каждые 5 секунд. Конфигурация carrier_duty_cycle = 0.33 задает скважность 33% для стандартного IR-модуляции.

Пример для ESPHome

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

YAML
remote_transmitter:
  - platform: gpio
    pin: GPIO17
    carrier_duty_percent: 33%

button:
  - platform: template
    name: "KY-005 Send NEC Signal"
    on_press:
      - remote_transmitter.transmit_nec:
          address: 0x00FF
          command: 0xA90

Эта конфигурация ESPHome задаёт IR-передатчик на GPIO17 с несущей частотой 33%. При нажатии кнопки отправляется NEC-команда с адресом 0x00FF и командой 0xA90. Конфигурация интегрируется с Home Assistant как кнопка, которая может быть использована в автоматизациях и интерфейсе.

Пример для PlatformIO

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

C++

platformio.ini

[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
    arduino-libraries/IRremote

main.cpp

#include <Arduino.h>
#include <IRremote.h>

IRsend irsend;

void setup() {
    Serial.begin(115200);
    Serial.println("KY-005 Infrared Transmitter Test");
}

void loop() {
    Serial.println("Sending IR NEC signal");
    irsend.sendNEC(0x00FFA90, 32);  // Отправка NEC-сигнала
    delay(5000);  // Пауза 5 секунд
}

Проект PlatformIO настраивается для ESP32 с фреймворком Arduino и библиотекой IRremote. В main.cpp отправляется NEC-сигнал каждые 5 секунд. Serial Monitor используется для отладки.

Пример для MicroPython

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

Python
# Пример отправки NEC-сигнала через RMT (ESP32)
import machine
import time
from esp32 import rm

# Настройка RMT для IR-передачи на GPIO17
rmt_channel = rm.RMT_CHANNEL_0
rmt.init(rmt_channel, gpio=17, clock_div=80, tx_level=1)

def send_nec(address, command):
    # NEC: 9мс carry + 4.5мс пауза + данные + финиш
    # Для простоты используем базовую посылку (реальная реализация полного NEC сложнее)
    # В реальном проекте лучше использовать готовую библиотеку micropython-irm
    pulse = [9000, 4500]  # стартовые импульсы в мкс
    # Добавляем 32 бита данных (адрес + инверсия + команда + инверсия)
    for i in range(32):
        bit = (address >> i) & 1 if i < 16 else (command >> (i-16)) & 1
        pulse.append(560)  # тактовый
        pulse.append(1690 if bit else 560)
    pulse.append(560)  # финиш
    # Отправка
    rmt.send(rmt_channel, pulse, start=0, wait=True)

while True:
    print("Sending NEC signal")
    send_nec(0x00FF, 0xA90)
    time.sleep(5)

Этот пример MicroPython использует RMT периферию ESP32 для генерации IR-сигналов на GPIO17. Функция send_nec() формирует базовую последовательность импульсов NEC-протокола. Для сложных протоколов рекомендуется использовать готовые библиотеки, такие как micropython-irm. В данном примере показан принцип отправки.

Итоги KY-005

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

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

Всегда используйте соответствующий резистор (120 Ом для 3.3В, 220 Ом для 5В) для ограничения тока через IR-светодиод. Проверяйте совместимость протоколов (NEC, Sony и др.) между передатчиком и приёмником. Для проверки излучения используйте камеру смартфона.

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

Не превышайте рекомендованное напряжение питания (5В максимум) и не забывайте про резистор. Избегайте коротких замыканий на выводах светодиода. IR-излучение безвредно для глаз, но не смотрите directly на мощные IR-источники.

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

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