Модуль RGB-светодиода KY-016

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

Светодиоды PWM

Обзор

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

KY-016 — RGB-светодиодный модуль с общей катодной конфигурацией. Позволяет отображать до 16.7 миллионов цветов через ШИМ (PWM). Идеален для декоративного оформления, цветовых индикаторов и статус- Light.

Модуль KY-016 RGB Full Color LED
Быстрая навигация
Основные разделы статьи
Примеры кода
Популярные платформы
Где купить

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

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

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

Полные технические характеристики модуля RGB-светодиода KY-016.

Напряжение питания
3.3В - 5В
Прямое напряжение
Красный: 1.8В, Зелёный/Синий: 2.8В
Потребляемый ток
20мА на канал
Размеры
10 x 10 x 5 мм
Скачать полный даташит
Конфигурация пинов

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

KY-016 — это 4-пиновый RGB-светодиодный модуль с общей катодной конфигурацией:

Визуальная диаграмма распиновки
Основное
Распиновка KY-016
Всего выводов
4
Типы
Питание + ШИМ
Быстрые советы
  • Интерфейс: ШИМ-управление для каждого канала.
  • Конфигурация: Общий катод (GND общий).
  • Резисторы: R=180Ω, G/B=100Ω (уже на модуле).
Описание выводов
Название Тип Описание Примечания
1 Pin 1 (GND) Питание Общий катод (земля) Подключить к GND
2 Pin 2 (R) Выход Анод красного светодиода 1.8В, резистор 180Ω
3 Pin 3 (G) Выход Анод зелёного светодиода 2.8В, резистор 100Ω
4 Pin 4 (B) Выход Анод синего светодиода 2.8В, резистор 100Ω
Руководство по подключению

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

Для управления RGB-светодиодом KY-016 с ESP32 используется ШИМ (PWM) на трёх выводах красного, зелёного и синего каналов. На модуле уже установлены current-limiting резисторы.

Схема подключения
Рекомендуемая (PWM)
Подключение KY-016 к ESP32
Подключений
4
Статус
Все обязательны
Протокол
PWM
Подключения пинов
Вывод KY-016 Подключение Вывод ESP32 Описание
Pin 1 (GND) обязательно GND Общая земля
Pin 2 (R) обязательно GPIO25 Красный канал (через 180Ω)
Pin 3 (G) обязательно GPIO26 Зелёный канал (через 100Ω)
Pin 4 (B) обязательно GPIO27 Синий канал (через 100Ω)
🌈 16.7 млн цветов через RGB 🔌 Общий катод (GND) ⚡ ШИМ-управление 🎯 Декоративное оформление 📊 Встроенные резисторы 💡 Красный: 1.8В/180Ω 💡 Зелёный/Синий: 2.8В/100Ω
Помощь и поддержка

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

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

Светодиод не загорается
RGB LED не включается вообще

Проблема: светодиод полностью не светится.

Возможные причины: неправильные соединения, неисправность пинов, отсутствие питания.

Решение: проверьте все подключения к GND и трём каналам цвета. Убедитесь, что пины GPIO настроены как OUTPUT. Проверьте, что модуль получает питание (3.3В или 5В в зависимости от версии).

Неправильные цвета
Цвет не соответствует ожидаемому

Проблема: цвета отображаются искажённо или слабые.

Возможные причины: неправильные значения ШИМ, путаница с пинами цветов, короткое замыкание.

Решение: проверьте, что в коде правильные пины для каждого цвета (R, G, B). Убедитесь, что значения analogWrite в диапазоне 0-255. Проверьте на короткое замыкание между выводами модуля.

ШИМ не работает на ESP32
analogWrite или ledc не регулируют яркость

Проблема: ШИМ-сигнал не меняет яркость светодиода.

Решение: на ESP32 убедитесь, что используются правильные функции ШИМ. В Arduino-окружении для ESP32 analogWrite работает через ledc. Проверьте, что пины поддерживают ШИМ (любой GPIO, кроме 34-39). Установите частоту ШИМ (обычно 5 кГц) и разрешение (обычно 8 бит).

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

Serial монитор
Проверка логов и ошибок
Используйте Serial монитор, чтобы видеть сообщения об ошибках и проверять работу ШИМ. Добавьте отладочную печать в код, чтобы отслеживать значения, отправляемые на пины RGB.
Проверка напряжения
Мультиметр и целостность цепи
Используйте мультиметр для проверки напряжения на выводах модуля. Убедитесь, что GND подключён корректно, а на выводах R, G, B присутствует напряжение при подаче ШИМ. Проверьте целостность проводников.

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

Примеры кода

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

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

Пример для Arduino

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

C++
#define RED_PIN 25
#define GREEN_PIN 26
#define BLUE_PIN 27

void setup() {
    pinMode(RED_PIN, OUTPUT);
    pinMode(GREEN_PIN, OUTPUT);
    pinMode(BLUE_PIN, OUTPUT);
}

void loop() {
    analogWrite(RED_PIN, 255);   // Красный на полную яркость
    analogWrite(GREEN_PIN, 0);   // Зелёный выключен
    analogWrite(BLUE_PIN, 0);    // Синий выключен
    delay(1000);

    analogWrite(RED_PIN, 0);
    analogWrite(GREEN_PIN, 255); // Зелёный на полную яркость
    analogWrite(BLUE_PIN, 0);
    delay(1000);

    analogWrite(RED_PIN, 0);
    analogWrite(GREEN_PIN, 0);
    analogWrite(BLUE_PIN, 255);  // Синий на полную яркость
    delay(1000);
}

Этот Arduino-скетч настраиваетRGB-светодиодный модуль KY-016, определяя пины для красного, зелёного и синего светодиодов. В цикле loop() модуль sequentially показывает красный, зелёный и синий цвета, каждый в течение одной секунды. Используйте значения от 0 до 255 для создания различных комбинаций.

Примечание для ESP32

На ESP32 в среде Arduino функция analogWrite() использует LEDC контроллер. Для точной настройки частоты и разрешения можно использовать:

ledcSetup(0, 5000, 8);  // канал, частота 5 кГц, 8 бит
ledcAttachPin(RED_PIN, 0);
ledcWrite(0, 255);  // значение 0-255

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

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

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

#define RED_PIN GPIO_NUM_25
#define GREEN_PIN GPIO_NUM_26
#define BLUE_PIN GPIO_NUM_27
#define LEDC_TIMER LEDC_TIMER_0
#define LEDC_MODE LEDC_HIGH_SPEED_MODE
#define LEDC_CHANNEL_R LEDC_CHANNEL_0
#define LEDC_CHANNEL_G LEDC_CHANNEL_1
#define LEDC_CHANNEL_B LEDC_CHANNEL_2

void configure_led_pwm(gpio_num_t pin, ledc_channel_t channel) {
    ledc_timer_config_t ledc_timer = {
        .speed_mode = LEDC_MODE,
        .timer_num = LEDC_TIMER,
        .duty_resolution = LEDC_TIMER_8_BIT,
        .freq_hz = 5000,
        .clk_cfg = LEDC_AUTO_CLK
    };
    ledc_timer_config(&ledc_timer);

    ledc_channel_config_t ledc_channel = {
        .gpio_num = pin,
        .speed_mode = LEDC_MODE,
        .channel = channel,
        .intr_type = LEDC_INTR_DISABLE,
        .timer_sel = LEDC_TIMER,
        .duty = 0,
        .hpoint = 0
    };
    ledc_channel_config(&ledc_channel);
}

void set_color(uint32_t red, uint32_t green, uint32_t blue) {
    ledc_set_duty(LEDC_MODE, LEDC_CHANNEL_R, red);
    ledc_update_duty(LEDC_MODE, LEDC_CHANNEL_R);
    ledc_set_duty(LEDC_MODE, LEDC_CHANNEL_G, green);
    ledc_update_duty(LEDC_MODE, LEDC_CHANNEL_G);
    ledc_set_duty(LEDC_MODE, LEDC_CHANNEL_B, blue);
    ledc_update_duty(LEDC_MODE, LEDC_CHANNEL_B);
}

void app_main(void) {
    configure_led_pwm(RED_PIN, LEDC_CHANNEL_R);
    configure_led_pwm(GREEN_PIN, LEDC_CHANNEL_G);
    configure_led_pwm(BLUE_PIN, LEDC_CHANNEL_B);

    while (1) {
        set_color(255, 0, 0);  // Красный
        vTaskDelay(pdMS_TO_TICKS(1000));
        set_color(0, 255, 0);  // Зелёный
        vTaskDelay(pdMS_TO_TICKS(1000));
        set_color(0, 0, 255);  // Синий
        vTaskDelay(pdMS_TO_TICKS(1000));
    }
}

Этот код для ESP-IDF настраивает ШИМ на пинах GPIO25 (красный), GPIO26 (зелёный) и GPIO27 (синий). Функция configure_led_pwm() настраивает каналы ШИМ для каждого светодиода, а set_color() регулирует яркость каждого. Лампа циклически переключает цвета каждую секунду.

Пример для ESPHome

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

YAML
output:
  - platform: ledc
    pin: GPIO25
    id: red_led
  - platform: ledc
    pin: GPIO26
    id: green_led
  - platform: ledc
    pin: GPIO27
    id: blue_led

light:
  - platform: rgb
    name: "KY-016 RGB LED"
    red: red_led
    green: green_led
    blue: blue_led
    gamma_correct: 2.8

Эта конфигурация ESPHome задаёт три ШИМ-выхода на GPIO25, GPIO26 и GPIO27. Светодиод управляется как RGB-светильник через Home Assistant с полным управлением цветом. Параметр gamma_correct компенсирует нелинейность восприятия яркости.

Пример для PlatformIO

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

C++

platformio.ini

[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200

main.cpp

#define RED_PIN 25
#define GREEN_PIN 26
#define BLUE_PIN 27

void setup() {
    pinMode(RED_PIN, OUTPUT);
    pinMode(GREEN_PIN, OUTPUT);
    pinMode(BLUE_PIN, OUTPUT);
}

void loop() {
    analogWrite(RED_PIN, 255);
    analogWrite(GREEN_PIN, 0);
    analogWrite(BLUE_PIN, 0);
    delay(1000);

    analogWrite(RED_PIN, 0);
    analogWrite(GREEN_PIN, 255);
    analogWrite(BLUE_PIN, 0);
    delay(1000);

    analogWrite(RED_PIN, 0);
    analogWrite(GREEN_PIN, 0);
    analogWrite(BLUE_PIN, 255);
    delay(1000);
}

Этот проект PlatformIO настраивает плату ESP32 с фреймворком Arduino. Код идентичен Arduino-примеру, но организован в виде проекта PlatformIO с отдельным файлом конфигурации platformio.ini.

Пример для MicroPython

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

Python
import machine
import time

# Настройка пинов ШИМ
red = machine.PWM(machine.Pin(25))
green = machine.PWM(machine.Pin(26))
blue = machine.PWM(machine.Pin(27))

# Частота ШИМ 1000 Гц
red.freq(1000)
green.freq(1000)
blue.freq(1000)

def set_color(r, g, b):
    red.duty(r)
    green.duty(g)
    blue.duty(b)

while True:
    set_color(1023, 0, 0)    # Красный (полная яркость)
    time.sleep(1)
    set_color(0, 1023, 0)    # Зелёный
    time.sleep(1)
    set_color(0, 0, 1023)    # Синий
    time.sleep(1)

Этот скрипт MicroPython настраивает ШИМ на пинах 25, 26 и 27 для управления RGB-светодиодом. Функция set_color() принимает значения от 0 до 1023 (10-битное разрешение на ESP32). Цикл последовательно зажигает красный, зелёный и синий цвета.

Итоги KY-016

Модуль RGB-светодиода KY-016 — это простой и доступный компонент для проектов сmulticoloured световыми эффектами. Поддерживается на всех основных платформах: Arduino, ESP-IDF, ESPHome, PlatformIO и MicroPython.

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

Для стабильной работы используйте пины, поддерживающие ШИМ. На ESP32 почти все пины имеют ШИМ, кроме 34–39. Убедитесь, что на каждом канале установлены соответствующие резисторы (на модуле они уже есть). Для плавности цветов используйте 8-битное или более высокое разрешение ШИМ.

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

Проверьте полярность подключения: общий катод (GND) должен быть правильно соединён. Избегайте переполюсовки. Хотя на модуле установлены резисторы, избегайте коротких замыканий между выводами R, G, B. При питании 5В убедитесь, что логические уровни ESP32 (3.3В) всё равно корректно управляют светодиодами через ШИМ.

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

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