Светодиодная лента WS2812B. Светомузыкальная установка на Arduino. Подготовка к Новому году. RGB елочная гирлянда на Arduino


В преддверии Нового Года предлагаю вам собрать елочную программируемую RGB гирлянду с возможностью создавать различные узоры.

Что понадобится для гирлянды?

WS2811 RGB Full Color 12mm LED String DC 5V можно приобрести на Aliexpress за 20 долларов. Обычной конец одной такой гирлянды можно соединять с другой, чтобы увеличить длину. Эта статья рассчитана на построение световых узоров, так что, если у вас под рукой есть программируемая LED гирлянда с другим протоколом, вам надо будет, переписать программу и подключить гирлянду в соответствии с datasheet.
5 вольтовый источник тока, рассчитанный на ток, потребляемый вашей гирляндой. Обычно продавец указывает ток, потребляемый гирляндой.
Arduino любой версии. Автор использовал стандартный Arduino Uno.
Зеленая акриловая краска
Изолента
Провод.
Желательно иметь разъемы JST чтобы было легче соединять гирлянду с контроллером

Перед тем как начать собирать елочную гирлянду, убедитесь, что все светодиоды исправны. В интернете можно найти, как подключить WS2811 к Arduino.

Определите выводы +5V и GND по datasheet на вашу WS2811
Красный = + 5В
Синий = GND
Белый = Данные

Подключение получается такое, как на картинке.

Установите популярную библиотеку WS2811 Arduino от Adafruit. Скачать и прочитать инструкцию по установке можно здесь:
Измените прилагаемый код в соответствии с длиной вашей гирлянды в #define LED_COUNT . Загрузите и запустите программу на Arduino. Обратите внимание, что пиксели меняют цвет от красного к зеленому, потом к синему, потом к белому в течении 5 сек. Это гарантирует, что все 3 светодиода внутри пикселя исправны.

(скачиваний: 1085)

Оценка падения напряжения.

Каждый светодиодный пиксель и последующая подключенная LED гирлянда, вызовет какое-то падение напряжения. Так что после 50 светодиода в вашей LED гирлянде напряжение источника питания упадет на какую-то заметную величину. Например, с 5в до 4.7В. Это означает, что следующая гирлянда, которую вы подключите к первой, будет запитана не от 5в, а от 4.7в и напряжение после нее упадет еще ниже. В результате каждый светодиод будет темнее, чем предыдущий. В конечном итоге, когда напряжение упадет до 3.3в, микросхема, обслуживания протокола WS2811, просто перестанет работать.

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

Покраска гирлянды.

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


Определение позиции X и Y каждого пикселя

Повесьте собранную гирлянду на елку. После этого можно рассчитать положение каждого пикселя по X и Y и вставить эти данные в код программы. Для этого используйте вот этот файл с кодом. Раскомментируйте первую функцию loop () , которая зажигает секции по 10 светодиодов. Если у вас есть больше чем 50 светодиодов, то вы можете продлить эту секцию простым копированием, не забывая указывать нужное количество в #define LED_COUNT

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

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

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

(скачиваний: 1240)

По видео вы можете понять логику работы программы и написать свои шаблоны или поменять код под себя. Другой прикрепленный файл - это файл настройки, чтобы Arduino управлялся через последовательный интерфейс с другого устройства. Автор использовал Raspberry Pi для управления Arduino.

Вот такая новогодняя гирлянда с использованием Arduino и комплекта WS2811.

(скачиваний: 1132)

Интересно всегда было попробовать светодиодную ленту ws2812b.Вот получил ленту с Banggood. Тем более подходят новогодние праздники. Применить хотелось в разных вариантах.Как украшение или гирлянду для Нового года или как самостоятельную СДУ.
Китайцы дали такие параметры:
-Работа напряжение: 5 В постоянного тока
-мощность: 43.2w
-Width: 12 мм
-длина: 1m
-waterproof: не водонепроницаемый (ip20)
-Отлично, высокое качество интеллектуальное освещение!
-основана на высокое качество SMD5050 RGB LED s код вставки (встроенный) интегрированные ИКС управления ws2811. каждый LED независимо представляет собой адресуемые, открывая совершенно новые возможности освещения.
-ws2812. 5050 СМД ж / ws2811 IC встроенный in144 RGB LED s на метр
-он ws2811 IC управления ONE LED Чип
-каждый LED индивидуально адресуемые, с 8 битами зеленого, красного и синего данных сдвинуты в течение 24-битном цвете
-strip может быть разрезан one от one привело чип.

Примечание: источник питания или контроллер не включает

В пакет включено:
1 * RGB LED полосы

Что такое ws2812b? Это уже второе поколение полноцветных светодиодов с индивидуальной адресацией, также известное как NeoPixel. В одном корпусе собраны RGB светодиоды и контроллер. Для каждого из цветов доступно 255 уровней яркости. Итого 16 миллионов цветов и всего один провод для управления. Выпускаются в виде отдельных светодиодов, лент, колец, матриц и т.п. Для работы необходим внешний контроллер, на эту роль вполне подходит Ардуино. Каждый из светодиодов (красный, синий, зеленый) при максимальной яркости потребляет 20 миллиампер. Максимальное энергопотребление - 60 миллиампер, когда все три диода горят, получается при белом цвете. Отсюда легко получить максимальное потребление всей ленты, умножив 60 миллиампер на количество светодиодов. Еще немного потребляют контроллеры диодов.





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


Для каждого из цветов доступно 255 уровней яркости. Итого 16 миллионов цветов и всего один провод для управления. Выпускаются в виде отдельных светодиодов, лент, колец, матриц и т.п. Для работы необходим внешний контроллер, на эту роль вполне подходит Ардуино. Каждый из светодиодов (красный, синий, зеленый) при максимальной яркости потребляет 20 миллиампер. Максимальное энергопотребление - 60 миллиампер, когда все три диода горят, получается при белом цвете. Отсюда легко получить максимальное потребление всей ленты, умножив 60 миллиампер на количество светодиодов. Еще немного потребляют контроллеры диодов.
Приблизительное пиковое потребление для лент длиной 1 метр:
30 диодов на метр 9.5 ватт (чуть меньше 2A при 5V)
60 диодов на метр 19 ватт (3.6А при 5V)
144 диода на метр 35 ватт (7A при 5V)
Блоки питания рекомендуется выбирать с небольшим запасом по мощности.
Подключение.
Сами по себе ленты не светятся, им необходим микроконтроллер. На его роль отлично подходит Arduino(Uno.Nano,Pro mini).


Как применить эту ленту это уже личное ваше дело-как украшение, гирлянду для Нового года или как самостоятельную СДУ. Я приобрел ленту длиной 1 метр с количеством светодиодов 144 штуки. Ее можно разрезать при необходимости на несколько частей. Подложка бывает белого и черного цвета. На концах установлены разьемы для подключения следующей ленты.То есть можно удлинить гирлянду.


Я сделал светомузыкальную установку для визуализации музыки в реальном времени. Много различных световых эффектов, синхронизированных с музыкой.


На один канал подключено 51 сетодиод ленты, и паралельно в данном случае кольцо с светодиодами(чисто для демонстарции)

Подключить к источнику звука-выходы от громкоговорителя. Сделано на светодиодной ленте ws2812b, Arduino UNO, понижающей Dс-Dс плате или блок питания на 5 вольт\3ампера. Осуществлен принцип индикатора уровня сигнала с большим количеством световых эффектов. А где использовать эту схему это уже личное ваше дело и зависит от вашей фантазии.Скетч по ссылке
Плюсом я думаю считается что управление этой лентой осуществляется по одному проводу, и можно получать разные эффекты на каждом светодиоде.
Минусом я считаю что пока конечно цена на эти светодиоды завышена. Тем не менее можно получать массу эффектов в цвете и динамике для для последующих разработок даже начинающим. Всем спасибо за потраченное время и хороших Новогодних праздников!!!
Подробней в видео

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

Можно засветить разными цветами баню от RGB ленты на Arduino. Создать, так сказать, баню на микропроцессорном управлении от Arduino.

Всего лишь понадобятся для сборки RGB-подсветки такие компоненты:

  1. Bluetooth модуль HC-05 для беспроводной связи с Arduino.
  2. Плата Arduino nano, mini, Uno с микропроцессором ATmega 8, ATmega 168, ATmega 328.
  3. Светодиодная лента RGB, при необходимости во влагозащитном исполнении IP65 или без него.
  4. Смартфон с Android как пульт управления RGB-подсветкой.
  5. Полевые MOSFET транзисторы, такие как P3055LD, P3055LDG, PHD3355L, но лучше с выводами для закрепления в монтажных отверстиях. Биполярные транзисторы работают хуже .
  6. Резисторы 10 кОм, 0.125 Вт - 3 штуки.

Немного теории про подключение RGB ленты к Arduino

Нельзя подключить светодиодную полоску напрямую к плате Arduino. Светодиодная лента светиться от 12 В, тогда как микропроцессору нужно для работы всего 5 В.

Но, самая главная проблема в том, что выходы микропроцессора не имеют достаточной мощности для питания целой ленты светодиодов. В среднем метровой длины светодиодная полоса потребляет 600 мА. Такой ток точно выведет из строя плату Arduino.

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

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

RGB ленты к Arduino

На электромонтажной схеме на управление лентой задействованы ШИМ-выхода: 9 (красный), 10 (зеленый), 11 (голубой).

Три резистора по 10 кОм, 0.125 Вт повешены на «затвор» каждого транзистора.

Плюс от блока питания 12 В (красный провод) идет напрямую на RGB ленту.

Минус от блока питания 12 В (черный провод) распределяется по «истокам» полевых транзисторов.

«Сток» каждого транзистора связан с отдельным контактом ленты: R, G, B. Рекомендуется для удобства при подключении использовать провода красного, зеленого, голубого цвета.

Контакт заземления GND платы Arduino следует посадить на минус входного питания.

Сама плата Arduino Uno запитывается от отдельного сетевого адаптера. Для Arduino nano, mini потребуется собрать простенький источник питания на интегральном стабилизаторе 7805.

Подключение Bluetooth модуля HC-05:

  • VCC - 5V (питание +5 В);
  • GND - GND (земля, общий);
  • RX - TX на Arduino nano, mini, Uno;
  • TX - RX на Arduino nano, mini, Uno;
  • LED - не используется;
  • KEY - не используется.

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

Unsigned long x; int LED = 9; // зеленый подключен к 9 пину int LED2 = 10; // синий подключен к 10 пину int LED3 = 11; // красный подключен к 11 пину int a,b,c = 0; void setup() { Serial.begin(9600); Serial.setTimeout(4); pinMode(LED, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); } void loop() { if (Serial.available()) { x = Serial.parseInt(); if (x>=0 && x<=255) { a = x; // для RGB ленты //a = 255-x; // для светодиода analogWrite(LED, a); } if (x>=256 && x<=511) { b = x-256; // для RGB ленты //b = 511-x; // для светодиода analogWrite(LED2, b); } if (x>=512 && x<=767) { c = x-512; // для RGB ленты //c = 767-x; // для светодиода analogWrite(LED3, c); } /* Serial.println(x); Serial.println(a); Serial.println(b); Serial.println(c); */ } }

Если понадобиться подключить один RGB светодиод, тогда есть электромонтажная схема его подключения.

Установка приложения на телефон

Скачиваем приложение с коротким названием RGB на телефон. .

После установки запускаем приложение по иконке.

Кликаем по надписи

Находим в списке установленный Bluetooth модуль HC-05.

При наличии связи вместо надписи будет отображаться адрес и название установленного модуля Bluetooth.

Ну, вот и всё, управление RGB подсветкой налажено!

Вот видео-пример работы нашего проекта:

GPS часы на Arduino Биометрический замок – Схема и сборка ЖК дисплея

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

Светодиоды – электронный компонент, способный излучать свет. Сегодня они массово применяются в различной электронной технике: в фонариках, компьютерах, бытовой технике, машинах, телефонах и т.д. Многие проекты с микроконтроллерами так или иначе используют светодиоды.

Основных назначений у них два :

Демонстрация работы оборудования или оповещение о каком-либо событии;
применение в декоративных целях (подсветка и визуализация).

Внутри светодиод состоит из красного (red), зеленого (green) и синего (blue) кристаллов, собранных в одном корпусе. Отсюда такое название – RGB (рис.1).

2. С помощью микроконтроллеров

С помощью него можно получить множество различных оттенков света. Управление RGB-светодиодом осуществляется с помощью микроконтроллера (MK), например, Arduino (рис.2).

Конечно, можно обойтись простым блоком питания на 5 вольт, резисторами в 100-200 Ом для ограничения тока и тремя переключателями, но тогда управлять свечением и цветом придется вручную. В таком случае добиться желаемого оттенка света не получится (рис.3-4).

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

3. Контроллер для управление RGB

Для разгрузки выводов МК применяются специальные контроллеры WS2801 (5 вольт) или WS2812B (12 вольт) (рис.5).

С применением отдельного контроллера нет необходимости занимать несколько выходов MK, можно ограничиться лишь одним сигнальным выводом. МК подает сигнал на вход «Data» управляющего контроллера светодиода WS2801.

В таком сигнале содержится 24-битная информация о яркости цвета (3 канала по 8 бит на каждый цвет), а также информация для внутреннего сдвигового регистра. Именно сдвиговый регистр позволяет определять, к какому светодиоду информация адресовывается. Таким образом можно соединять несколько светодиодов последовательно, при этом использовать все так же один вывод микроконтроллера (рис.6).

4. Адресуемый светодиод

Это RGB-светодиод, только с интегрированным контроллером WS2801 непосредственно на кристалле. Корпус светодиода выполнен в виде SMD компонента для поверхностного монтажа. Такой подход позволяет расположить светодиоды максимально близко друг другу, делая свечение более детализированным (рис.7).

В интернет-магазинах можно встретить адресные светодиодные ленты, когда в одном метре умещается до 144 штук (рис.8).

Стоит учесть, что один светодиод потребляет при полной яркости всего 60-70 мА, при подключении ленты, например, на 90 светодиодов, потребуется мощный блок питания с током не менее 5 ампер. Ни в коем случае не питайте светодиодную ленту через контроллер, иначе он перегреется и сгорит от нагрузки. Используйте внешние источники питания (рис.9).

5. Недостаток адресуемых светодиодов

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

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

6. Применение адресуемых светодиодных лент

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

Получается интересное решение, если светодиодную ленту использовать в качестве фоновой подсветки Ambilight для монитора компьютера (рис.10-11).

Если вы будете использовать микроконтроллеры на базе Arduino, вам понадобится библиотека FastLed для упрощения работы со светодиодной лентой ().

В прошлый раз был рассмотрен способ подключения светодиодной ленты к ардуино через драйвер L298. Управление цветом осуществлялось программно - функция Random. Теперь пришла пора разобраться, как управлять цветом светодиодной ленты на основании показаний датчика температуры и влажности DHT 11.

За основу взят пример подключения светодиодной ленты через драйвер L298. Плюсом ко всему в пример добавлен дисплей LCD 1602, который будет отображать показания датчика DHT 11.

Для проекта понадобятся следующие элементы Ардуино:

  1. Плата Ардуино УНО.
  2. Дисплей LCD 1602 + I2C.
  3. Датчик температуры и влажности DHT
  4. Светодиодная лента.
  5. Драйвер L298.
  6. Блок питания 9-12В.
  7. Корпус для ардуино и дисплея (по желанию).

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

Рисунок 1. Принципиальная схема подключения Arduino и светодиодной ленты с датчиком DHT 11

Во избежание некорректной работы светодиодной ленты (мерцание, несоответствие цветов, неполное свечение и т.д.), питание всей схемы необходимо сделать общим, т.е. объединить контакты GND (земля) контроллера Ардуино и драйвера L298 (светодиодной ленты). Как это сделать, можно посмотреть на схеме.

Пару слов о подключении датчика влажности. Если покупать голый DHT 11, без обвязки, то между первым и вторым контактами, 5В и Data, соответственно, нужно впаять резистор номиналом 5-10 кОм. Диапазон измерения температуры и влажности написан на обратной стороне корпуса датчика DHT 11. Температура: 0-50 градусов по Цельсию. Влажность: 0-80%.


Рисунок 2. Правильное подключение датчика влажности DHT 11

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

Для программирования датчика DHT 11 понадобится дополнительная библиотека.

Код программы Arduino и RGB – лента. Изменение цвета ленты в зависимости от влажности.

#include #include //библиотека для работы с дисплеем LCD 1602 #include //библиотека для работы с датчиком влажности и температуры DHT 11 int chk; //переменная будет хранить все данные с датчика DHT11 int hum; //переменная будет хранить показания влажности с датчика DHT11 dht11 DHT; //объект типа DHT #define DHT11_PIN 4 //контакт Data датчика DHT11 подключен на вход 4 #define LED_R 9 // пин для канала R #define LED_G 10 // пин для канала G #define LED_B 11 // пин для канала B //переменные будут хранить значения цветов //при смешивании всех трех цветов будет получаться необходимый цвет int led_r=0, led_g=0, led_b=0; //объявление объекта дисплея с адресом 0х27 //не забываем использовать в проекте дисплей через плату I2C LiquidCrystal_I2C lcd(0x27,16,2); void setup() { //создание дисплея lcd.init(); lcd.backlight(); // объявляем пины выходами pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); } void loop() { chk = DHT.read(DHT11_PIN);//читаем данные с датчика DHT11 //вывод данных на дисплей lcd.print("Temp: "); lcd.print(DHT.temperature, 1); lcd.print(" C"); lcd.setCursor(0,1); lcd.print("Hum: "); lcd.print(DHT.humidity, 1); lcd.print(" %"); delay(1500); //для корректной работы датчика нужна задержка на опрос lcd.clear(); hum = DHT.humidity; //берем показания влажности //в диапозоне от 19 до 30% влажности выдать зеленый цвет if ((hum >= 19) && (hum <= 30)) { led_r = 1; led_g = 255; led_b = 1; } //в диапозоне от 31 до 40% влажности выдать красный цвет if ((hum >= 31) && (hum <= 40)) { led_r = 255; led_g = 1; led_b = 1; } //в диапозоне от 41 до 49% влажности выдать синий цвет if ((hum >= 41) && (hum <= 49)) { led_r = 1; led_g = 1; led_b = 255; } // подача сигналов цвета на выхода analogWrite(LED_R, led_r); analogWrite(LED_G, led_g); analogWrite(LED_B, led_b); }

Метки: Метки



Просмотров