Подсветка WS2812 ESP8266

1427

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

Это будет подсветка на ленте WS2812 и управлением через WEB интерфейс.

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

Мы не будем делать ambilight — это тема на будущее. Сегодня просто декоративная подсветка. Принципиальным было управление с компьютера. Для меня самым очевидным было применение ESP8266 и запуск на нем WEB интерфейса. Это очень удобно т. к. кросс-платформенно, без проводов и можно управлять с любого устройства.

Железная часть

Комплектующие:

  • светодиодная лента WS2812B (model:BTF-5V-60L-B);
  • в качестве контроллера у нас ESP8266 распаянная на китайском аналоге Wemos D1 mini;
  • кусок макетной платы подходящего размера;
  • резистор 470 Ом;
  • пара электролитов на напряжение не менее 6,3V и емкостью побольше (в моем случае - 220Uf на 3.3V линию и 1200Uf на 5V);
  • клеммы и гребенка 2.54м -  для удобства подключения;
  • блок питания 5V 2A — можно взять зарядку от смартфона;
  • провода достаточного калибра.

Сборка конструкции не должна вызвать у вас трудностей. Единственная необходимая деталь это резистор примерно 470 Ом на шину данных. Остальное можно сократить.
Конденсаторы по питанию можно не ставить, но они сильно повышают стабильность работы системы в целом, особенно тот что по линии 3.3V
Клеммники, гребенки для подключения ESP8266, да и макетная плата нужны лишь для удобства. По большому счету — можно блок питания припаять напрямую к ленте и модуль управления подцепить на тонких проводочках туда же.

Блок питания большой мощности не нужен, 2A хватит. Т.к. у меня встроенный в стол мощный БП 12V 20A, то я запитал подсветку мониторов от него через преобразователь напряжения XL4015. Вы же можете взять любую зарядку на 5V. Главное не пропускайте ток через micro USB контроллера, подпаяйте питание напрямую от БП к ленте.
Ленту режем на куски и приклеиваем на клей Момент, для надежности. Следите за направлением ленты.

Программная часть

Тут мне повезло и удалось найти красивое и готовое решение: WS2812 FX Library for Arduino and ESP8266. Просто загружаем пример из библиотеки и все работает. Распишу подробно и по пунктам.

Скачиваем Arduino IDE c официального сайта и устанавливаем на свой ПК.

Настраиваем поддержку ESP8266: запускаем среду разработки и тут же идём в Файл/Настройки Вставляем ссылку (http://arduino.esp8266.com/stable/package_esp8266com_index.json) в поле «Дополнительные ссылки для Менеджера плат:» и жмём «OK».

Потом идём Инструменты/Плата:/Менеджер плат, находим там «esp8266 by ESP8266 Community» и устанавливаем последнюю версию. Все теперь вы можете прошивать эти Wi-Fi модули.

Дальше скачиваем библиотеку WS2812FX по ссылке (https://github.com/kitesurfer1404/WS2812FX). В Arduino IDE идем Скетч/Подключить библиотеку/Добавить .ZIP библиотеку и загружаем ранее скачанную библиотеку WS2812FX.

Теперь открываем Фаил/Примеры/WS2812FX-master/esp8266_webinterface и правим в нем SSID и пароль для подключения к вашему роутеру.

#define WIFI_SSID "YOURSSID"
#define WIFI_PASSWORD "YOURPASSWORD"

Тут можно поменять пин данных. У нас подключено к D4 на плате Wemos D1 mini, что соответствует GPIO2.

#define LED_PIN 2 

И посчитайте общее количество светодиодов в вашей подсветке, чтобы правильно заполнить значение.

#define LED_COUNT 24

Так-же можете поиграться с другими настройками: можете задать статический IP, дефолтный режим скорость анимации и т. д.

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

Комментарии

Комментарии