Электрификация

Справочник домашнего мастера

Гирлянда на ws2812

Сообщества ›
Электронные Поделки ›
Блог ›
Новогодняя гирлянда из светодиодов ws2811.

До Нового года далеко конечно, зато есть время всё сделать так как хочется.Не будет чего-то хватать, есть время подкупить.
Чем нравится эта гирлянда не понимаю, есть более интересные самоделки из светодиодов ws2811, но на Youtube у ней стабильные просмотры.Чтобы её сделать не нужно в принципе не ума, не фантазии.
Что нужно:
1.Сама гирлянда, продаётся уже готовой.Может удлиняться, она заканчивается разъёмом, длина одной гирлянды 3 метра,50 светодиодов.Покупайте с зелёными проводами ! разноцветные провода на ёлке смотрятся отстойно.

Новогодняя гирлянда из светодиодов ws2811.

2.Аrduino Nano.

Полный размер

Arduino Nano.
3.Блок питания 5 вольт и не меньше 2 ампер.

Полный размер

Блок питания 5v 2A и Arduino Nano.
4.Бокс, коробочка, распаечная коробка.
Вся это продаётся на Алиэкспресс, распаечные коробки в любом магазине электрики.
И что очень важно, это конечно скетч.
В программу Arduino устанавливаем библиотеки FastLED и Adafruit_NeoPixel, они обычно уже установлены в программе. А потом скачиваем отсюда библиотеку WS2812FX-master: github.com/kitesurfer1404/WS2812FX . Именно отсюда, и также устанавливаем библиотеку в программу Arduino.
Меняем данные в скетче.В двух строках меняем цифры на свои.

#define LED_COUNT 180 ( это количество светодиодов в вашей гирлянде, тут 180, ставим на свои 50 или сколько там у вас)
#define LED_PIN 2 ( это пин 2 ардуино, к которому подключается управление ленты. Он тоже меняется, к какому хочешь припаять тот и ставь в скетч)
И чем ещё интересен скетч, то это тем, что ты сам можешь выбирать эффекты.Их от ноля до сорока четырёх.Находятся они в этой строке
int mode = {9, 14, 17, 19, 26, 29, 30, 32, 35, 36, 39, 43, 44};
У меня их тринадцать.Вы можете установить другие.Все они расписаны на сайте, где скачивали библиотеку WS2812FX-master.
Ссылка на мой скетч: yadi.sk/i/fVS7_jKX3T7FhH

AterLux ›
Блог ›
Светодиоды со встроенным ШИМ WS2812

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

Наткнулся совершенно случайно на светодиоды, обладающие встроенным ШИМ-контроллером: WS2812 от Worldsemi Co. Всё что нужно — подвести питание 5 Вольт, а на линию данных DIN выдать последовательно 24 импульса, кодирующие три 8-битных значения яркости, соответственно, зелёной, красной и синей составляющей.
Получив свои значения, контроллер зажигает светодиод заданным цветом, а все последующие импульсы передаёт на выход DOUT. Таким образом, светодиоды можно соединить в гирлянду, и управлять 24-битным цветом каждого в отдельности всего по одному проводу данных.

распиновка WS2812B

Выпускаются в корпусах 5050 в двух версиях: WS2812B — четырёхвыводной и WS2812S — шестивыводной, с отдельными линиями питания для светодиодов и логической схемы.

На ebay светодиоды WS2812B россыпью можно купить по цене 10 баксов за 50 штук. По сравнению с «обычными» светодиодами, цена не маленькая, но, в принципе, доступная.
Так же там продаются различные варианты модулей на базе этих светодиодов, гибких пластинок где светодиоды расположены в несколько строк, и, самый распространённый вариант — светодиодные ленты различных длин и плотностей расположения светодиодов, в открытых, лакированных и водонепроницаемых вариантах.

5 метров герметичной ленты из 150 светодиодов WS2812B

В случае необходимости ленту можно разрезать на меньшие фрагменты.

Лента WS2812B

ШИМ работает на частоте около 400 Гц, поэтому мерцание на глаз не заметно, однако при съёмке видео могут появляться странные волнообразные эффекты. Незажжённый светодиод потребляет около 1мА, соответственно лента из 150 светодиодов потребляет около 150мА. Полностью зажжённый светодиод потребляет около 60мА, а значит для питания ленты из 150 светодиодов потребуется 9 Ампер. Желательно избегать длинных фрагментов лент и подводить питание с обеих сторон, поскольку падение напряжение на 5-метровой ленте при таком токе может быть критическим.

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

Кроме того, каким-то другим производителем выпускаются аналогичные и совместимые по протоколу светодиоды PL9823 в виде 5мм и 8мм круглых матовых светодиодов, а также smd 5050.

светодиоды PL9823-F5, 5мм

В момент простоя каждый из PL9823 кушает около 7мА, что весьма значительно.

Протокол управления

Каждый бит данных передаётся в виде отдельного импульса высокого уровня, длительность импульса кодирует передаваемое значение. Тайминги для всех вышеперечисленных моделей разные, но можно ориентироваться на те, что даны в даташите на WS2812B. А именно, длительность высокого уровня: 0.4 мкс для передачи значения 0, и 0.85 для передачи значения 1. Время передачи одного бита 1.25 мкс, т.е. скорость передачи 800 кбит/с. Иначе говоря, для гирлянды из 300 светодиодов время полного обновления составит всего 9мс, т.е. теоретически можно её обновлять более 100 раз в секунду.

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

Получив 24 бита на входе DIN, светодиод зажигается заданным цветом и все последующие биты данных транслирует на выход DOUT, передавая следующему светодиоду в гирлянде.

Сигналом сброса и началом нового цикла обмена считается наличие низкого уровня на линии в течение 50 мкс.

На этом скриншоте показана осциллограмма управляющего сигнала. Зелёным — сигнал от микроконтроллера на входе DIN, жёлтым — сигнал на выходе DOUT. Показан момент, когда завершилась передача первых 24 битов и чип начал ретранслировать данные.

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

Программирование на AVR

Для отладки я собрал себе тестовую плату:

Тестовая плата

Один бит данных передаётся за 1,25 мкс, а при частоте работы микроконтроллера 8 МГц это составляет всего 10 тактов.

В реализованном примере вывод данных написан на ассемблере. Поддерживается «быстрый» режим — 10 тактов на бит, и медленный — 20 тактов на бит.

Также поддерживается одновременный вывод на две гирлянды также на скорости 10, или 20 тактов на бит. В этом случае они должны быть подключены к выводам одного порта. Более подробные пояснения — в исходном коде. Демонстрационный проект написан на Atmel Studio 6.2 для ATmega8A, по умолчанию настроен на вывод на 1 линейку из 150 светодиодов, подключенную к PD0.

Скачать проект вместе со всеми исходниками (последнее исправление от 04.04.16)

Макрос светодиода WS2812B для Sprint Layout

Другие подобные светодиоды

Полные аналоги WS2812B

WS2812B — (описан в этой статье). Чип встроен в SMD светодиод размера 5×5мм, 4 вывода.

— WS2812C — версия WS2812B, также SMD 5×5мм, 4 вывода, но на в 4 раза меньший ток: макс. 5мА на цвет (вместо 18.5мА у WS2812B). Позволяет делать гирлянды и табло с большей плотностью светодиодов и меньшей яркостью.

XT1511 — SMD 5×5мм, 4 вывода, аналог WS2812B. Так же существует версия XT1511-5mA на 5мА.

SK6812-RGB — SMD 5×5мм, 4 вывода.

— SK6805 — SMD 5×5мм, 4 вывода, версия SK6812 но на ток 5мА.

Совместимые по протоколу в других корпусах

WS2812S — (был упомянут в статье). SMD 5×5мм, 6 выводов, раздельное питание для светодиодов и чипа.

SK6812-P6 SMD 5×5мм, 6 выводов.

— SK6812-WWA SMD 5×5мм, 4 вывода. вместо красного, синего и зелёного его компоненты цвета: холодный белый, тёплый белый и янтарный, для динамического освещения.

WS2811 — отдельные чипы в корпусах soic-8. Продаются также в лентах с smd светодиодами и гирляндах с выводными 5мм светодиодами (пример использования). Может работать на пониженной частоте обмена (400 кГц).

— WS2812B-Mini — чипы, встроенные в RGB-светодиод размера 3,5×3,5мм.

— TM1804 — отдельная ИС в корпусе soic-8. Может работать на пониженной частоте обмена (490 кГц).

Частично совместимые, или похожие по протоколу

— WS2813 — обновлённая версия, 6-контактный корпус, обладают запасным входом, который подключается параллельно входу предыдущего светодиода, таким образом, если один светодиод выходит из строя, то цепочка за ним не перестаёт работать. Менее строгая спецификация по таймингам, допускают паузу между битами до 100мкс. Соответственно, длительность низкого уровня для сброса увеличена до 300мкс. Частота ШИМ поднята до 2кГц.

— WS2818 — обновлённая версия 2811; отдельные чипы в корпусах sop8, msop8 или dip8. Допускают менее строгие тайминги.

— SK6812-RGBW SMD 5×5мм. Использует не 3 компоненты цвета, а 4: Красный, синий, зелёный, белый. Протокол аналогичен описанному, но на 1 светодиод требуется 32 бита данных. (описание от CAMOKAT-BETEPAHA)

— PL9823-5050. SMD 5×5мм, 6 выводов. По описанию, работают на скорости обмена 580 кГц, но, вероятно, смогут принимать данные на 800 кГц.

— PL9823-F5 и PL9823-F8 — (были упомянуты в статье) выводные, 4 ножки, диаметр 5 и 8 мм, соответственно. По описанию, работают на скорости обмена 580 кГц, но, по опыту, могут нормально принимать данные на 800кГц.

Несовместимые по протоколу

— WS2801 — отдельные чипы в корпусах SOP-14. Продаются также в лентах в сопряжении с 5050 светодиодами. Ток каждого цвета светодиода задаётся резистором. Синхронный протокол (односторонний SPI — линия данных и линия тактирования), обеспечивает большую скорость обновления.

— APA102 — встроенные в корпус светодиода 5050. Синхронный протокол (односторонний SPI — линия данных и линия тактирования), обеспечивает большую скорость обновления. На каждый светодиод выдаётся 4 байта данных: значение яркости красного синего и зелёного и общая яркость. ШИМ для красного синего и зелёного работает на высокой частоте, что позволяет добиться плавного вывода на движущихся объектах (POV, пример, автор mortonkopf). Границы пакета определяются посылкой 32 нулей (начало), или 32 единиц (конец пакета). Частота импульсов для обмена указана как до 1,2 МГц

—LDP8803 и LDP8806 — отдельные чипы в корпусах soic-16, синхронный протокол (односторонний SPI — линия данных и линия тактирования). 3 и 6 управляемых каналов, соответственно.

—SK9822 — SMD 5×5мм, 6 выводов, совместимы повыводно и по протоколу с APA-102.

—CX2802 — SMD 5×5мм, 6 выводов, иное (в отличие от APA-102 или SK9822) расположение выводов. Обмен по одностороннему SPI (линия данных и линия тактирования), указана частота обмена до 2 МГц. Протокол совместим с WS2801: каждый цвет кодируется тремя байтами, границы пакета определяются низким уровнем на CLK 500 и более мкс. Максимальный ток на каждый цвет обозначен 12мА.

Светодиодные кластеры WS2811 / 20×3 LED

Прошейте платформу Arduino скетчем приведённым ниже.

ws2811SimpleTest.ino // библиотека для работы со светодиодными модулями WS2811/WS2812 #include <Adafruit_NeoPixel.h> // номер пина, к которому подключен светодиодный модуль #define LED_MODULE_PIN 6 // количество кластеров #define CLASTER_COUNT 20 // создаём объект класса Adafruit_NeoPixel Adafruit_NeoPixel matrix = Adafruit_NeoPixel(CLASTER_COUNT, LED_MODULE_PIN, NEO_GRB + NEO_KHZ800); void setup() { // инициализация светодиодного модуля matrix.begin(); } void loop() { // заполняем светодиодный модуль по кластерам «бегущий огонь» красного цвета colorWipe(matrix.Color(255, 0, 0), 50); // заполняем светодиодный модуль по кластерам «бегущий огонь» зелёного цвета colorWipe(matrix.Color(0, 255, 0), 50); // заполняем светодиодный модуль по кластерам «бегущий огонь» синего цвета colorWipe(matrix.Color(0, 0, 255), 50); // тушим светодиодный модуль по кластерам «бегущая тень» colorWipe(matrix.Color(0, 0, 0), 50); } // функция заполнения каждого сегмента (кластера) void colorWipe(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < matrix.numPixels(); i++) { // заполняем текущий сегмент выбранным цветом matrix.setPixelColor(i, c); matrix.show(); // ждём delay(wait); } }

Готовимся к Новому году: простая гирлянда на Arduino

Адаптированный перевод статьи «Let’s Make Arduino LED Holiday Lighting»

К Новому Году везде начинают продавать гирлянды, но мы не ищем лёгких путей и предлагаем вам сделать гирлянду самостоятельно. Это просто, интересно и недорого, а заодно позволит вам потренироваться в работе с Arduino. Итак, начнём.

Примечание Для создания подобной гирлянды вам потребуются минимальные знания в Arduino. Однако если вы в себе не уверены — ничего страшного:

Что понадобится

  • Arduino Uno;
  • адресная светодиодная лента на WS2811;
  • источник питания для ленты.

Светодиодная лента

Светодиодная лента — это группа из светодиодов, размещённых на гибком и клейком основании. Лента может быть длиной от 30 см до 5 м.

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

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

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

  • раздельные адресные светодиоды;
  • светодиоды в виде бочонков;
  • полусферические светодиоды (вариант 1, вариант 2);
  • светодиоды в виде ёлочных шишек;
  • светодиоды в раздельных сферах;
  • светодиоды наподобие гирлянды.

Для примера будет использоваться последний тип адресной ленты:

Контроллер

В гирлянде контроллером ленты будет Arduino Uno. Но для этих целей подойдёт всё, что под руку попадётся: различные платы Arduino, МК серии ESP, STM, AVR, PIC, микрокомпьютеры Raspberry Pi. Единственное, о чём ещё следует помнить, это о логическом уровне контроллера. Некоторые из них работают на 3-вольтовой логике, и нужно будет использовать конвертер уровней.

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

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

Для управления лентой понадобится специальная библиотека. В этой статье детально описывается установка библиотеки Adafruit NeoPixel.

После скачивания zip-файла, нужно установить его в Arduino IDE. Переходите в Скетч→Подключить библиотеку→Добавить .ZIP библиотеку и выберите нужный файл.

Зажигаем!

Вначале стоит проверить схему на работоспособность. Для этих целей подойдёт следующий код:

#include #define PIN 6 // Номер пина, к которому подключен сигнальный провод ленты #define LED_NUM 50 // Количество светодиодов в ленте Adafruit_NeoPixel ledtape = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800); // Если у ленты контроллер WS2812, то третий параметр должен быть NEO_KHZ800, а если WS2811 — NEO_KHZ400 void setup() { ledtape.begin(); ledtape.show(); // Выключит все светодиоды } void loop() { uint16_t i, j; for(j=0; j <256; j++) { for(i=0; i < ledtape.numPixels(); i++) { ledtape.setPixelColor(i, rotateColor((((i) * 256 / ledtape.numPixels()) + j) & 255)); } ledtape.show(); delay(20); } } // Функция прохода по цветам uint32_t rotateColor(byte WheelPos) { if(WheelPos < 85) { return ledtape.Color(WheelPos * 3, 255 — WheelPos * 3, 0); } else if(WheelPos < 170) { WheelPos -= 85; return ledtape.Color(255 — WheelPos * 3, 0, WheelPos * 3); } else { WheelPos -= 170; return ledtape.Color(0, WheelPos * 3, 255 — WheelPos * 3); } }

Если все компоненты исправны и схема собрана корректно, то вы увидите примерно такую картину:


Если же немного изменить код, то можно заставить светодиоды загораться один за другим:

#include #define PIN 6 // Номер пина, к которому подключен сигнальный провод ленты #define LED_NUM 50 // Количество светодиодов в ленте Adafruit_NeoPixel ledtape = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800); // Если у ленты контроллер WS2812, то третий параметр должен быть NEO_KHZ800, а если WS2811 — NEO_KHZ400 void setup() { ledtape.begin(); ledtape.show(); // Выключит все светодиоды } void loop() { uint16_t i, j; // Тут изменяется цвет светодиодов for(i=0; i < ledtape.numPixels(); i++) { ledtape.setPixelColor(i, Wheel((((i) * 256 / ledtape.numPixels()) + j) & 255)); ledtape.show(); ledtape.setPixelColor(i, ledtape.Color(0,0,0)); delay(20); ledtape.show(); } } // Функция прохода по цветам uint32_t rotateColor(byte WheelPos) { if(WheelPos < 85) { return ledtape.Color(WheelPos * 3, 255 — WheelPos * 3, 0); } else if(WheelPos < 170) { WheelPos -= 85; return ledtape.Color(255 — WheelPos * 3, 0, WheelPos * 3); } else { WheelPos -= 170; return ledtape.Color(0, WheelPos * 3, 255 — WheelPos * 3); } }

Такая гирлянда подойдёт как для наружного применения, так и для традиционного размещения на ёлке.

Не смешно? А здесь смешно: @ithumor

Умный ночник на Arduino и адресных светодиодах WS2811

В интернете большое количество проектов на Arduino с использованием адресных светодиодов и лент WS2812. Я тоже решил сделать пару проектов на данных замечательных светодиодах WS2811.

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

1. Адресные светодиоды

2. Arduino Nano

3. Тактовые кнопки

Сделал я вот такой ночник с двумя режимами и регулированием яркости.

Первый режим плавно изменяет цвет светодиодов со сдвигом на один. Второй режим светит обычным белым цветом.

Регулирование яркости изменяет яркость на 20%.

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

Установить библиотеку FastLED можно из менеджера библиотек.

Или скачать архив отсюда и установить библиотеку FastLED

Скетч небольшой и прокомментирован.

#include <FastLED.h> #define LED_PIN 6 byte button_rejim = 2; // кнопка режим byte button_yarkast = 3; // кнопка яркасть int rejim = 0; // текущий режим int yarkast = 100; // текущая яркасть boolean lastButten = LOW; // предыдущее состояние кнопки boolean currentButten = LOW; // текущее состояние кнопки boolean lastButten2 = LOW; // предыдущее состояние кнопки 2 boolean currentButten2 = LOW; // текущее состояние кнопки 2 // Information about the LED strip itself #define NUM_LEDS 15 #define CHIPSET WS2811 #define COLOR_ORDER GRB CRGB leds; // How many seconds to show each temperature before switching #define DISPLAYTIME 20 // How many seconds to show black between switches #define BLACKTIME 3 void setup() { pinMode(button_rejim, INPUT_PULLUP); // настроить пин кнопки pinMode(button_yarkast, INPUT_PULLUP); // настроить пин кнопки //delay( 3000 ); FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalSMD5050 ); } boolean debvance (boolean last) //убираем дребизг 1 { boolean current = digitalRead (button_yarkast); // считываем данные с кнопки if (last != current) // Если текущее состояни еотличететься от предыдущего { delay (5); // Ждем 5 милисек. current = digitalRead (button_yarkast); // Присваеваем текущее состояние кнопки return current; } } boolean debvance2 (boolean last) //убираем дребизг 2 { boolean current = digitalRead (button_rejim); // считываем данные с кнопки if (last != current) // Если текущее состояни еотличететься от предыдущего { delay (5); // Ждем 5 милисек. current = digitalRead (button_rejim); // Присваеваем текущее состояние кнопки return current; } } void loop(){ currentButten = debvance (lastButten); // Передаем функции дребезга значение по умолчанию LOW if (lastButten == LOW && currentButten == HIGH) // Проверяем отпускали мы кнопку или нет { yarkast = yarkast+50; // увеличиваем яркость } lastButten = currentButten; // Переприсваеваем прошлое состояние кнопки if (yarkast > 250) yarkast = 0; currentButten2 = debvance2 (lastButten2); // Передаем функции дребезга значение по умолчанию LOW if (lastButten2 == LOW && currentButten2 == HIGH) // Проверяем отпускали мы кнопку или нет { rejim = !rejim; // изменяем режим } lastButten2 = currentButten2; // Переприсваеваем прошлое состояние кнопки if (rejim) { FastLED.setBrightness( yarkast ); static uint8_t starthue = 0; fill_rainbow( leds, NUM_LEDS, ++starthue, 40); } else { static uint8_t hue; for(int i = 0; i < NUM_LEDS; i++) { leds = CHSV(0,0,yarkast); } } FastLED.show(); FastLED.delay(10); }

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

Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.

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

Шаг 1: Что это такое

Серьезные электрические гирлянды появились на рынке не так давно. Сейчас мы говорим о светодиодных гирляндах, где цвет и яркость каждого красно-сине-зеленого светодиода можно регулировать индивидуально с помощью чипа WS2811 и Arduino. Этот чип может быть встроен непосредственно в светодиод. Такие светодиоды можно найти по запросу APA106 во многих онлайн-магазинах. Они выглядят как обычные 4-контактные светодиоды с обычным анодом и катодом, но это не так!

Каждый светодиод APA106 имеет встроенный WS2811 контроллер, который должен быть запрограммирован на включение светодиода. Если вы покупаете светодиоды APA106 на Aliexpress, я советую вам немедленно их проверить — нередко вместо APA106 покупателю приходит самый обыкновенный светодиод!

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

Единственная общая их характеристика — они не зажигаются без контроллера.

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

Шаг 2: Необходимые компоненты

Итак, все компоненты для проекта были заказаны и в конечном итоге прибыли:

  1. Две 50-светодиодные водонепроницаемые полосы WS2811. Эти полосы могут быть подключены друг к другу, чтобы увеличить число светодиодов. Они не загорались все сами по себе, поэтому нужно было некоторое управление.
  2. Чип ESP8266 в очень удобном форм-факторе: WeMos D1. Мне нравится эта панель — она компактна и проста в настройке.

Это не обязательно, но эти детали также могут пригодиться:

  • ИК-приемник TL1838
  • небольшие дополнительные панели для WeMos
  • маленький шилд с кнопкой для WeMos

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

Этот блок питания 5v 8A неплохо справится с задачей. Я разработал этот проект с использованием блока питания для мобильного телефона с выходным током 1А. Он работает достаточно хорошо, пока вы не повысите яркость. По крайней мере, мне хватило его для ESP8266 и светодиодной ленты.

Шаг 3: Что же делать?

Наконец, все детали на руках, но что с ними делать? Запрограммировать один или несколько эффектов в один контроллер, и на этом все? Слишком просто. Было бы неплохо суметь каким-то образом контролировать поведение фонарей.

Почти у всех теперь есть смартфон, который может подключаться к интернету. ESP8266 — это модуль с поддержкой WiFi. Таким образом, идея управления гирляндами с WEB-интерфейса — вполне естественна.

Конечно, не каждый является компьютерным гиком и может иметь дело с программированием и Веб-интерфейсом, поэтому можно использовать обычный ИК-пульт для переключения предварительно запрограммированных эффектов. Или, если вы хотите сделать всё убийственно просто, то можно вмонтировать в контроллер кнопку. В этих случаях вам так или иначе понадобится человек, способный запрограммировать ваш девайс.

Для более простого программирования эффектов освещения я добавил режим освещения BMP.

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

Здесь вы видите изображение с 3-мя цветными линиями и видео, на котором видно, как это изображение выглядит при воспроизведении контроллером. Также здесь показано, как создать собственный шаблон.

Шаг 4: Идея

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

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

Конечно, это может быть достигнуто с помощью обычного языка программирования». Но вам понадобится хотя бы компилятор для изменения эффекта. И что, если вы просто не хотите запускать свой компьютер, но вам надоел текущий эффект? Проблема!

Но эта проблема может быть разрешена, если контроллер имеет текстовый интерпретатор и текст можно вводить онлайн.
Поэтому я создал что-то вроде виртуальной машины и загрузил туда язык, который машина будет понимать. Это программное обеспечение, загружаемое в ESP8266, позволяет создавать довольно сложные алгоритмы переключения светодиодов.

Шаг 5: Подключение

Я не стану подробно описывать, как установить и настроить Arduino IDE для работы с ESP8266. В сети много ресурсов, где каждый процесс объясняется в деталях. Все необходимые библиотеки находятся в документе WebLights_En.rtf. Проводка проста. Кнопка и ИК-приемник не необходимы, но удобны.

Длительное нажатие кнопки (6 секунд) сбрасывает устройство и загружает сценарий по умолчанию.

Обычные нажатия переключают эффекты (если они запрограммированы в скрипт) или файлы BMP.

Если вы подключите ИК-приемник, вы можете задать команды кнопкам пульта. Просто нажмите кнопку на приемнике, а затем обновите страницу WebLights. На веб-странице есть 4-символьная переменная с именем IR-code. Возьмите этот код и замените им xxxx в команде (LLxxxxc: c). Теперь каждый раз, когда код будет найден подпрограммой ИК-приемника, будет срабатывать команда.

Это довольно варварский метод соединения — было бы неплохо поставить переключатель уровня напряжения 3v->5v между ESP8266 и светодиодами. Но гирлянда работает и с прямым подключением, если линия между контроллером и светодиодами не слишком длинная.

Существует еще одна фишка, которая может повысить стабильность — вставьте любой диод в линию + 5v, которая активирует первый светодиод. Он сдвинет логический уровень одного из первых светодиодов немного вниз.

Шаг 6: Несколько слов о программном обеспечении

Полный источник информации для этого проекта находится на github.

Просто поместите каталог WebLights в папку проектов Arduino, откройте Arduino и выберите Weblights.ino. Скопируйте содержимое папки WebLights\libraries\ в папку проектов Arduino. Создайте проект и загрузите его в ESP8266. По умолчанию устройство запускается в режиме AccessPoint.

Оно создает Wi-Fi-сеть WebLights с паролем управления светодиодами. Просто введите любой URL-адрес и вы будете перенаправлены на страницу контроллера. Например: wl.com.

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

admin

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

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

Наверх