Подключение адресной цветной (RGB) светодиодной ленты Neopixel к Arduino


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

Внешний вид проекта подключения адресной светодиодной ленты WS2812 к Arduino

Ранее на нашем сайте мы уже рассматривали использование адресной светодиодной ленты в следующих проектах:

Типы адресных RGB светодиодных лент

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

Основные различия между контроллерами адресных светодиодных лент

Принципы работы адресной светодиодной ленты Neopixel

Модуль WS2812B

Внешний вид модуля WS2812B показан на рисунке ниже. На нем видно что чип WS2812B подключен к 3-м индивидуальным светодиодам (Red (красный), Green (зеленый) и Blue (синий)) с помощью проводников ярко-желтого цвета.

Внешний вид модуля WS2812B

Представленное видео наглядно показывает принцип его работы.

На рисунке ниже показан отрезок светодиодной ленты с 8-ю светодиодами WS2812B, включенными последовательно. Каждым из этих светодиодов можно управлять индивидуально по его адресу, используя для этого всего один проводник. Контакт данных первого светодиода IN подключается к микроконтроллеру, а контакт DO/OUT (выходной контакт данных) – к контакту DI (входной контакт данных) следующей светодиодной ленты.

Отрезок светодиодной ленты с 8-ю светодиодами WS2812B, включенными последовательно

А на следующем рисунке показано RGB светодиодное кольцо Neopixel с 16 адресуемыми RGB светодиодами, расположенными по кругу. Подобно предыдущему рассмотренному модулю все светодиоды в этом кольце включены последовательно.

Светодиодное кольцо Neopixel с 16 адресуемыми RGB светодиодами

Распиновка светодиода WS2812B

Светодиод WS2812B содержит 4 контакта, два из которых используются для подачи питания, один для ввода данных и один для вывода данных. Распиновка светодиода WS2812B показана на следующем рисунке.

Распиновка светодиода WS2812B

Назначение контактов следующее:

VCC – обеспечивает подачу питания на модуль, его необходимо подключить к контакту 5V платы Arduino.

GND – общий провод (земля), необходимо подключить к аналогичному контакту платы Arduino.

DI – вход данных от микроконтроллера.

DO – выход данных на следующий модуль или светодиод.

Распиновка модуля светодиодной ленты WS2812B Neopixel

На следующем рисунке показана распиновка 8-битного модуля WS2812B. Аналогично светодиоду WS2812B модуль также имеет контакты для подачи питания, контакт для ввода данных и контакт для вывода данных. Контакт вывода данных можно подключить к контакту ввода данных следующего модуля.

Распиновка модуля светодиодной ленты WS2812B Neopixel

Назначение контактов следующее:

VCC – обеспечивает подачу питания на модуль, его необходимо подключить к контакту 5V платы Arduino.

GND – общий провод (земля), необходимо подключить к аналогичному контакту платы Arduino.

DI – вход данных от микроконтроллера.

DO – выход данных на следующий модуль или светодиод.

Компоненты светодиода WS2812B Neopixel

Как можно видеть из представленного рисунка, каждый подобный светодиод состоит из 3-х индивидуальных светодиодов – для красного, зеленого и синего цвета. Аноды этих светодиодов непосредственно подключены к контакту VCC, а катоды – к чипу WS2812B. Контакты DI, DO и GND также подключены к чипу WS2812B.

Компоненты светодиода WS2812B Neopixel

Компоненты светодиодной ленты WS2812B Neopixel

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

Компоненты светодиодной ленты WS2812B Neopixel

Схема модуля светодиодной ленты WS2812B Neopixel

Схема модуля светодиодной ленты WS2812B Neopixel представлена на рисунке ниже. Как мы можем видеть, она предельно проста и содержит только светодиоды и развязывающие конденсаторы. На представленной схеме показаны всего 3 светодиода, но на самом деле один модуль светодиодной ленты содержит 8 RGB светодиодов, а светодиодное кольцо Neopixel содержит 16 подобных светодиодов.

Схема модуля светодиодной ленты WS2812B Neopixel

Наиболее часто задаваемые вопросы про адресную светодиодную ленту

Что такое адресная RGB светодиодная лента?
Адресная RGB светодиодная лента позволяет осуществлять индивидуальное управление каждым светодиодом в своем составе. По факту, каждый RGB кластер в светодиодной ленте может иметь уникальную цветовую комбинацию и отображать множество цветов в одно и тоже время.

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

В чем разница между WS2812 и WS2812B?
WS2812B имеет лучшую структуру чем WS2812, управление цепью и RGB светом в ней разделено, и она имеет лучшие показатели теплового рассеяния.

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

Лента WS2812B не работает или работает некорректно. Что делать?

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

Схема проекта

Схема подключения адресной светодиодной ленты Neopixel к плате Arduino представлена на следующем рисунке.

Схема подключения адресной светодиодной ленты Neopixel к плате ArduinoНеобходимо подключить контакты VCC и GND светодиодной ленты к контактам 5V и GND платы Arduino соответственно. Контакт DI светодиодной ленты мы подключили к контакту D2 платы Arduino. При этом схема подключения адресной светодиодной ленты Neopixel к плате Arduino не будет меняться в зависимости от того, как много светодиодов содержит лента. Аналогичным образом можно подключить к плате Arduino и светодиодное кольцо Neopixel.

Внешний вид собранной конструкции проекта представлен на следующем рисунке.

Внешний вид собранной конструкции проекта

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

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

Первым делом в коде программы подключим библиотеку FastLED. Затем укажем осмысленные имена для используемых контактов платы. Если ваша светодиодная лента неправильно отображает цвета вы можете изменить это с помощью COLOR_ORDER в представленном фрагменте кода программы. Объявим другие необходимые переменные и объекты.

В функции setup() мы инициализируем библиотеку FastLED и установим яркость ленты. Также мы установим первую палитру цветов для Rainbow.

В функции loop() мы будем непрерывно в цикле переключать различные эффекты при помощи вызова функции ChangePalettePeriodically(). Эта функция будет изменять шаблоны цвета через определенные промежутки времени. Функция FillLEDsFromPaletteColors будет использоваться для установки цвета каждого пиксела в соответствии с выбранной палитрой. Затем все указанные цвета отображаются на светодиодной ленте или модуле с помощью функции FastLED.show(). Эту функцию необходимо вызывать после того как вы задали цвета для всех светодиодов в ленте.

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

Тестирование работы светодиодной ленты WS2812B

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

Подключение 16-битного светодиодного кольца WS2812B Neopixel к Arduino

Данное кольцо представляет собой ни что иное как 16 светодиодов WS2812B, объединенных в форме круга. Его подключение к плате Arduino аналогично ранее рассмотренному подключению адресной светодиодной ленты.

Схема подключения 16-битного светодиодного кольца WS2812B Neopixel к Arduino

Внешний вид подключенного к плате Arduino 16-битного светодиодного кольца WS2812B Neopixel показан на следующем рисунке.

Внешний вид подключенного к плате Arduino 16-битного светодиодного кольца WS2812B Neopixel

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

Исходный код программы (скетча)

Все необходимые файлы для проекта можно скачать по следующей ссылке.

Источник статьи

(39 голосов, оценка: 4,95 из 5)
Загрузка...
3 073 просмотров

Комментарии

Подключение адресной цветной (RGB) светодиодной ленты Neopixel к Arduino — 5 комментариев

  1. доброго дня, подскажите как в этот код добавить датчик движения ?
    без всяких ик пультов и прочего?

      • Да именно его, хотел подключить но не совсем понимаю как правильно составить код. Вы могли бы мне подсказать ?

      • Я видел эту статью, но два кода не смог собрать в одно целое, видимо что то делаю не правильно.
        Суть проекта простая ргб диоды 24 штуки в кольце, задача когда датчик видит движение он начинает переливаться всеми цветами, что используются тут в коде. Когда я добавляю датчик движения, ничего не происходит. 89269355010 вотсап плиз

        • Допустим, как в этой статье у вас датчик движения подключен ко 2 цифровому контакту платы Ардуино.
          Тогда при срабатывании датчика будет выполняться условие:
          if (digitalRead(2) == HIGH) // проверяем сработал ли PIR датчик
          {
          ....
          }

          И теперь в код этого условия (между фигурными скобками) вставляете не то, что стоит в этой статье, а все то, что написано в функции void loop() текущей статьи. Тогда при срабатывании датчика у вас будет ваша лента мигать.
          И не забудьте в void setup() добавить:
          pinMode(2, INPUT); // Pin 2 в режим ввода данных
          чтобы сконфигурировать контакт 2 на ввод данных от датчика движения.

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

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