В преддверии наступающего Нового Года пора подумать об иллюминации праздника и, конечно же, своими руками. Наилучший кандидат для этого — светодиоды WS2812. Подробностей и внутренне устройство не привожу, потому как пытливые легко погуглят. Даю инструкцию в несколько кликов с тремя проводками. И даже скотч или синяя изолента не понадобятся.
Подключение — проще простого, даже схему смысла нет делать: GND — GND, +5v — +5v, DIN — любой свободный GPIO (у меня это D2 в Wemos R2).
А вот питание лучше посчитать. Каждый светодиод потребляет до 20 мА, когда включен один из цветов RGB, соответственно, если включить белый цвет на полную мощность, то потребление в пике будет 60 мА. Таким образом, вы должны умножить 20 мА на то количество светодиодов, которые вы подключаете — это будет величина тока при включенном одном цвете на всех светодиодах. У меня матрица на 64 светодиода, поэтому 64*20=1,28A. А если включить белый цвет на всех светодиодах, то получается 64*60=3.84A. Питания от компьютерного USB порта уж точно не хватит, поэтому подключаем внешнее питание.
Интернет пестрит материалами про управление светодиодами ws2812 с помощью esp8266, но пути все какие-то не простые и так и было в самом начале. Сейчас библиотека NeoPixel поддерживает все платформы, включая и esp8266, что делает работу с ws2812 по-настоящему легкой.
Шаг первый — В Arduino IDE заходим в менеджер библиотек
В строке поиска вводим neopixel
Выбираем библиотеку, как на скриншоте и жмем Установка.
Скачиваем мой скетч, где последовательно выполняются разные эффекты или берем любой из примеров в библиотеке. Далее нужно в скетче поправить GPIO которое будет у вас подключено к DIO вашей ленты/матрицы/кольца на ws2812 и указать количество смонтированных светодиодов.
Далее уже можно пробовать, как там оно мигает и переливается всеми цветами радуги :)
Чтобы ваша иллюминация работала исправно все новогодние праздники рекомендуют рядом со светодиодами между питанием и землей добавить электролитический конденсатор на 1000мкф, или какой найдется. Так же неплохо будет добавить резистор на 470 Ом или около в шину данных между esp8266 и ws2812.
Наверняка вы захотите прикрутить еще и web сервер или mqtt клиент, чтобы управлять подсветкой. Это все тоже можно, только помните, что для обработки WiFi и TCP стека требуется процессорное время, что может сказаться на плавности световых эффектов. Не заставляйте esp8266 отдавать тяжелые страницы с громоздким HTML контентом во время отрисовки световых эффектов. Также помните, что MQTT клиент поддерживает постоянный коннект с брокером и обменивается keep-alive пакетами, даже когда нет обмена полезными данными. Поднимать точку доступа на esp8266 c ws2812 можно, но она потребляет весьма значительную часть ресурсов, так что делайте это уж в крайнем случае.
Собственно и все. Заливаете скетч в ваш модуль как обычно и наслаждаетесь праздником.
С Новым Годом!