Контроллер для ws2812b своими руками

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

В 2010 году китайская компания WorldSemi выпустила маленькую восьминогую микросхему WS2811, которая перевернула мир светодиодных эффектов. Эта микросхема позволила создавать массивы RGB-светодиодов с очень простым и удобным управлением каждым отдельным светодиодом. Светодиод подключается к микросхеме и для соединения таких ячеек нужно всего три провода - общий, питание и управление.

Провода питания подключаются ко всем ячейкам параллельно, а провод управления идёт от выхода каждой микросхемы ко входу следующей.

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

У микросхем нет никаких адресов, все ячейки абсолютно одинаковы. Благодаря, "протоколу проталкивания" можно управлять тысячами светодиодных ячеек.

Всё очень просто. Контроллер последовательно передаёт команды управления на вход первой микросхемы. Команд ровно столько, сколько микросхем в массиве, затем передаётся пауза, являющаяся признаком окончания передачи.

Первая микросхема принимает команду и если видит, что после неё идёт ещё одна команда, просто "проталкивает" команду, передавая её следующей микросхеме и так по цепочке. Как только команды закончились и наступила пауза, каждая микросхема понимает, что последняя пришедшая команда адресована ей и устанавливает цвет и яркость своего светодиода, в соответствии с этой командой.

Просто, изящно и очень круто! Восхищаюсь тем, кто это придумал.

Количество микросхем со светодиодами в цепочке ограничено только скоростью передачи команд. Для того, чтобы светодиодами могли управлять медленные контроллеры со слабыми процессорами микросхемы поддерживают две скорости передачи данных - 400 и 800 килобит/сек. На медленной скорости можно передавать 30 последовательностей команд в секунду 512 светодиодам. На быстрой - 1024. Соответственно, если достаточно обновления 2 раза в секунду, теоретически можно адресовать до 15360 светодиодов (впрочем, контроллеров, поддерживающих больше 2048 светодиодов я не встречал).

В 2013 году появился WS2812B - это уже не микросхема, а RGB-светодиод со встроенной микросхемой управления, полностью совместимой по командам с WS2811. Стало возможным выпускать максимально простые и дешёвые адресные светодиодные ленты.

Помимо лент, выпускаются и матрицы на WS2812B.

А ещё существует WS2812D в видео корпусного светодиода 8 мм.

Миллионы, а может быть уже и миллиарды светодиодов с микросхемами WS281* работают в декоративной подсветке, экранах, бегущих строках, рекламе по всему миру. Во многом их популярность обязана простому и удобному "протоколу проталкивания".

Компания Philips в 2007 году запатентовала невероятно простую, но, без преувеличения, потрясающую технологию фоновой подсветки ТВ Ambilight. С такой адаптивной подсветкой меньше устают глаза при просмотре в темноте, увеличивается эффект присутствия, расширяется область отображения и пр. Ambilight применима не только к видео и фото контенту, но и играм. Ambilight превратилась в визитную карточку телевизоров Philips. С тех пор компания Philips пристально бдит, чтобы никто из крупных производителей и думать не смел посягать на святое, создавая что-то подобное. Наверное, лицензировать эту технологию можно, но условия какие-то запредельные, и другие игроки рынка не особо горят желанием это делать. Небольшие компании тоже пытались (и сейчас есть компании, которые это делают) внедрять аналогичную технологию в виде отдельных комплектов, но кара от Philips была неизбежна. Так что в лучшем случае, если компания не продлит каким-то образом патент или его производную, другие производители лишь в 2027 году смогут выпускать что-то похожее.

Но нас, обычных потребителей, такая кара не касается. Мы вольны для себя делать то, что считаем нужным. Сегодня я расскажу в деталях, как самостоятельно сделать адаптивную фоновую подсветку для ТВ или монитора по типу Philips Ambilight (далее просто Ambilight). Для некоторых статья ничего нового в себе содержать не будет, т.к. таких проектов десятки, а статей написано сотни на разных языках, и людей, которые себе уже сделали подобное, тысячи. Но для многих это всё может оказаться очень интересным. Никаких особых навыков вам не потребуется. Только базовые знания физики за 8 класс средней школы. Ну, и совсем чуть-чуть пайки проводов.

Чтобы вы лучше понимали, о чём я говорю, приведу свой пример того, что получилось. Реальные затраты на ТВ 42" — около 1000 рублей и 2 часа работы.




Видео не передаёт всех ощущений и эффекта целиком, но дети в первый раз сидели с открытыми ртами.

Нравится? Тогда смело читайте дальше, как это сделать для себя!

Возможные варианты реализации

Существует несколько вариантов вариантов реализации Ambilight. Зависят они от источника видеосигнала.

Самый дешёвый, простой и эффективный вариант — источником сигнала выступает ПК с Windows, Mac OS X или Linux. Сейчас очень распространены Windows-боксы на процессорах Atom, которые стоят от 70$. Все они идеально подходят для реализации Ambilight. Я уже несколько лет использую разные Windows-боксы (в тумбе под ТВ) в роли медиаплеера, написал небольшую кучку обзоров и считаю их самыми лучшими ТВ-приставками для медиаконтента. Аппаратная реализация этого варианта едина для всех перечисленных операционных систем. Именно об этом варианте я расскажу в статье. Программная часть будет относиться к Windows системе, в роли универсальной управляющей программы будет выступать AmbiBox. С Mac OS X и Linux можно использовать Prismatik.

Второй вариант — источником сигнала выступает медиаприставка на базе Android, коих тоже огромное количество. Этот вариант самый проблемный. Во-первых, подсветка будет работать только в медиакомбайне Kodi (и в ответвлениях этого проекта). Во-вторых, в подавляющем большинстве случаев всё работает только с отключённым аппаратным декодированием видео, что для большинства боксов неприемлемо. Аппаратная реализация проекта тоже накладывает определённые требования. Я его затрагивать не буду, но если что-то интересует конкретное, то постараюсь ответить в комментариях.

Третий вариант — независимое от источника сигнала решение. Это самое затратное, но абсолютно универсальное решение, т.к. сигнал снимается прямо с HDMI кабеля. Для него вам понадобится достаточно мощный микрокомпьютер (типа Raspberry Pi), HDMI сплиттер (разветвитель), конвертер HDMI-RCA AV, USB 2.0 устройство захвата аналогового видео. Только с таким вариантом вы сможете гарантированно задействовать Ambilight с любой ТВ-приставкой/ресивером, Android-боксами, Apple TV, игровыми приставками (например, Xbox One, PlayStation 4) и пр. устройствами, которые имеют выход HDMI. Для варианта с поддержкой 1080p60 стоимость компонентов(без светодиодной ленты) будет около 70$, с поддержкой 2160p60 — около 100$. Это вариант очень интересный, но по нему нужно писать отдельную статью.

Аппаратная часть

Для реализации понадобится три основных компонента: управляемая светодиодная RGB лента, блок питания, микрокомпьютер Arduino.

Сначала небольшое количество объяснений.

WS2811 — это трёхканальный канальный контроллер/драйвер (микросхема) для RGB светодиодов с управлением по одному проводу (адресация к произвольному светодиоду). WS2812B — это RGB светодиод в корпусе SMD 5050, в который уже встроен контроллер WS2811.

Подходящие для проекта светодиодные ленты для простоты так и называют — WS2811 или WS2812B.

WS2812B лента — это лента, на которой последовательно размещены светодиоды WS2812B. Лента работает с напряжением 5 В. Существуют ленты с разной плотностью светодиодов. Обычно это: 144, 90, 74, 60, 30 на один метр. Бывают разные степени защиты. Чаще всего это: IP20-30 (защита от попадания твёрдых частиц), IP65 (защиты от пыли и водяных струй), IP67 (защита от пыли и защита при частичном или кратковременном погружении в воду на глубину до 1 м). Подложка чёрного и белого цвета.

Вот пример такой ленты:



WS2811 лента — это лента, на которой последовательно размещены WS2811 контроллер и какой-то RGB светодиод. Есть варианты, рассчитанные на напряжением 5 В и 12 В. Плотность и защита аналогичны предыдущему варианту.

Вот пример такой ленты:



Какую ленту выбрать, WS2812B и WS2811?

Важный фактор — питание ленты, о чём я расскажу чуть позже.

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

От себя могу дать рекомендацию. Если общее количество светодиодов в системе будет не более 120, то WS2812B. Если более 120, то WS2811 с рабочим напряжением 12 В. Почему именно так, вы поймёте, когда речь зайдёт о подключение ленты к блоку питания.

Какое уровень защиты ленты выбрать?

Какую плотность светодиодов выбрать?

Для проекта подойдут ленты с плотностью от 30 до 60 светодиодов на метр (конечно, можно и 144, никто не запрещает). Чем выше плотность, тем больше будет разрешение Ambilight (количество зон) и больше максимальная общая яркость. Но стоит учитывать, чем больше светодиодов в проекте, тем сложнее будет устроена схема питания ленты, и понадобится более мощный блок питания. Максимальное количество светодиодов в проекте — 300.

Покупка ленты

Если ваш ТВ или монитор висит на стене, и все 4 стороны имеют рядом много свободного пространства, то ленту лучше всего разместить сзади по периметру на все 4 стороны для максимального эффекта. Если ваш ТВ или монитор установлен на подставку, или снизу мало свободного пространства, то ленту надо размещать сзади на 3-х сторонах (т.е. низ без ленты).

Для себя я выбрал белую ленту WS2812B IP65 с 30 светодиодами на метр. Подходящий блок питания на 5 В у меня уже был. Решал, 60 или 30 светодиодов на метр, но выбрал последнее после пересмотра видео с готовыми примерами реализации — яркость и разрешение меня устроили, да и питание легче организовать, меньше проводов. На Алиэкспресс огромное количество лотов лент WS2812B. Я заказывал здесь 5 метров за 16$. Для моего ТВ (42", 3 стороны) нужно было только 2 метра, т.е. можно было купить за 10$, оставшиеся три метра для друга. Цены часто меняются у продавцов, предложений много, так что просто выберите на Алиэкспресс дешёвый лот с высоким рейтингом (ключевые слова для поиска — WS2812B IP65 иди WS2811 12V IP65).



Покупка блока питания для ленты

Блок питания подбирается по мощности и напряжению. Для WS2812B — напряжение 5 В. Для WS2811 — 5 или 12 В. Максимальная потребляемая мощность одного WS2812B светодиода 0,3 Вт. Для WS2811 в большинстве случаев аналогично. Т.е. мощность блока питания должна быть не ниже N * 0,3 Вт, где N — количество светодиодов в проекте.

Например, у вас ТВ 42", вы остановились на ленте WS2812B с 30 светодиодами на метр, вам нужно 3 метра ленты все 4 стороны. Вас понадобится блок питания с напряжением 5 В и максимальной мощностью от 0,3 * 30 * 3 = 27 Вт, т.е. 5 В / 6 А. В моей реализации используются только 3 стороны, всего 60 светодиодов (если быть точным, то 57) — мощность от 18 Вт, т.е. 5 В / 4 А.

У меня давно уже лежит без дела многопортовая USB-зарядка ORICO CSA-5U (8 А), оставшаяся после старого обзора. Питание портов у неё запараллельно (это критически важно), мне это ЗУ идеально подходит в роли БП, т.к. подключать ленту я буду через 2 параллельных соединения (объяснения будут чуть позже в статье).



Если бы этого ЗУ у меня не было, то я бы выбрал такой БП 5 В / 4 А за 4$ (есть информация, что именно в этот БП ставят внутренности на 2,5 А, так что надо детальней изучить этот вопрос у продавца, или посмотреть другие модели).


Покупка микрокомпьютера

Управлять Ambilight будет микрокомпьютер Arduino. Arduino Nano на Алиэкспресс стоит около 2,5$ за штуку.


Затраты на мой вариант (для ТВ 42"):

10$ — 2 метра WS2812B IP65 (30 светодиодов на метр)
4$ — блок питания 5 В / 4 А (денег на БП не тратил, привожу стоимость для ясности)
2,5$ — Arduino Nano
-----------
16,5$ или 1000 рублей

Реализация аппаратной части

Самое главное — это правильно организовать питание ленты. Лента длинная, напряжение просаживается при большом токе, особенно при 5 В. Большинство проблем, которые возникают у тех, кто делает себе Ambilight, связаны именно с питанием. Я пользуюсь правилом — нужно делать отдельную подводку питания на каждые 10 Вт потребляемой максимальной мощности при 5 В и 25 Вт потребляемой мощности при 12 В. Длина подводки питания (от блока питания до самой ленты) должна быть минимальной (без запаса), особенно при 5 В.

Общая схема подключения выглядит следующим образом (на схеме отображено подключение питания для моего варианта):



К ленте с обоих концов подведено питание — два параллельных подключения. Для примера, если бы я делал подсветку на все 4 стороны, а лента была по 60 светодиодов на метр (т.е. максимальная мощность 54 Вт), то я бы сделал такой подвод питания:



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

К Arduino от ленты идут два контакта. GND, который нужно подключить к соответствующему пину на Arduino. И DATA, который нужно подключить к шестому цифровому пину через резистор 300-550 Ом (лучше 470 Ом). Если резистора у вас нет, то в большинстве случаев всё будет прекрасно работать и без него, но лучше, чтобы он был. Резистор можно купить за пару копеек в любом радиомагазине. Сам микрокомпьютер Arduino можете разместить в любом удобном корпусе, многие используют для этого яйцо Киндер-сюрприза. Arduino нужно размещать как можно ближе к ленте, чтобы подводка DATA имела минимальную длину.

В моём случае получилось вот так:




Важный вопрос — как изгибать ленту под прямым углом? Если у вас лента на 60 светодиодов, то ленту нужно разрезать и соединять короткими проводами (разместив всё это в термоусадочной трубке). Можете купить специальные угловые коннекторы на три контакта для светодиодных лент (на снимке 4 контакта, просто для примера):



Я отрезал кусок ленты, чтобы практиковаться. Главное, не нужно переусердствовать — слегка согнули один раз и всё. Тюда-сюда перегибать не нужно, сильно сдавливать линию изгиба не нужно.



Вот вид сзади ТВ, все провода через отверстие уходят внутрь тумбы:


Программная часть

Это самое простое.

Загружаем и распаковываем Arduino IDE. Загружаем библиотеку FastLED и кладём папку FastLED в папку libraries (Arduino IDE). Запускаем Arduino IDE и закрываем её. В папке Документы будет создана папка Arduino. В ней создаём папку Adalight и копируем тут скетч Adalight.ino.

Подключаем микрокомпьютер Arduino по USB. Драйвер (последовательного интерфейса CH340) установится автоматически. Если этого не произошло, то в папке Arduino IDE есть папка Drivers со всем необходимым.

Запускаем Arduino IDE и открываем файл Adalight.ino.



Изменяем количество светодиодов в коде. У меня 57.



Инструменты > Плата > Arduino nano
Инструменты > Порт > Выбираете COM-порт (там будет нужный вариант)



Программа проинформирует, когда загрузка будет завершена (это буквально пара секунд).

Готово. Нужно отключить Arduino от USB и подключить заново. Лента загорится последовательно красным, зелёным и синим цветом — Arduino активировался и готов к работе.



Чтобы активировать профиль, достаточно два раза мышкой нажать на соответствующую иконку (профилей AmbiBox) в области уведомлений Windows. Лента сразу загорится. Отключается тоже двойным нажатием.

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

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

Внешний вид проекта управления цветной светодиодной матрицей WS2812B с помощью Arduino и Android приложения

В данной статье мы рассмотрим управление цветной светодиодной матрицей WS2812B (Neopixel Based RGB LED matrix shield) с помощью платы Arduino и Android приложения Blynk с целью создания "обворожительных" световых эффектов. Цветная светодиодная матрица WS2812B реализована в виде шилда (платы расширения) для Arduino.

Adafruit 5X8 NeoPixel шилд для Arduino

Совместимая с Arduino NeoPixel Shield (шилд, плата расширения) содержит 40 трехцветных светодиодов (RGB LEDs) с индивидуальной адресацией. Данная плата расширения имеет встроенный драйвер WS2812b, который организует (упорядочивает) матрицу 5×8 светодиодов в NeoPixel Shield. При необходимости несколько таких шилдов могут быть объединены в один чтобы сформировать светодиодную матрицу большого размера. Для управления трехцветными светодиодами в составе данного шилда необходим всего лишь один контакт платы Arduino, в нашем случае мы решили использовать для этой цели контакт 6.

В нашем проекте все светодиоды матрицы запитываются от контакта 5V платы Arduino, мощности которого достаточно для запитывания примерно трети светодиодов матрицы с полной яркостью. Для запитывания большего числа светодиодов необходимо подключать внешний источник питания 5V.

Принцип управления светодиодной матрицей с помощью Arduino и приложения Blynk

Используемая в нашем проекте светодиодная матрица 8*5 содержит 40 трехцветных светодиодов (RGB LEDs) с индивидуальной адресацией с помощью драйвера WS2812B. Она позволяет использовать 24-битное управление цветом, что позволяет реализовать 16.8 миллионов цветов на одном пикселе. Управляется данная матрица по одному проводу. Как следует из даташита на светодиоды матрицы рабочее напряжение для них составляет от 4 до 6 В, при этом при напряжении 5 В и полной яркости всех трех цветов один такой светодиод потребляет ток примерно 50 mA. Также матрица содержит защиту от неправильной полярности напряжения (Reverse-voltage protection) на внешних контактах подачи питания и кнопку сброса (Reset button), с помощью которой можно производить сброс платы Arduino. Также у нее есть контакт для внешней подачи питания для светодиодов, его можно использовать в случае когда мощности внутреннего источника питания не хватает.

Структурная схема управления светодиодной матрицей с помощью Arduino и приложения Blynk

Как показано на представленной структурной схеме, нам необходимо скачать и установить на свой смартфон приложение Blynk (Blynk application), с помощью которого можно будет управлять цветом и яркостью свечения светодиодов в используемой нами светодиодной матрице. После установки этих параметров в приложении Blynk даже если потом с этим приложением что-нибудь случится, мы все равно можем скачать/изменить эти данные из облака Blynk (Blynk cloud) с помощью нашего компьютера. Когда плата Arduino Uno подключена к компьютеру с помощью USB кабеля, то процесс получения этих данных выглядит следующим образом. Компьютер запрашивает данные из облака Blynk через определенные интервалы времени и если данные в этом облаке обновились, то он передает их плате Arduino, которая управляет изменением цвета и яркости свечения светодиодов. Шилд цветной светодиодной матрицы (RGB LED shield) размещен на плате Arduino и он соединен одиночным проводом с одним из контактов платы Arduino (по умолчанию это контакт D6). Последовательные данные от платы Arduino передаются на данный шилд Neopixel и управляют свечением светодиодов на нем.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Шилд цветной светодиодной матрицы 8*5 (8*5 RGB LED Matrix shield) (купить на AliExpress - смог найти там только один похожий шилд и он не от компании Adafruit, но драйвер у него точно такой же какой рассматривается в статье).
  3. USB A/B кабель для Arduino Uno.
  4. Персональный компьютер или ноутбук

Соединение шилда цветной светодиодной матрицы с платой Arduino

Используемый нами шилд светодиодной матрицы (Adafruit RGB LED Shield с драйвером WS2812B) имеет всего три контакта – один для передачи данных и два для питания. Его очень просто подключить к плате Arduino – для этого необходимо просто поместить наш шилд Neopixel LED matrix сверху платы Arduino UNO. В этом случае светодиодная матрица будет запитываться от контакта 5V платы Arduino. После установки ее сверху на плату Arduino вся конструкция будет выглядеть следующим образом:

Внешний вид установленного шилда на плату Arduino

Настройка приложения Blynk

Blynk – это приложение, которое может работать на мобильных операционных системах Android и IOS и позволяет с помощью смартфона управлять различными устройствами, поддерживающими концепцию интернета вещей (Internet of Things, IoT). При использовании данного приложения нам сначала необходимо создать в нем графический интерфейс пользователя (Graphical User Interface, GUI). Из этого графического интерфейса данные будет передаваться в облако Blynk. На приемной стороне мы имеет плату Arduino, подключенную к компьютеру по USB кабелю. Таким образом, компьютер запрашивает эти данные из облака Blynk и потом эти данные передаются в плату Arduino для дальнейшей обработки.

Прежде чем начать работу с приложением скачайте его (Blynk Application) из магазина Google Play (пользователи IOS аналогичным образом могут скачать его из App Store). После скачивания приложения зарегистрируйтесь в нем используя ваш email и придумав пароль.

Создание нового проекта

Послу успешной установки и регистрации в приложении Blynk вы увидите на его главной странице кнопку “New Project” (новый проект). Нажмите ее и у вас в приложении откроется новое окно, в котором необходимо будет ввести такие параметры проекта как имя, плату и тип соединения. Для нашего проекта выберите плату “Arduino UNO”, тип соединения “USB” и нажмите на кнопку “Create” (создать).

После успешного создания проекта вам на электронную почту (с которой вы регистрировались в приложении) придет ваш идентификатор подлинности (Authenticate ID). Сохраните его – он нам пригодится в дальнейшем.

Создание нового проекта в приложении Blynk

Создание графического интерфейса пользователя (GUI)

Откройте проект в приложении Blynk, в нем нажмите на значок “+” – после этого вы получите доступ к виджетам (графическим элементам), которые вы можете использовать в своем проекте. В нашем случае нам будет нужен RGB Color Picker который назван как “zeRGBa”, как показано на следующем рисунке.

Создание графического интерфейса пользователя в приложении Blynk

Установка виджета

После перетаскивания (dragging) виджета в наш проект нам необходимо установить его параметры, которые будет необходимы для передачи значений цветов плате Arduino UNO.

Нажмите на ZeRGBa, после чего откроется экран с его настройками (ZeRGBa setting). Установите в нем Output option (настройка выхода) в положение “Merge”, а контакт “V2” установите в положение, показанное на следующем рисунке:

Установка виджета в приложении Blynk

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе нам необходимо подключить все используемые библиотеки. Откройте Arduino IDE, в нем перейдите на вкладку Sketch и в ней нажмите на опцию Include Library-> Manage Libraries. В открывшемся окне выполните поиск "Blynk", после его нахождения скачайте и установите пакет Blynk (Blynk package) для платы Arduino UNO.

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

Адресные LED-ленты

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

Особенности подключения и управления адресной светодиодной лентой

Устройство адресной ленты

Базой для построения таких осветительных приборов стали адресные светодиоды. Они содержат собственно полупроводниковый светоизлучающий элемент и индивидуальный драйвер ШИМ. В зависимости от типа адресного элемента, RGB LED может располагаться внутри общего корпуса или быть вынесенным и подключаться к выводам драйвера. В качестве светоизлучателя могут применяться раздельные светодиоды или RGB-сборка. Напряжение питания также может быть различным. Сравнительные характеристики распространенных микросхем, применяемых для управления цветными светодиодами, приведены в таблице.

Дополнительный управляющий вход

Потребление тока одного метра адресной лентой довольно велико, ведь мощность расходуется не только на свечение p-n переходов, но и на коммутационные потери ШИМ-драйверов.

Устройство элемента светильника

Каждый адресный светодиод содержит минимальное количество выводов:

  • U питания (VDD);
  • общий провод (GND);
  • вход данных (DIN);
  • выход данных (DOUT).

Это позволяет элементы со встроенными излучателями размещать в корпусах с 4 выводами (WS2812B).

WS2812B

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

Так, проектанты микросхемы WS2811 задействовали свободный вывод под переключатель скорости, а WS2818 – под резервный вход данных (BIN).

Соединение элементов

Все элементы, расположенные на полотне, соединены по питанию параллельно, а по шине данных – последовательно. Выход управления одной микросхемы соединяется со входом другой. Управляющий сигнал с контроллера подается на вывод DIN крайнего левого по схеме драйвера.

Схема соединений элементов на полотне.

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

Особенности подключения и управления адресной светодиодной лентой

Управление свечением

Управляются элементы адресной ленты по последовательной шине. Обычно такие шины строятся по двухпроводной схеме – линия строба и линия данных. Существуют и такие ленты, но они получили меньшее распространение. А описываемые приборы управляются по однопроводной схеме. Это позволило упростить полотно, удешевить его. Но оплачено это низкой помехоустойчивостью LED-прибора. Любую наведенную помеху с достаточной амплитудой драйверы могут интерпретировать как данные и непредсказуемо засветиться. Поэтому при монтаже надо предпринимать дополнительные меры для защиты от помех.


Особенности подключения и управления адресной светодиодной лентой

Схема подключения светильника и типичные ошибки

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

Особенности подключения и управления адресной светодиодной лентой

  1. Из-за повышенного энергопотребления адресной ленты запитывать ее от платы Ардуино нельзя (если используются небольшие отрезки – нежелательно). В общем случае для организации питания потребуется отдельный источник (в некоторых случаях он может быть один, но цепи питания для светодиодов и контроллера должны быть выполнены раздельно). Но общие провода (GND) цепей питания и платы Arduino должны быть соединены. В противном случае система будет неработоспособной.
  2. Из-за пониженной помехоустойчивости проводники, соединяющие выход контроллера и вход полотна, должны быть как можно короче. Крайне желательно, чтобы они были не длиннее 10 см. Также далеко не лишним будет подключение на линию питания конденсатора С на напряжение, превышающее напряжение питания ленты, и емкостью от 1000 мкФ. Устанавливать конденсатор надо в непосредственной близости от ленты, в идеале – на контактных площадках.
  3. Отрезки ленты можно соединять последовательно. Выход DOUT надо подключать к входу DIN следующего куска. Но при общей длине, превышающей 1 метр, последовательное соединение применять нельзя – проводники линий питания полотна не рассчитаны на большой ток. И в этом случае надо применить параллельное соединение отрезков.
  4. Если соединить выход контроллера и вход DIN напрямую, при возникновении нештатной ситуации в светильнике выход контроллера может выйти из строя. Чтобы этого избежать, в разрыв провода надо поставить резистор сопротивлением до нескольких сотен Ом.

Несоблюдение этих простых правил может привести к неработоспособности мультимедийной системы или к выходу из строя ее компонентов.


Проверка исправности адресной ленты

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

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

Стариков Михаил

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

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

Рассмотрим подключение светодиодной ленты или панели со светодиодами WS2812/WS2812B, принцип и особенности их работы, а также управление панелью с помощью микросхемы FT2232H по интерфейсу SPI.

Для проекта нам понадобятся:

    или лента со светодиодами WS2812B; ;
  • персональный компьютер или ноутбук.

1 Описание RGB светодиодов WS2812 и WS2812B

Светодиод WS2812 (или его модификация WS2812B, которая и будет использована в данной статье) представляет собой RGB светодиод. То есть в одном корпусе представлены сразу три светодиода разных цветов: красный, зелёный и синий.

Внешний вид и габариты светодиодов WS2812

Внешний вид и габариты светодиодов WS2812

Светодиод WS2812 имеет 6 выводов, в то время как WS2812B – лишь 4.

А вот назначение выводов светодиода WS2812B:

Для примера на схеме показано последовательное подключение трёх светодиодов. На вход DIN первого светодиода подаётся управляющий сигнал. Светодиод обрабатывает его и передаёт далее со своего выхода DOUT на вход следующего в цепочке светодиода. И так сигнал проходит по всей цепочке светодиодов, каждый из которых считывает свою управляющую последовательность и изменяет свой цвет и интенсивность в соответствии с пришедшей командой.

Последовательное подключение светодиодов WS2812B

Последовательное подключение светодиодов WS2812B

На фотографии представлена панель размером 10 на 10 светодиодов, с которой мы и будем экспериментировать. Как видно, на нижней части панели светодиоды соединены в единую цепочку.

Внешний вид панели из светодиодов WS2812B
Верхняя сторона панели светодиодов WS2812B
Внешний вид панели из светодиодов WS2812B
Нижняя сторона панели из светодиодов WS2812B

Управление светодиодной панелью WS2812B

Управление светодиодной панелью WS2812B

Приблизительное потребление вашего устройства можно оценть так. Один канал светодиода на максимальной яркости потребляет около 20 мА. В одном корпусе располагаются 3 светодиода. Следовательно, один RGB светодиод в максимуме потребляет до 60 мА тока. Умножаете это число на количество светодиодов в вашей матрице или ленте – это и будет максимально возможное потребление, и ваш источник питания должен иметь возможность выдать такой ток.

2 Управление светодиодами WS2812B (или WS2812)

Если просто подать на светодиодную ленту напряжение, ничего не произойдёт. Светодиоды ждут определённый сигнал, который будет ими управлять. Для управления используется последовательный однопроводный интерфейс. Биты "0" и "1" кодируются импульсами различной длины.

Коды нуля, единицы и сброса светодиода WS2812B

Коды нуля, единицы и сброса светодиода WS2812B

На диаграмме обозначены:

  • T0H – время выдержки высокого уровня при передаче кода логического нуля;
  • T0L – время выдержки низкого уровня при передаче кода логического нуля;
  • T1H – время выдержки высокого уровня при передаче кода логической единицы;
  • T1L – время выдержки низкого уровня при передаче кода логической единицы;
  • Treset – время сигнала оповещения об окончании управляющей последовательности.

Причём временные допуски заданы весьма жёстко. Так, для WS2812B время T0H = T1L и составляет 0,35 мкс, а время T1H = T0L и составляет 0,9 мкс. Для светодиода WS2812 временные параметры более изощрённые: T0H = 0,35 мкс, T1H = 0,7 мкс, T0L = 0,8 мкс, T1L = 0,6 мкс. Но длительность передачи одного бита и там, и там составляет 1,25 мкс.

Для указания цвета светодиода используется 24-битная схема RGB: под каждый из трёх каналов отводится по 8 бит. И расположены цвета в следующем порядке:

Кодирование цвета в пространстве RGB для светодиода WS2812B

Кодирование цвета в пространстве RGB для светодиода WS2812B

Осталось дело за малым: передать цепочке светодиодов WS2812B осмысленную управляющую последовательность.

На этот счёт есть такая идея. По сути нам необходимо передавать 24-битные значения цвета в соответствии с положением светодиода в матрице 10 на 10. Аналогичным образом данные хранятся в графических файлах формата *.BMP. Только у них в начале файла ещё присутствует заголовок, который содержит дополнительную информацию: размер изображения, сколько бит приходится на один пиксель, есть ли сжатие и т.д. Вот как в деталях устроен формат BMP:

Внутреннее устройство формата BMP

Внутреннее устройство формата BMP

Обратите внимание, что в массиве данных о точках изображения BMP содержатся заполнители (Padding), которые дополняют строку байтов до числа, кратного 4. Т.е., например, в нашем случае строка содержит 10 пикселей по 24 бита на цвет (3 байта). Соответственно, строка будет содержать 3×10=30 байтов. Но 30 не кратно 4. Ближайшее число, кратное 4, это 32. Соответственно, в файле BMP будет на каждую строку изображения на 2 байта заполнителя больше. Байты-заполнители нужно пропускать и не включать в управляющий массив.

Ах, да, чуть не забыл. В файле изображения BMP данные о цвете хранятся в формате R-G-B, а светодиод WS2812 принимает цвет в формате G-R-B. Необходимо поменять местами цвета, иначе все изображения будут совсем не тех цветов, которые мы ожидаем.

3 Управление светодиодной панелью WS2812B по SPI с помощью FT2232H

Предлагаю использовать для управления диодами WS2812B отладочную плату с микросхемой FT2232H и программу SPI via FTDI, которые уже не раз нас выручали. Единственная загвоздка в том, что FT2232H не может формировать импульсы с заданной длительностью. Придётся сымитировать их. Идея здесь следующая.

Будем использовать режим SPI и его линию MOSI для передачи двоичных данных загрузки светодиодов. Причём необходимо выбрать такую частоту передачи, чтобы длительность одного бита равнялась 1,25 мкс. Т.к. нам вместо одного бита нужно передавать четыре, то для обеспечения той же длительности одного бита управляющей последовательности частота SPI должна быть в 4 раза выше: вместо 1/1.25 будет 4/1.25 мкс = 3.2 МГц. Это микросхема FT2232H способна обеспечить.

Если сформировать произвольную управляющую последовательность и посмотреть её на осциллографе, то увидим, что эта идея вполне работоспособна: на осциллограмме видны 6 логических единиц, а затем логический ноль. Причём длительность передачи одного бита в среднем равняется как раз тем самым 1.25 мкс.

Осциллограмма части управляющего сигнала светодиодами WS2812B

Осциллограмма части управляющего сигнала светодиодами WS2812B

Теперь, когда мы умеем формировать биты необходимой длительности, нужно взять массив, считанный из соответствующего раздела BMP файла, и преобразовать его побитово в то, что нам нужно (бит "0" – в 0x8, "1" – в 0xE).

Параметры программы при загрузке управляющего массива WS2812

Параметры программы при загрузке управляющего массива WS2812

Включение первых трёх светодиодов панели WS2812B

Включение первых трёх светодиодов панели WS2812B

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

Управление светодиодной панелью WS2812B

Управление светодиодной панелью WS2812B

С помощью такой панели можно создавать довольно красивые и зрелищные эффекты, как, например, цветовые градиенты:

Рисование с помощью светодиодной панели WS2812B
Рисование с помощью светодиодной панели WS2812B
Градиент с помощью светодиодной панели WS2812B
Градиент с помощью светодиодной панели WS2812B

Как развитие данной идеи, с помощью такой LED-панели можно воспроизводить анимацию. Для этого можно создать управляющий файл, в котором последовательно будут содержаться управляющие массивы для всех кадров анимации, а для обеспечения пауз между кадрами будет необходимое число нулей. Посчитать число нулей несложно, если вспомнить, что время передачи одного бита составляет 1,25 мкс.

Читайте также: