Адресная светодиодная лента ws2812 и arduino

Технические проблемы при подключении нескольких полос на основе WS2812B

Успешное включение одной полосы на основе WS2812B не означает, что вы не столкнетесь с проблемами, когда соедините нескольких таких полос вместе

Например, соединение полос обычно требует пайки, и важно, чтобы пайка была выполнена качественно, поскольку даже небольшой дефект может негативно влиять на передачу данных

Еще один момент, на который должны обращать внимание разработчики, – это правильное соединение с источником питания каждой из подключаемых полос. Распространена ошибка, когда источник питания 5 В подключается с одного конца одной полосы, к другому концу подключается следующая полоса, и так все полосы соединяются последовательной цепочкой

В этом случае вы можете с удивлением обнаружить, что нужным цветом светится только часть общей конструкции.

Причина такого поведения объясняется падением напряжения по длине ленты. WS2812B не будет работать правильно, если напряжение питания выходит за пределы требуемого диапазона

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

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

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

Принцип работы

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

В адресной ленте также используются светодиоды в корпусе 5050, но отличающимся тем, что у них 4, а не 6 выводов. В самом же корпусе расположены светоизлучающие кристаллы и микрочип, управляющий их свечением, на иллюстрации на него указывает красная стрелка.

По питанию все светодиоды в ленте соединены параллельно, а линии управления соединяются последовательно. Распиновка адресной ленты следующая: контакты +5V и GND отвечают за питание, контакт DO – выход управляющего сигнала, а DI – вход.

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

Наиболее распространены две модели с разными контроллерами, это ws2812b и ws2811. Главное их отличие в том, что изделия с чипами ws2811 питаются от 12 Вольт, а сам чип находится не внутри светодиода, а отдельно и управляет сегментом из трёх светодиодов. Так в моделях с ws2811 возможно управление не каждым светодиодом, а каждым сегментом из 3 светодиодов сразу, что несколько ограничивает применение.

Принцип управления не слишком сложный:

  • Сигнал управления посылается на ленту небольшими «пачками» цифровых импульсов длиной в 24 бита. Контроллер принимает этот сигнал и выдаёт на светодиоды определенное напряжение для получения нужного цвета.
  • Напомню, что в случае с WS2812b контроллер встроен в светодиод и управляющий сигнал управляет каждым светодиодом отдельно, а в случае с WS2811 контроллер общий для сегмента из трёх светодиодов. То есть возможно задать параметры свечения для каждого отдельного сегмента.
  • При этом первый контроллер принимает первую пачку из 24-бит, вторая 24-битная команда принимается вторым чипом и так далее. Каждая последующая 24-битная команда посылается на каждый следующий контроллер, нумерация пачек при этом совпадает с нумерацией контроллеров.
  • Таким образом, управляют индивидуально каждым контроллером. Если один из блоков неисправен, например, второй, то горит только первый светодиод. Остальные светиться не будут, так как не будет проходить управляющий сигнал.

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

Но желательно подавать сигал управления через резистор номиналом в 200-400 Ом, для защиты пина Ардуино.

Устройство представляет программируемый микроконтроллер семейства AVR, с уже разведенной платой, питанием и схемой для программирования через USB. С помощью записи в него различных программ можно получить не ограниченное количество цветовых сочетаний и чередований. Что позволяет создать неограниченное количество вариантов для подсветки. Широкое распространение ограничивается относительно высокой стоимостью в отличие от обычных диодов.

Варианты подсветки подвесного потолка

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

Виды

Для освещения подвесного потолка чаще всего используются:

  • неоновые лампы, отличающиеся разнообразием цветов, но достаточно дорогие и требующие установки бортиков для крепления светильников;
  • дюралайт – экономичный вариант, минусом которого является выход из строя всего шнура, если перестал работать хотя бы один элемент;
  • светодиодные ленты – самый универсальный вид подсветки, подходящий как для одноуровневого потолка, так и для многоуровневых конструкций в комнатах любого назначения.

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

Порядок установки

Подсветка подвесного потолка делается открытой или скрытой. Чаще всего выбирают второй вариант, основные этапы которого выглядят следующим образом:

  1. Прокладывают и подключают проводку. Один из способов подключения предусматривает использование кабель-канала, второй – прокладку провода в гофре.
  2. Если используется кабель-канал, проводку размещают внутри конструкции и крепится к стене.
  3. При прокладке в гофре проводку крепят крепёжными клипсами, кабель к каждому светильнику прокладывают в отдельной гофрированной трубке.
  4. Выполняют отверстия под светильники в соответствии с чертежом (для ленты таких действий не требуется).
  5. Устанавливают и подключают к питанию светильники или светодиодная лента.

Подключение более 5 метров.

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

Когда количество пикселей на контроллере позволяет
подключить большую длину, вы без проблем стыкуете коннекторы DI и DO между
собой. Но вот питание (5В или 12В), все равно придется тянуть отдельно
(параллельно).

Есть контроллеры с дополнительными проводами под “лишнее”
питание на такой случай.

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

Например, взять три куска ws2812b (5м+5м+5м)
и подать на них в самом начале ленты 15 вольт, рассчитывая при этом на
последовательное падение напряжения.

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

Ошибка №7
Лента вместо белого светится с оттенком желтоватого или красного цвета.

Скорее всего дело здесь в неправильно подобранном сечение
проводов. Всегда берите минимум 1,5мм2.

Недостаток цвета – это первый признак просадки
напряжения. Уход в красноту объясняется тем, что для синего и зеленого цветов
на чипе 2812b требуется порядка 3,5В, а вот для
красного достаточно и 2В.

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

Effects

  1. Static — No blinking. Just plain old static light.
  2. Blink — Normal blinking. 50% on/off time.
  3. Breath — Does the «standby-breathing» of well known i-Devices. Fixed Speed.
  4. Color Wipe — Lights all LEDs after each other up. Then turns them in that order off. Repeat.
  5. Color Wipe Inverse — Same as Color Wipe, except swaps on/off colors.
  6. Color Wipe Reverse — Lights all LEDs after each other up. Then turns them in reverse order off. Repeat.
  7. Color Wipe Reverse Inverse — Same as Color Wipe Reverse, except swaps on/off colors.
  8. Color Wipe Random — Turns all LEDs after each other to a random color. Then starts over with another color.
  9. Random Color — Lights all LEDs in one random color up. Then switches them to the next random color.
  10. Single Dynamic — Lights every LED in a random color. Changes one random LED after the other to a random color.
  11. Multi Dynamic — Lights every LED in a random color. Changes all LED at the same time to new random colors.
  12. Rainbow — Cycles all LEDs at once through a rainbow.
  13. Rainbow Cycle — Cycles a rainbow over the entire string of LEDs.
  14. Scan — Runs a single pixel back and forth.
  15. Dual Scan — Runs two pixel back and forth in opposite directions.
  16. Fade — Fades the LEDs on and (almost) off again.
  17. Theater Chase — Theatre-style crawling lights. Inspired by the Adafruit examples.
  18. Theater Chase Rainbow — Theatre-style crawling lights with rainbow effect. Inspired by the Adafruit examples.
  19. Running Lights — Running lights effect with smooth sine transition.
  20. Twinkle — Blink several LEDs on, reset, repeat.
  21. Twinkle Random — Blink several LEDs in random colors on, reset, repeat.
  22. Twinkle Fade — Blink several LEDs on, fading out.
  23. Twinkle Fade Random — Blink several LEDs in random colors on, fading out.
  24. Sparkle — Blinks one LED at a time.
  25. Flash Sparkle — Lights all LEDs in the selected color. Flashes single white pixels randomly.
  26. Hyper Sparkle — Like flash sparkle. With more flash.
  27. Strobe — Classic Strobe effect.
  28. Strobe Rainbow — Classic Strobe effect. Cycling through the rainbow.
  29. Multi Strobe — Strobe effect with different strobe count and pause, controlled by speed setting.
  30. Blink Rainbow — Classic Blink effect. Cycling through the rainbow.
  31. Chase White — Color running on white.
  32. Chase Color — White running on color.
  33. Chase Random — White running followed by random color.
  34. Chase Rainbow — White running on rainbow.
  35. Chase Flash — White flashes running on color.
  36. Chase Flash Random — White flashes running, followed by random color.
  37. Chase Rainbow White — Rainbow running on white.
  38. Chase Blackout — Black running on color.
  39. Chase Blackout Rainbow — Black running on rainbow.
  40. Color Sweep Random — Random color introduced alternating from start and end of strip.
  41. Running Color — Alternating color/white pixels running.
  42. Running Red Blue — Alternating red/blue pixels running.
  43. Running Random — Random colored pixels running.
  44. Larson Scanner — K.I.T.T.
  45. Comet — Firing comets from one end.
  46. Fireworks — Firework sparks.
  47. Fireworks Random — Random colored firework sparks.
  48. Merry Christmas — Alternating green/red pixels running.
  49. Fire Flicker — Fire flickering effect. Like in harsh wind.
  50. Fire Flicker (soft) — Fire flickering effect. Runs slower/softer.
  51. Fire Flicker (intense) — Fire flickering effect. More range of color.
  52. Circus Combustus — Alternating white/red/black pixels running.
  53. Halloween — Alternating orange/purple pixels running.
  54. Bicolor Chase — Two LEDs running on a background color.
  55. Tricolor Chase — Alternating three color pixels running.
  56. thru 62. Custom — Up to eight user created custom effects.

Библиотеки

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

Библиотека FastLED, разрабатывается Даниэлем Гарсиа и Марком Кригсманом. Имеет свой сайт, справочную систему и большое сообщество в ~5000 человек. Библиотека написана на чистом Си, без использования Wiring. FastLED поддерживает все виды Arduino (и не только), а также умеет работать с кучей различных протоколов и интерфейсов. В том числе и протокол для управления лентами на светодиодах WS2812B.

Библиотека Adafruit NeoPixel разрабатывается компанией Adafruit Industries. Предназначена для работы со светодиодными лентами и неопиксельными кольцами, продаваемыми в их интернет магазине. Библиотека написана на Си и Ассемблере с небольшим использованием Wiring. Эдакая солянка. Поддерживает все виды Arduino. Содержит меньший функционал по сравнению с FastLED, немного медленней, но имеет более компактный вид, только основное для работы.

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

Адресная лента ws2813

Поэтому прогресс не стоял на месте и позже были разработаны более совершенные ленты – ws2813 (5V), ws2815 (12V).

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

Как это работает? Сигнал в нормальном состоянии поступает на Data Input (DIN) и выходит с чипа на Data Out (DO). По такой цепочке данные проходят по всей ленте.

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

Второй чип анализирует пропажу сигнала на DIN, но
видит его наличие на BIN и продолжает
работать как ни в чем не бывало.

Самое главное, чтобы при выходе из строя первого диода не
произошло замыкания между VDD и GND.

Ошибка №1
Никогда не используйте подсветку на чипах типа WS2812b при съемке видео.

Если захотите снимать кино или видеоклип с такой
подсветкой, то применяйте только ленту WS2813, не
меньше.

Дело здесь в частоте регенерации. У старых моделей она
всего 400Гц.

Для человеческого глаза это может быть и незаметно, а вот камера вам такой ошибки не простит.

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

Результат на пойманом стопкадре.

Надо заметить, что это всего лишь один подключенный светодиод 2812b и 2813, а не несколько их штук в одном ряду.

Правильная покупка светодиодной ленты на AliExpress.

Что еще можно сказать по сечению проводов? Например,
лента 2812 на один диод потребляет порядка 60мА. При длине подсветки в 5 метров
ток составит 18 Ампер!

По всем расчетным таблицам для такого тока требуются
провода сечением 2,0-2,5мм2. Даже на самой ленте медные дорожки такого сечения
не обеспечивают.

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

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

Но как это проверить, не покупая изделие? Элементарно –
запросите информацию по весу ленты. После этого сравните одинаковые модели от
разных производителей.

Так например, у ленты длиной 5м (60 светодиодов на метр)
при весе менее 100гр просадки напряжения начинаются уже через 1,5 метра!

Объясняется это очень тонкими медными дорожками или
некачественной медью в них.

Почему светодиоды на конце ленты теплого белого света / розового цвета на конце при движении белого цвета?

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

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

(ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: приведенный выше чертеж не предназначен для точной научной диаграммы. Это простое визуальное представление, чтобы дать вам приблизительное представление о том типе эффекта, который вы иногда можете наблюдать, когда происходит различный процент падения напряжения.)

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

Адресные линейные светильники представляют собой усложненный вариант RGB матрицы, собранный на базе светодиодов в SMD корпусе типоразмера 5050. В каждом корпусе имеется микрочип ШИМ драйвера, позволяющий управлять режимом работы именно светодиода. Параметры светильника:

  • ток
    потребления интегральной микросхемы ШИМ составляет 1 мкА;
  • сам светодиод потребляет 20 мА, а весь
    пиксель — 60 мА;
  • диапазон температур, при которых прибор может
    работать без сбоев — от – 25° до +80°;
  • степень защиты IP30, IP65 или IP67.

Степень защиты — это важный параметр. Он определяет способность светильника противостоять внешним воздействиям, как температурным, так и механическим. Если изделие планируется использовать в условиях улицы, необходимо выбирать экземпляры с уровнем защиты не менее IP65 или IP67.

Маркировка

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

  • серия;
  • номер завода, на котором произведены светодиоды;
  • длина (в миллиметрах);
  • тип герметизации (P — прямоугольная трубка из
    силикона, SE —
    сверху имеется заливка силиконовым герметизирующим составом, PGS — сплошная заливка герметиком в
    силиконовой трубке);
  • напряжение питания;
  • плотность элементов на ленте (2Х — двойная
    плотность, 2Х2 — двойная плотность в два ряда);
  • цвет
    свечения ленты;
  • тип корпуса светодиодов;
  • общее количество светодиодов на данной ленте;
  • тип основания (W — белое, Y — желтое, B — черное, LUX — белая основа высшего
    качества).

Download, Install and Example

You can search for WS2812FX in the Arduino IDE Library Manager or install the latest (or development) version manually:

  • Install the famous Adafruit NeoPixel library (v1.1.7 or newer)
  • Download this repository.
  • Extract to your Arduino libraries directory.
  • Open Arduino IDE.
  • Now you can choose File > Examples > WS2812FX > …

See examples for basic usage.

In it’s most simple form, here’s the code to get you started!

#include <WS2812FX.h>

#define LED_COUNT 30
#define LED_PIN 12

WS2812FX ws2812fx = WS2812FX(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  ws2812fx.init();
  ws2812fx.setBrightness(100);
  ws2812fx.setSpeed(200);
  ws2812fx.setMode(FX_MODE_RAINBOW_CYCLE);
  ws2812fx.start();
}

void loop() {
  ws2812fx.service();
}

More complex effects can be created by dividing your string of LEDs into segments (up to ten) and programming each segment independently. Use the setSegment() function to program each segment’s mode, color, speed and direction (normal or reverse):

setSegment(segment index, start LED, stop LED, mode, color, speed, reverse);

Note, some effects make use of more then one color (up to three) and are programmed by specifying an array of colors:

setSegment(segment index, start LED, stop LED, mode, colors[], speed, reverse);

// divide the string of LEDs into two independent segments
uint32_t colors[] = {RED, GREEN};
ws2812fx.setSegment(, ,           (LED_COUNT/2)-1, FX_MODE_BLINK, colors, 1000, false);
ws2812fx.setSegment(1, LED_COUNT/2, LED_COUNT-1,     FX_MODE_BLINK, COLORS(ORANGE, PURPLE), 1000, false);

Протокол

Теперь, когда мы разобрались, как подключить нашу ленту к Arduino, нам надо понять, как ею управлять, для этого в даташите есть описание протокола, который мы сейчас и рассмотрим. Каждый светодиод WS2812B имеет один вход (DIN) и один выход (DO). Выход каждого светодиода подключается ко входу следующего. Подавать сигналы же надо на вход самого первого светодиода, таким образом, он запустит цепь, и данные будут поступать от первого ко второму, от второго к третьему и т. д. Команды светодиодам передаются пачками по 24 бита (3 байта, один байт на каждый цвет, первым передается байт для зеленого, потом для красного, и заканчивает байт для синего светодиода.

Вывеска из светодиодной ленты.

Порядок бит – от старшего к младшему). Перед каждой пачкой идет пауза в 50 мкс. Пауза больше 100 мкс воспринимается как окончание передачи. Все биты, будь то 0 или 1, имеют фиксированное время 1.25 мкс. Бит 1 кодируется импульсом в 0.8 мкс, после чего идет пауза в 0.45 мкс. Бит 0 кодируется импульсом в 0.4 мкс, после чего идет пауза в 0.85 мкс. Собственно, наглядная диаграмма на фото ниже. Так же допускаются небольшие погрешности в 0-150 нс на каждый фронт. Ну и следует учесть, что подобное необходимо повторить для каждого светодиода на ленте, после чего сделать паузу минимум в 100 мкс. Потом можно повторить передачу.

Глядя на все эти цифры, становится ясно, что сделать все это, используя стандартные функции digitalWrite, delay и тому подобные – попросту невозможно, ввиду их долгой работы и неточности. Реализовать подобный протокол можно только использовав специальные библиотеки вроде CyberLib или написав собственную на чистом Си или, того хуже для нынешнего программиста, на Ассемблере. Но не все так плохо, как кажется. Светодиоды WS2812B довольно таки популярны в Arduino сообществе, а это значит, что нам не придётся вдаваться в такие сложности, и достаточно выбрать одно из понравившихся решений.

FAQ

Основные вопросы

В: Как скачать с этого грёбаного сайта?
О: На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

В: Скачался какой то файл .zip, куда его теперь?
О: Это архив. Можно открыть стандартными средствами Windows, но думаю у всех на компьютере установлен WinRAR, архив нужно правой кнопкой и извлечь.

В: Компьютер никак не реагирует на подключение Ардуины!
О: Возможно у тебя зарядный USB кабель, а нужен именно data-кабель, по которому можно данные передавать

В: Ошибка! Скетч не компилируется!
О: Путь к скетчу не должен содержать кириллицу. Положи его в корень диска.

В: Сколько стоит?
О: Ничего не продаю.

Основные выводы

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

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

Предыдущая
СветодиодыОсновные причины, почему гудит светодиодная лампа
Следующая
СветодиодыЧто такое и где применяется RGB-подсветка

Оцените статью:
Оставить комментарий