Новогодняя эффектная гирлянда на WS2812 и ATMega8

Содержание

23.12.19 Версия 1.0: первоначальная, вроде бы стабильная версия • 28.11.20 Версия 1.1: исправлено переключение кнопкой на предыдущий режим

Гирлянда на адресных светодиодах и Arduino. Проект основан на этой гирлянде.

  • 40 крутых эффектов
  • Управление с ИК пульта
  • Управление с кнопочной клавиатуры
  • Управление одной кнопкой
    • 1х клик: вкл-выкл
    • 2х клик: след. режим
    • 3х клик: пред. режим
    • 4х клик: вкл/выкл блёстки
    • Удержание – яркость

ПОДРОБНОЕ ВИДЕО ПО ПРОЕКТУ

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

  • Понятные схемы, OpenSource прошивки с комментариями и подробные инструкции это очень большая работа. Буду рад, если вы поддержите такой подход к созданию Ардуино проектов! Основная страница пожертвовать – здесь.

СХЕМЫ, ПЕЧАТНЫЕ ПЛАТЫ

Схема 1

МАТЕРИАЛЫ И КОМПОНЕНТЫ

Ссылки на магазины, с которых я закупаюсь уже не один год

Вам скорее всего пригодится:

Первые ссылки по возможности оставлены на одного и того же продавца, чтобы сэкономить на доставке. Остальные ссылки – резервные. Нажимайте ссылки колёсиком мыши, чтобы открыть в новом окне!

  • Arduino NANO 328p – искать

ЗАГРУЗКА ПРОШИВКИ

Читай гайд для новичков, в частности главу про Digispark

Содержимое папок в архиве

  • libraries – библиотеки проекта. Заменить имеющиеся версии
  • firmware – прошивки для Arduino
  • schemes – схемы подключения компонентов

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

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

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

Что мы получим в итоге

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

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

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

Что нужно купить на AliExpress

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

▸ плата Arduino Nano – от 132 руб. Берите сразу несколько, стоят “ардуинки” недорого, а проектов с их участием большое множество.

▸ лента с адресными диодами WS2812B – от 660 руб. Лента продается в мотках по 50 или 100 диодов. Для интересной и заметной матрицы нужно минимум сотня огоньков.

▸ для того, чтобы спаять компоненты, потребуется паяльник. Давно купил себе популярную модель TS100 – 3541 руб. За два года использования ни разу не пожалел, это до сих пор самый продвинутый паяльник для радиолюбителей.

Тем, кто паяет редко, для пары проектов подойдет самая простая и доступная модель – 275 руб.

▸ питать готовую конструкцию можно от мощной зарядки для смартфона (5В 3А минимум) – от 257 руб., можно подключить к Power Bank, который выдает подобную мощность.

▸ еще для базовой реализации проекта потребуется сопротивление 220 ом – то 14 руб.

▸ не забывайте про канифоль и олово для пайки – от 107 руб.

Последние компоненты найдете в любом радиомагазине.

Выбираем размер для гирлянды

Оптимальная схема подключения и расположение диодов на окне

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

Диоды в ленте уже спаяны между собой секциями провода по 10 см. Это достаточное расстояние между лампами по вертикали. Чтобы получить пропорциональную матрицу, нужно будет крепить вертикальные куски ленты на аналогичном расстоянии друг от друга.

Замеряем, сколько диодов поместится в одной вертикальной полосе на окне (учтите, что открывающиеся стеклопакеты имеют меньшую высоту стеклянного блока, чем “глухие”). Прикидываем, сколько вертикальных полос поместится на окнах. Не забывайте, что в месте перехода от одного окна к другому придется сделать более длинное соединение.

Лучше всего заполнить матрицей целое окно минимум из трех створок или все окна балкона.

Паяем все компоненты

На странице проекта (Спасибо Алексу Гайверу!) можно увидеть различные модификации гирлянды: от самой базовой, которую мы сейчас соберем, до продвинутой с кнопками управления или Blutooth-модулем для подключения со смартфона.

Самый простой вариант сборки

Собираем согласно приведенной схемы:

1. Последовательно спаиваем или соединяем коннекторами части диодной ленты (если взяли более одного сегмента).

2. Логический контакт от ленты через резистор припаиваем к “ноге” D6 на Arduino Nano.

3. Контакты питания паяем к коннектору блока питания или к питанию через USB-порт, если планируем подключать к Power Bank.

4. Наша матрица с блоком управления готова, осталось только загрузить нужную прошивку в Arduino.

В дельнейшем легко добавить другие модули и элементы к данному проекту.

Готовим Mac к работе с Arduino

1. Скачиваем среду разработки Arduino IDE для прошивки нашего модуля.

2. Извлекаем программу из архива и переносим в папку Приложения.

3. Скачиваем библиотеки Java Runtime Environment для работы приложения.

4. Монтируем образ и устанавливаем пакет.

5. Скачиваем кекст (драйвер) для работы с китайскими аналогами платы Arduino по ссылке. Выбираем последнюю версию 1.5. Владельцам оригинального модуля драйвер не потребуется.

6. Извлекаем установщик из архива и запускаем процесс инсталляции.

7. В процессе разрешаем установку от неподтвержденного разработчика и перезагружаем Mac.

Настраиваем среду разработки Arduino IDE

1. Подключаем Arduino к Mac и запускаем приложение Arduino IDE.

2. В меню Инструменты – Плата выбираем тип используемой платы Arduino.

3. В меню Инструменты – Процессор выбираем тип процессора на плате. Чаще всего это ATmega328P, но на старых платах может использоваться ATmega328P (Old Bootloader). Проверяется методом перебора.

4. В меню Инструменты – Порт выбираем USB порт с подключенной платой Arduino. Если плата не отображается, следует удалить и заново установить кексты по инструкции выше.

5. Проверяем подключение командой Инструменты – Получить информацию о плате.

Все, наше приложение готово и настроено для работы с платой Arduino.

Загружаем проект для гирлянды в Arduino

1. Скачиваем проект с сайта разработчика.

2. Распаковываем архив и находим файл проекта GyverMatrixOS_v1.12.ino (можете использовать боле старые версии или новые после их добавления автором).

3. Импортируем библиотеки, которые нужны для работы проекта через меню Скетч – Подключить библиотеку – Добавить .ZIP Библиотеку…

Потребуется поочередно импортировать четыре библиотеки из архива с проектом, которые лежат в папке GyverMatrixBT-master/libraries/ESP, ARDUINO/.

4. Вносим необходимые изменения в проект:

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

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

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

Для редактирования списка эффектов нужно перейти на вкладку Custom и удалить ненужные блоки начиная с “case” и заканчивая ” break;”

Эффекты можно менять местами или вставлять для повторения. Не забывайте про синтаксис.

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

Здесь же настраивается текст и цвет для бегущих строк.

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

Часть настроек находится на главной вкладке проекта, а остальные – на вкладке effects.

5. Когда все настройки внесены, можем загружать прошивку на Arduino.

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

После прошивки отключаем плату от компьютера и подаем питание выбранным способом: через адаптер от сети или при помощи Power Bank.

Для внесение поправок или изменений в эффектах нужно будет снова подключить Arduino к Mac и загрузить измененную прошивку.

Остается только закрепить гирлянду на окно и дождаться темного времени суток. Скопление зевак и прохожих под окном гарантировано.

🤓 Хочешь больше? Подпишись на наш Telegram. … и не забывай читать наш Facebook и Twitter 🍒 iPhones.ruНичего подобного даже на AliExpress не продается. —>

Артём Суровцев

@artyomsurovtsev

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

Шаг 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. Скопируйте содержимое папки WebLightslibraries в папку проектов Arduino. Создайте проект и загрузите его в ESP8266. По умолчанию устройство запускается в режиме AccessPoint.

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

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

Шаг 7: Заключение

Главная / Световые приборы / Светодиодная лента Содержание скрыть 1 Светодиодная лента на базе WS2812B 2 Технические характеристики элементов WS2812B 3 Arduino и WS2812B 4 Подключение ленты на базе WS2812B к Arduino Uno (Nano) 5 Основы программного управления WS2812B

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

Светодиодная лента на базе WS2812B

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

Внешний вид светодиода с драйвером.

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

Внешний вид адресной ленты.

Шина управления микросхемы WS2812B состоит из одной линии – по ней передаются данные. Данные кодируются в виде импульсов постоянной частоты, но с разной скважностью. Один импульс – один бит. Длительность каждого бита составляет 1,25 мкс, нулевой бит состоит из высокого уровня длительностью 0,4 мкс и низкого 0,85 мкс. Единица выглядит, как высокий уровень в течение 0,8 мкс и низкий 0,45 мкс. Каждому светодиоду отправляется посылка из 24 бит (3 байт), дальше следует пауза в виде низкого уровня в течение 50 мкс. Это означает, что дальше будут передаваться данные для следующего LED, и так для всех элементов цепочки. Завершается передача данных паузой в 100 мкс. Это означает, что цикл программирования ленты завершен, и можно отправлять следующий набор пакетов данных.

Данные для управления адресной лентой.

Такой протокол позволяет обойтись для передачи данных одной линией, но требует точности выдержки временных интервалов. Расхождение допускается не более 150 нс. Кроме того, помехозащищенность такой шины очень низкая. Любые помехи достаточной амплитуды могут быть восприняты контроллером, как данные. Это накладывает ограничения на длину проводников от схемы управления. С другой стороны, это дает возможность проверки исправности ленты без дополнительных приборов. Если на светильник подать питание и дотронуться пальцем до контактной площадки шины управления, некоторые светодиоды могут хаотически загораться и гаснуть.

Технические характеристики элементов WS2812B

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

Габариты LED 5×5 мм
Частота модуляции ШИМ 400 Гц
Потребляемый ток на максимальной яркости 60 мА на один элемент
Напряжение питания 5 вольт

Совет эксперта Стариков Михаил Старший инженер-электроник Потребляемая светильником мощность достаточно высока. Она определяется не только током, необходимым для инициации свечения p-n переходов, но и коммутационными потерями при формировании ШИМ. Для полотна из 15 элементов источник питания и проводники рассчитываются на ток не менее 1 ампера.

Arduino и WS2812B

Популярная в мире платформа Ардуино позволяет создавать скетчи (программы) для управления адресными лентами. Возможности системы достаточно широки, но если их на каком-то уровне перестанет хватать, полученных навыков будет достаточно, чтобы безболезненно перейти на С++ или даже на ассемблер. Хотя начальные знания проще получить на Arduino.

Подключение ленты на базе WS2812B к Arduino Uno (Nano)

На первом этапе достаточно простых плат Arduino Уно или Ардуино Нано. В дальнейшем для построения более сложных систем можно будет использовать более сложные платы. При физическом подключении адресной светодиодной ленты к плате Arduino надо следить за соблюдением нескольких условий:

  • из-за низкой помехоустойчивости соединительные проводники линии данных должны быть как можно короче (надо постараться сделать их в пределах 10 см);
  • подключать проводник данных надо к свободному цифровому выходу платы Arduino – он потом будет указан программно;
  • из-за высокого энергопотребления не надо запитывать ленту от платы – для этой цели предусматриваются отдельные источники питания.

Общий провод питания светильника и Ардуино надо соединить.

Схема подключения ленты WS2812B.

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

Как подключить светодиод к плате Arduino

Основы программного управления WS2812B

Уже упоминалось, что для управления микросхемами WS2812B надо сформировать импульсы с определенной длиной, выдерживая высокую точность. В языке Ардуино для формирования коротких импульсов есть команды delayMicroseconds и micros. Проблема в том, что разрешение этих команд составляет 4 микросекунды. То есть, сформировать временные задержки с заданной точностью не получится. Надо переходить к средствам С++ или Ассемблера. А можно организовать управление адресной светодиодной лентой через Arduino с помощью специально созданных для этого библиотек. Начать знакомство можно с программы Blink, заставляющей светоизлучающие элементы мигать.

FastLed

Эта библиотека универсальна. Помимо адресной ленты она поддерживает множество устройств, включая ленты с управлением по интерфейсу SPI. Обладает широкими возможностями.

Сначала библиотеку надо подключить. Это делается до блока setup, а строка выглядит так:

#include

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

CRGB strip[15]

В блоке setup надо указать, с какой лентой будет работать скетч:

void setup() {

FastLED.addLeds< WS2812B, 7, RGB>(strip, 15);

int g;

}

Параметр RGB устанавливает порядок чередования цветов, 15 означает количество светодиодов, 7 – номер вывода, назначенного для управления (последнему параметру тоже лучше назначить константу).

Блок loop начинается с цикла, который последовательно записывает в каждый раздел массива Red (красное свечение):

for (g=0; g< 15;g++)

{strip[g]=CRGB::Red;}

Далее сформированный массив отправляется в светильник:

FastLED.show();

Задержка 1000 миллисекунд (секунда):

delay(1000);

Затем можно таким же способом выключить все элементы, записав в них черный цвет.

for (int g=0; g< 15;g++)

{strip[g]=CRGB::Black;}

FastLED.show();

delay(1000);

Скетч для мигающей ленты на основе FastLed.

После компиляции и загрузки скетча лента будет мигать с периодом в 2 секунды. Если надо управлять каждой цветовой составляющей раздельно, то вместо строки {strip[g]=CRGB::Red;} используется несколько строк:

{

strip[g].r=100;// устанавливается уровень свечения красного элемента

strip[g].g=11;// то же для зеленого

strip[g].b=250;// то же для синего

}

NeoPixel

Эта библиотека работает только с LED-кольцами NeoPixel Ring, но она менее ресурсоемка и содержит только самое необходимое. На языке Ардуино программа выглядит так:

#include

Как и в предыдущем случае подключается библиотека, и декларируется объект lenta:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// где 15 – количество элементов, а 6 – назначенный вывод

В блоке setup инициализируется лента:

void setup() {

lenta.begin ()

}

В блоке loop все элементы засвечиваются красным, переменная передается в ленту и создается задержка в 1 секунду:

for (int y=0; у<15;y++)//</strong> 15 – количество элементов в светильнике

{lenta.setPixelColor(y, lenta.Color(255,0,0))};

lenta.show();

delay(1000);

Прекращается свечение записью черного цвета:

for (int y=0; y< 15;y++)

{ lenta.setPixelColor(y, lenta.Color(0,0,0))};

lenta.show();

delay(1000);

Скетч для программы Blink на основе NeoPixel.

Видео-урок: Образцы визуальных эффектов с использованием адресных лент.

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

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

image

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

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

image

Совместимая с 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. Также у нее есть контакт для внешней подачи питания для светодиодов, его можно использовать в случае когда мощности внутреннего источника питания не хватает.

image

Как показано на представленной структурной схеме, нам необходимо скачать и установить на свой смартфон приложение 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 вся конструкция будет выглядеть следующим образом:

image

Настройка приложения 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). Сохраните его – он нам пригодится в дальнейшем.

image

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

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

image

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

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

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

image

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

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

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

Также в нашем проекте мы будем использовать библиотеку “Adafruit_NeoPixel.h” для управления цветной светодиодной матрицей (RGB LED Matrix). Для этого сначала скачайте библиотеку Adafruit_NeoPixel, потом установите ее с помощью опции Include ZIP Library в Arduino IDE.

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

Затем нам необходимо будет ввести наш blink authentication ID (его нам прислали на электронную почту) в массив auth[].

Последовательную связь в нашем проекте мы будем использовать для целей отладке. Для этого с помощью библиотеки SoftwareSerial.h организуем последовательную связь на контактах 2 и 3 платы Arduino.

Внутри функции setup() мы инициализируем последовательную связь с помощью функции Serial.begin, подключимся к приложению blynk с помощью Blynk.begin и инициализируем светодиодную матрицу с помощью функции pixels.begin().

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

На финальной стадии нашего проекта мы будем принимать и обрабатывать данные, поступающие от приложения Blynk. В нашем случае эти параметры будут размещаться на виртуальном контакте “V2”, который мы рассматривали ранее. Функция BLYNK_WRITE будет вызываться всегда когда состояние/значение нашего виртуального контакта будет изменяться. Мы можем исполнять код внутри данной функции также, как и в любой другой функции Arduino.

В нашем случае внутри функции BLYNK_WRITE осуществляется проверка поступающих с виртуального контакта V2 данных. Как было рассмотрено в разделе про настройку приложения BLYNK, данные по цвету пикселов ассоциированы с виртуальным контактом V2. Для того, чтобы управлять цветом светодиода в матрице, нам необходимы 3 индивидуальных параметра цвета для каждого пиксела – Red (красный), green (зеленый) и Blue (синий). Как показано в фрагменте кода ниже, для извлечения значения красного цвета мы используем параметр param[0].asInt(). Аналогичным образом мы извлекаем значения и двух других цветов. Считанные значения цветов мы сохраняем в индивидуальных переменных. Затем эти значения цветов применяются к пикселям матрицы с помощью функции pixels.setPixelColor.

Также в представленном фрагменте кода функция pixels.setBrightness() используется для управления яркостью, а функция pixels.show() – для установки цвета светодиодов в матрице.

Загрузка кода программы в плату Arduino

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

После этого найдите script folder (папку со скриптами) библиотеки Blynk на вашем компьютере – она должна была создаться когда вы устанавливали библиотеку. В нашем случае эта папка располагается по адресу:

“C:UsersPC_NameDocumentsArduinolibrariesBlynkscripts”

В этой папке (script folder) должен содержаться файл с именем “blynk-ser.bat” – исполнимый файл для последовательной связи с приложением blynk, который мы должны отредактировать в блокноте (notepad). Откройте этот файл в блокноте и измените в нем номер порта (Port number) на номер порта для Arduino (Arduino Port number), который вы записали/запомнили на предыдущем шаге.

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

image

Примечание: если вы не видите показанное на представленном рисунке окно и вам выдается предупреждение что необходимо заново подключиться, то это может быть вызвано ошибкой соединения вашего компьютера с шилдом Arduino. В этом случае необходимо проверить соединение вашей платы Arduino с компьютером. После этого проверьте отображается ли номер COM порта в Arduino IDE. Если в Arduino IDE показывается правильный номер COM порта, то можно продолжать процесс – запустите файл “blynk-ser.bat” на исполнение снова.

Тестирование работы проекта

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

Аналогичным образом вы можете попробовать отображать и другие цвета.

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

Видео, демонстрирующее работу проекта

212 просмотров

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий