Как управлять rgb лентой
Перейти к содержимому

Как управлять rgb лентой

  • автор:

Многоцветная RGB-светодиодная лента. Как управлять цветом с помощью RGB контроллера?

Многоцветная лента, подобно хамелеону, может менять свой цвет. Белый, желтый, красный, зеленый, синий. В зависимости от навороченности, крутизны (соответственно, и цены) управляющего контроллера, цветов может быть намного больше.

Но для подсветки потолков в квартире (в отличии от освещения баров или ночных клубов) особой крутизны и навороченности не требуется. Вполне достаточно RGB-контроллера вот с таким дистанционным пультом управления.

Видите разноцветные кнопки? Эти кнопки предназначены для управления цветом светодиодной RGB-ленты. Нажимаете на красную кнопку, лента светится красным, нажимаете на желтую — желтым. Когда я впервые взял такой пульт в руки, то баловался им, как ребенок, минут тридцать. На самом деле, это прикольно.

Именно у этого контроллера, есть очень полезная опция — регулировка яркости свечения. Это белые кнопки в верхнем ряду: левая увеличивает яркость, правая уменьшает. Вы можете, одним движением пальца менять режимы освещения в комнате, в зависимости от ситуации. Например:

Режим «Яркий свет» — цвет белый, яркость свечения на максимум. Основной режим, при котором просто светло.

Режим «Ночник» — у вас маленький ребенок, который боится засыпать в темноте. Ставим светло-голубое свечение и яркость на минимум.

Режим «Медитация» — вы занимаетесь йогой, медитацией или просто любите посидеть в кресле и расслабиться. Включайте спокойную музыку, зеленый цвет и получайте удовольствие.

Режим «Романтика» — вы решили не ходить в ресторан и устроить романтический ужин на двоих у себя дома. Чтобы создать романтическую обстановку, установите светло-красный цвет и приглушите яркость. Уверяю, вам понравиться.

Режим «Танцы» — вы решили с друзьями немного повеселиться у вас дома. Выпили, закусили, поговорили, пошутили. Захотели танцевать. Выбираем режим со светодинамикой, регулируем скорость мигания и пляшем. Конечно, это не светомузыка и RGB-лента не будет мигать в такт с вашими движениями, но это и не так уж и важно.

В чем фишка RGB-ленты?

За счет чего она становится многоцветной? Поясняю. Внутри RGB-светодиода установлено три кристалла: красный (Red), зеленый (Green) и синий (Blue). Когда свет от этих кристаллов смешивается в разных пропорциях, на выходе получаются разные цвета.

Оттенков может быть бесконечно много. По сути разработчики объединили три ленты разных цветов в одну. Поэтому, у многоцветной светодиодной ленты не два питающих провода (плюс и минус), а четыре. Три на каждый цвет и один провод общий.

Для того, чтобы управлять цветом свечения многоцветной ленты, необходим контроллер. Контроллер — это (выражаясь понятным языком) коробочка, к которой с одного конца подключается блок питания, а с другого светодиодная RGB-лента.

Этот контроллер устанавливается вместе с блоком питания и самой светодиодной лентой в нишу потолка. А для того, чтобы иметь возможность управлять им дистанционно, в комплекте с ним идет пульт дистанционного управления.

Инфракрасный датчик (ИК-датчик) улавливает сигналы, которые передает пульт управления и передает их контроллеру. А контроллер уже включает выбранный вами режим освещения. Схема подключения RGB-ленты выглядит так.

Блок питания и контроллер необходимо подбирать, исходя из потребляемой мощности ленты. Расчет мощности — очень важная вещь. Ошибетесь в расчетах и контроллер у вас выйдет из строя через несколько минут. С блоком питания проще: если вы ошибетесь, он просто не включится (сработает защита).

Важный момент!

Общая длина светодиодной ленты не должна превышать 5 метров. Меньше можно, больше нельзя. Это связано с тем, что токоведущие дорожки на самой ленте рассчитаны на ток 2 Ампера. Поэтому, если подключить не 5, а например 7 метров, то работать-то будет, но не долго.

Как быть если нужно подключить светодиодную ленту длиной более 5 метров? Давайте рассмотрим пример, когда для подсветки потолка нужно установить 9 метров RGB-ленты.

С пятью метрами мы разобрались, тут все без изменений. А вот для продолжения потребуется RGB-усилитель. Это (опять же выражаясь простым языком) еще одна коробочка, к которой с одной стороны подключается конец первой ленты (которая 5-метровая), а с другой стороны, начало второй ленты (которая 4-метровая). И обязательно, еще один блок питания.

Таким образом, с помощью RGB-усилителя и дополнительного блока питания, мы соединили две ленты (5 и 4 метра) и получили общую длину девять метров. Данная схема подключения, позволяет создавать подсветку любой длины.

Схема подключения светодиодной RGB-ленты. Подключение RGB-контроллера и RGB-усилителя.

В принципе, схема подключения RGB-ленты, та же, что и схема подключения обычной одноцветной (монохромной) ленты. Разница в том, что между блоком питания и лентой, устанавливается RGB-контроллер (устройство управления цветом ленты).

Контроллеры бывают разные по внешнему виду, мощности, программам управления цветом и пультом дистанционного управления. Но суть у них у всех, одна и та же. Пришло на контроллер 2 провода от блока питания, ушло четыре провода на RGB-ленту.

Какой бы контроллер вы не выбрали, он всегда подключается по одной и той же схеме. Разъемы, питания обозначаются «V+» и «V-». Соответственно красный провод блока питания идет на плюсовой контакт, а черный провод идет на минусовой.

Разъемы для подключения RGB-ленты обозначаются:
R (red)-управление красным цветом
G (green)-управление зеленым цветом
B (blue)-управление синим цветом
V+ общий провод (на разных контроллера он может обозначаться по разному, но вы все равно его не спутаете с другими)

Не перепутайте провода ленты! Ничего страшного, конечно, не произойдет (ничего не сгорит), но у вас перепутаются цвета. Нажмете на пульте красный, а загорит синий.

Как подключить более 5 метров ленты? Токоведущие дорожки светодиодной ленты рассчитаны на длину 5 метров (именно поэтому лента всегда продается такой длины). Нельзя просто взять и соединить последовательно две ленты. Даже если и будет работать, то это продлится не долго (проверено на практике).

Принцип удлинения тот же, что и с обычной лентой. Существует два способа. Вот первый

Для этой схемы требуется четырехжильный удлиняющий провод сечением 1,5 мм и длиной 5 метров. Эту схему я применяю, для соединения RGB-лент c 30 диодами на метр. Но т.к. эта лента светит тускло (из-за малого количества светодиодов) и желающих ее использовать мало, то это схему я применяю редко.

С RGB-лентами 60 диодов на метр, тоже можно применить эту схему, но при этом, потребуются блок питания и контроллер мощностью в 2 раза большей.

Посчитаем. Две RGB-ленты потребляют 140 ватт. Блок питания такой мощности, это увесистая железяка, весьма немалых размеров. В потолочную нишу его спрятать, конечно же, можно. Но для этого, необходимо заранее спланировать под него место (на этапе проектирования потолков).

Контроллер на 140 ватт. Как показывают мои опыты, контроллеры выходят из строя, через некоторое время. Хотя в технических параметрах указано, что они рассчитаны на такую мощность и тянут 10-15 метров. На самом деле, горят. У меня уже было несколько случаев, хотя по расчетам, все вроде бы должно работать.

Поэтому, контроллер я рекомендую выбирать с запасом мощности в 2 раза, т.е. для данного случая, это 280 ватт. Но тут, резко увеличивается его стоимость, да и найти какой контроллер не просто. Поэтому, мне больше нравится вот такая схема

В данной схеме подключения, используется дополнительный блок питания и RGB-усилитель. Ко входу усилителя (на нем написано «Input») подключается конец первой ленты, к выходу (написано «Output») — начало второй.

Не перепутайте цвета проводов: каждый провод подключается в соответствующий разъем. На питающие контакты, подключите провода от блока питания.

Эта схема немного сложнее и по стоимости она получается чуть подороже первой, но при этом:
Размеры блоков питания существенно меньше
Можно использовать почти все имеющиеся в продаже контроллеры
Можно подключать неограниченное количество лент

Если вам трудно разбираться в электрических схемах, то вот вам фотография, на которой все видно. Еще раз. Если нужна одна лента, то используете блок питания и контроллер. Если нужно две и более ленты, то добавляете усилитель и еще один блок питания.

Установка светодиодной RGB-ленты пугает многих не столько ценой, сколько кажущейся сложностью установки. Надеюсь эта статья помогла вам разобраться с этим вопросом.

Управление RGB лентой с помощью Arduino и драйвера L298N

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

К таким лентам можно купить источник питания, диммер, диммер с пультом управления. Это позволит вам использовать светодиодную ленту для посветки. Однако если вы захотите запрограммировать алгоритм изменения цвета, или сделать управление из компьютера — то тут начинается разочарование. Вы в продаже не найдете диммеров с управлением через COM-порт или Ethernet.

Я решил эту проблему с помощью Arduino, и хочу поделиться своим вариантом решения с Вами.

Добро пожаловать под кат.

Теоретическая часть

Для реализации плавного изменения свечения всех 3 каналов нам потребуется сделать собственный димер. Сделать его очень просто, для этого требуется взять силовые ключи и управлять ими с помощью ШИМ сигнала. Также наш диммер должен быть программируемым и/или управляемым из вне.

В качестве мозгов идеально подходит Arduino. В её программу можно записать любой алгоритм изменения цветов, а также её можно управлять как с помощью модулей Arduino, так и удаленно по Ethernet, Ик-порту, Bluetooth, используя соответствующие модули.

Arduino Leonardo

Для реализации задуманного я выбрал Arduino Leonardo. Она одна из самых дешевых плат Arduino, и она имеет много выводов с поддержкой ШИМ.

PWM: 3, 5, 6, 9, 10, 11, and 13. Provide 8-bit PWM output with the analogWrite() function.

И так, источник ШИМ у нас имеется, остаётся придумать с силовыми ключами. Если побродить по интренет магазинам, то выяснится, что не существует модуля Arduino для управления RGB лентами. Или просто универсальных модулей с силовыми транзисторами. Также можно найти огромное количество сайтов радиолюбителей, которые делают платы с силовыми ключами сами.

Однако есть способ проще! Нас выручит модуль Arduino для управления двигателями. Этот модуль имеет все необходимое для нас — на нем установлены мощные ключи на 12В.

Пример такого модуля является «L298N Module Dual H Bridge Stepper Motor Driver Board Modules for Arduino Smart Car FZ0407». Такой модуль основан на микросхеме L298N, которая представляет из себя 2 моста. Однако мостовое включение полезно для двигателя (от этого он может менять направление вращения), а в случае RGB ленты, оно бесполезное.

Мы будем использовать не весь функционал этой микросхемы, а только 3 её нижних ключа, подключив ленту как показано на рисунке.

Практическая часть часть

Для реализации потребуется Arduino Leonardo, Модуль управления двигателями L298N, Источник 12В (для запитки ленты), сама RGB лента, соединительные провода.
Для удобства подключения я еще использовал Fundruino IO Expansion, но он никакой функциональной нагрузки не несет.

Схема подключения показана на рисунке.

Хочу дополнительно описать питание системы. В данной схеме питание подается на модуль управления двигателями, в нем стоит понижающий источник питания на 5В, и эти 5В я подаю на вход Vin питания Arduino. Если разорвать эту связь (естественно земли оставив соединенными), то запитывать Arduino и силовые ключи можно от разных источников питания. Это может быть полезно когда к Arduino много всего подключено, и источник в модуле управления двигателями не справляется (выключается по перегреву).

Управляется RGB лента с помощью команд analogWrite, которая настраивает выход для формирования ШИМ сигнала.

Исходный код программы для arduino:

#define GRBLED_PIN_R 9 // пин для канала R #define GRBLED_PIN_G 10 // пин для канала G #define GRBLED_PIN_B 11 // пин для канала B int rgbled_r=0, rgbled_g=0, rgbled_b=0; void setup() < //enable serial datada print Serial.begin(9600); Serial.println("RBG LED v 0.1"); // RGBLED pinMode(GRBLED_PIN_R, OUTPUT); pinMode(GRBLED_PIN_G, OUTPUT); pinMode(GRBLED_PIN_B, OUTPUT); >void loop() < // change color rgbled_r = (rgbled_r+1)%1024; rgbled_g = (rgbled_g+2)%1024; rgbled_b = (rgbled_b+3)%1024; // Output Z1_output_rgbled(); delay(1); >void Z1_output_rgbled()

На видео можно увидеть как это работает:

Экономическая часть
Модуль Стоимость Количество
L298N Module Dual H Bridge Stepper Motor Driver Board Modules for Arduino Smart Car FZ0407 $ 5.31 1
Leonardo R3 Development Board for Arduino Compatiblae + USB Cable Wire FZ0437 $ 10.00 1
5050 LED Strip RGB and single color 5M DC12V/24V 60leds/m Waterproof Flexible Car auto Strip Light saving light $ 12.38 1
Retail AC85~265V to DC 12V/6A power supply adaptor transformer switching for led light $ 9.98 1

Итого $37,65 = 1 300 руб

Вместо заключения

Для тех, кто захочет повторить описанную здесь схему — хочу заметить, что драйвер L298N рассчитан на ток 2-3А на канал, а RGB светодиодные ленты, на светодиодах 5050 с плотностью 60 светодиодов на метр, продающиеся по 5 метров, могут потреблять до 6А (2А на канал). По этому если вы хотите использовать ленты длинной более 5М — возможно потребуется схему модернизировать (подключать ленту по сегментам, или взять более мощный драйвер).

  • arduino leonardo
  • RGB led

Arduino и адресная светодиодная лента

Адресная светодиодная лента, в отличие от обычной RGB, позволяет управлять цветом и яркостью каждого своего светодиода. Благодаря этому на ней можно отображать различные интересные эффекты, как статические, так и динамические. Сама по себе лента ничего не может, поэтому генерацией эффектов занимается микроконтроллер (или плата на его основе, например Arduino). Более подробно про виды адресных лент можно прочитать в моей статье.

В наборе GyverKIT есть 1 метр адресной светодиодной ленты WS2812b. При желании ленту можно докупить в том же магазине, где продаётся набор – Giant4.

Подключение

  • GND ленты соединяется с GND микроконтроллера, так как все сигналы ходят относительно “земли”
  • У любого отрезка ленты есть вход, а есть выход: у входа средний пин называется DI, а у выхода – DO. К Arduino подключается именно вход ленты, то есть пин DI
  • DI подключается на любой цифровой пин. Если лента питается отдельно от Arduino – DI нужно подключать через резистор 100-500 Ом, чтобы избежать питания ленты через пин, что приведёт к выходу из строя пина Arduino или первого светодиода в ленте. Лучше ставить резистор в любом случае, чтобы исключить такую возможность
  • 5V ленты подключается к питанию. Питание может быть общим с Arduino
  • Лента потребляет большой ток, поэтому питать её от Arduino, подключенной к USB – нельзя. В наборе GyverKIT есть сетевой адаптер на 5V, ленту нужно питать от него

В рассмотренных выше схемах Arduino питается от USB. Для работы от адаптера можно подключить питание с него на пин 5V платы:

При наличии на ленте штекера можно подключать управление и питание следующим образом:

Примечание:

  • Ленту можно питать напрямую от Arduino (при подключении к USB), если ток потребления не будет превышать 500 мА. В библиотеке FastLED можно настроить программное ограничение тока: FastLED.setMaxPowerInVoltsAndMilliamps(5, 500); – 5V 500mA
  • Ленту можно подключать без резистора, если исключена возможность наличия сигнала на ленту без подключенного питания, т.е. когда лента питается от одного источника с микроконтроллером

При работе с Wemos есть особенность: у него логический уровень 3.3V, чего не всегда хватает для передачи сигнала на ленту. При возникновении “артефактов” в эффектах можно подключить питание по следующей схеме: питать Wemos через диод (есть в наборе GyverKIT):

Библиотеки

Самой функциональной и известной библиотекой является FastLED, можно установить через диспетчер библиотек по названию FastLED. В библиотеке ОЧЕНЬ много возможностей, см. официальную вики-документацию, а также полный список модулей, классов и функций.

Примечание для esp8266: на версии ядра 3.0.x первый светодиод на ленте самопроизвольно мигает, ставьте ядро версии 2.7.4

Как работать с FastLED

Коротко рассмотрим как работать с библиотекой FastLED и самые основные инструменты.

Логика работы с адресной лентой сводится к следующему: лента представляется в виде одномерного массива, каждый элемент – светодиод, точнее его цвет. Цвет светодиода кодируется тремя байтами, то есть 256 значений на каждый канал: красный, зелёный, синий. В программе можно производить различные манипуляции с этим массивом, то есть задавать цвета светодиодам при помощи различных инструментов библиотеки. Как только построение “кадра” закончено – массив можно отправить на ленту и светодиоды включатся соответственно заданным цветам.

Для начала обозначим константами длину ленты и пин, к которому она подключена, просто чтобы проще было редактировать программу в дальнейшем:

#define LED_PIN 5 // пин #define LED_NUM 50 // количество светодиодов
#include "FastLED.h"

Создаём массив цветов, он имеет тип данных CRGB . Размер – сколько светодиодов в ленте, то есть наша константа. Пусть массив будет глобальным, чтобы доступ к нему был у всей программы:

CRGB leds[LED_NUM];

В блоке setup нам нужно передать в библиотеку информацию о подключенной ленте, а также подключить созданный выше массив. Чтобы программа знала, откуда брать информацию о цветах. По порядку указывается тип ленты, пин, порядок цветов. В круглых скобках – имя нашего массива, а также его размер – длину ленты:

void setup() < FastLED.addLeds< WS2812, LED_PIN, GRB>(leds, LED_NUM); >

Отлично! Всё настроено и готово к работе.

Общие функции

Помимо задания цветов в массиве, существуют следующие управляющие функции:

  • FastLED.show() – выводит массив на ленту, т.е. обновляет её текущими цветами
  • FastLED.clear() – очищает ленту, буквально обнуляет все цвета в массиве, задаёт “чёрный” цвет. Для применения нужно вызвать show()
  • FastLED.setBrightness(0-255) – устанавливает яркость всей ленты. Не меняет значения в массиве светодиодов, просто “приглушает” итоговую отображаемую яркость. Для применения нужно вызвать show()
  • FastLED.setMaxPowerInVoltsAndMilliamps(вольты, миллиамперы) – включает автоматическое ограничение яркости по настроенному току и напряжению. Полезно для длинных лент и/или слабых блоков питания
  • FastLED.showColor(CRGB цвет) – залить всю ленту указанным цветом

Тип данных CRGB

Библиотека организована так, что переменной типа CRGB можно задать значение несколькими способами. Рассмотрим задание цвета первому светодиоду в нашей ленте, то есть элемент массива под номером ноль: leds[0]

leds[0] = 0xFF44DD; // цвет в HEX формате leds[0].setRGB(255, 68, 221); // RGB, 0-255 leds[0].setHSV(224, 187, 255); // HSV, 0-255 leds[0].setHue(224); // Hue из HSV, S и V будут 255 // готовый цвет. весь список тут https://github.com/FastLED/FastLED/wiki/Pixel-reference#colors leds[0] = CRGB::Red;

Подробнее про цветовые модели RGB и HSV можно почитать вот здесь.

Примеры

Итак, с базовыми понятиями разобрались, переходим к практике. Для начала зальём всю ленту статичной радугой. Для этого покрасим светодиоды в цикле, задав цвет от 0 до 255 от первого до последнего светодиода в ленте. Конструкция i * 255 / LED_NUM позволяет получить значения от 0 до 255 при изменении i от 0 до LED_NUM:

#define LED_PIN 5 #define LED_NUM 50 #include "FastLED.h" CRGB leds[LED_NUM]; void setup() < FastLED.addLeds(leds, LED_NUM); FastLED.setBrightness(50); for (int i = 0; i < LED_NUM; i++) < leds[i].setHue(i * 255 / LED_NUM); >FastLED.show(); > void loop()<>

Можно сделать подвижную радугу, это будет уже полноценная анимация. Для этого ленту нужно постоянно обновлять новыми цветами, например 30 раз в секунду. Чтобы плавно менять цвет – добавим к нему счётчик, который будет меняться от 0 до 255 и так по кругу.

#define LED_PIN 5 #define LED_NUM 50 #include "FastLED.h" CRGB leds[LED_NUM]; void setup() < FastLED.addLeds(leds, LED_NUM); FastLED.setBrightness(50); > byte counter; void loop() < for (int i = 0; i < LED_NUM; i++) < leds[i].setHue(counter + i * 255 / LED_NUM); >counter++; // counter меняется от 0 до 255 (тип данных byte) FastLED.show(); delay(30); // скорость движения радуги >

Можно сделать один бегающий светодиод: каждый раз очищать ленту и красить светодиод под номером, который задаётся счётчиком. Изменение счётчика закольцевать от 0 до количества светодиодов:

#define LED_PIN 5 #define LED_NUM 50 #include "FastLED.h" CRGB leds[LED_NUM]; void setup() < FastLED.addLeds(leds, LED_NUM); FastLED.setBrightness(50); > byte counter; void loop() < FastLED.clear(); leds[counter] = CRGB::Red; if (++counter >= LED_NUM) counter = 0; FastLED.show(); delay(30); >

И таких эффектов можно придумать очень много! Займёмся этим уже в блоке проектов

Домашнее задание

  • Заставить светодиод бегать “туда и обратно”
  • Сделать плавное изменение яркости (от 0 до 255) всей ленты с эффектом радуги

Связанные уроки

  • Гайд по ленте
  • Вики FastLED
  • Документация FastLED

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *