Подсветка WS2812 ESP8266
Сегодня поговорим о создании простой, бесполезной но очень эффектной штуковины.
Это будет подсветка на ленте 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 интерфейс устройства и можете управлять цветом и режимами работы.