Обзор
KY-005 — это инфракрасный (IR) передатчик, который излучает свет с длиной волны 940 нм. Модуль имеет встроенную инфракрасную светодиод и широко используется в приложениях удаленного управления. Может работать в паре с KY-022 Infrared Receiver Module для создания систем инфракрасной связи.
KY-005 — инфракрасный передатчик, излучающий свет на длине волны 940 нм. Состоит из 5-мм инфракрасного светодиода с прямым напряжением 1.1 В и током 20 мА. Идеально подходит для создания пультов ДУ и IR-связи.
О модуле инфракрасного передатчика 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.
Распиновка KY-005
KY-005 — это 3-пиновый модуль инфракрасного светодиода (940 нм).
- Управление — цифровой выход для 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 | Описание |
|---|---|---|---|
| 1 Pin (S) обязательно | → | GPIO17 | Управляющий сигнал IR-светодиода |
| 2 Pin (middle) опционально | → | GND | Дополнительный земляной вывод (если есть внешний резистор) |
| 3 Pin (-) обязательно | → | GND | Общая земля (через резистор 120 Ом@3.3В или 220 Ом@5В) |
Устранение неполадок KY-005
Распространённые проблемы и решения, которые помогут запустить ваш IR-передатчик.
IR-сигнал не излучается
Модуль ничего не передаёт
Проблема: светодиод не излучает инфракрасный свет при активации.
Возможные причины: неправильный резистор, плохие соединения, ошибки в коде GPIO.
Решение: проверьте резистор (120 Ом для 3.3В, 220 Ом для 5В), убедитесь в надёжности контактов, проверьте настройки GPIO. Протестируйте светодиод камерой смартфона (большинство камер видят IR-свет).
Перегрев или повреждение модуля
Модуль становится горячим или вышел из строя
Причины: отсутствие или неверный резистор, превышение напряжения питания, короткое замыкание.
Решение: установите правильный резистор, проверьте напряжение питания (не выше 5В), осмотрите цепи на наличие коротких замыканий. Используйте мультиметр для проверки.
Неправильный протокол передачи
Приёмник не распознаёт сигнал
Возможные причины: несовместимость протоколов (NEC, Sony, etc.), неправильные параметры частоты/длительности.
Решение: убедитесь, что код отправки использует тот же протокол, что и приёмник. Проверьте неточности в частоте несущей (обычно 38 кГц) и длительности импульсов. Используйте библиотеки с поддержкой популярных протоколов.
Советы по отладке
Serial монитор
Проверка логов и состояний
Проверка напряжения и тока
Мультиметр и резисторы
Визуальная проверка IR-излучения
Использование камеры смартфона
Дополнительные ресурсы
Примеры программирования KY-005
Готовые к использованию примеры кода для различных платформ и фреймворков
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
C++
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
#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:
- Откройте Arduino IDE.
- Перейдите Sketch → Include Library → Manage Libraries.
- Найдите ‘IRremote’ и установите её.
Или скачайте с GitHub:
Пример для ESP-IDF
Официальный фреймворк Espressif для разработки IoT
C++
Пример для ESP-IDF
Официальный фреймворк Espressif для разработки IoT
#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
Пример для ESPHome
Конфигурация ESPHome для Home Assistant
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
Профессиональная среда разработки
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
Пример для MicroPython
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 и воплотить идеи в жизнь!
Изучите альтернативные датчики
Ищете альтернативы KY-005? Посмотрите эти похожие модули — возможно, они лучше подойдут под задачи вашего проекта.
KY-022 Infrared Receiver Module
Модуль инфракрасного приёмника KY-022 работает на частоте 38 кГц и идеально дополняет KY-005 для двусторонней IR-связи...

KY-033 Line Tracking Sensor Module
Датчик следящей линии KY-033 использует инфракрасный излучатель и приёмник для обнаружения чёрных и светлых поверхностей...

KY-012 Active Buzzer Module
Активный зуммер KY-012 издает звук частотой 2.5 кГц при подаче питания. Работает в диапазоне 3.3В-5В и не требует...