esp8266 ws2812

ESP8266 и ws2812 в Arduino IDE — это очень просто!

В преддверии наступающего Нового Года пора подумать об иллюминации праздника и, конечно же, своими руками. Наилучший кандидат для этого — светодиоды 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 заходим в менеджер библиотек

Менеджер библиотек в Arduino IDE

Менеджер библиотек в Arduino IDE

В строке поиска вводим neopixel

neopixel

neopixel

Выбираем библиотеку, как на скриншоте и жмем Установка.

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

esp8266 ws2812 Arduino IDE

esp8266 ws2812 Arduino IDE

Далее уже можно пробовать, как там оно мигает и переливается всеми цветами радуги :)

Чтобы ваша иллюминация работала исправно все новогодние праздники рекомендуют рядом со светодиодами между питанием и землей добавить электролитический конденсатор на 1000мкф, или какой найдется. Так же неплохо будет добавить резистор на 470 Ом или около в шину данных между esp8266 и ws2812.

Наверняка вы захотите прикрутить еще и web сервер или mqtt клиент, чтобы управлять подсветкой. Это все тоже можно, только помните, что для обработки WiFi и TCP стека требуется процессорное время, что может сказаться на плавности световых эффектов. Не заставляйте esp8266 отдавать тяжелые страницы с громоздким HTML контентом во время отрисовки световых эффектов. Также помните, что MQTT клиент поддерживает постоянный коннект с брокером и обменивается keep-alive пакетами, даже когда нет обмена полезными данными. Поднимать точку доступа на esp8266 c ws2812 можно, но она потребляет весьма  значительную часть ресурсов, так что делайте это уж в крайнем случае.

Собственно и все. Заливаете скетч в ваш модуль как обычно и наслаждаетесь праздником.

С Новым Годом!

Обсуждение этой статьи на нашем форуме