[Из песочницы] Умная новогодняя ёлка на ESP8266 и ws2811

В прошлом году я начал собирать новогоднюю ёлку очень поздно. Обычно стандартный для каждого конца года режим закрытия проектов в тот декабрь оказался особенно напряженным. В общем, ёлку мы с ребенком принялись наряжать за пару дней до нового года. И первый же сюрприз при украшении ёлки был с новогодней гирляндой, купленной много лет назад то ли в ОБИ, то ли в Кастораме. Один из трех цветовых каналов совсем погас, а другой работал на пониженной яркости. Дело было в воскресенье, и сначала я хотел быстро съездить и купить замену. Но потом вспомнил про гирлянду их 25 управляемых RGB-светодиодов, купленных когда-то на али «на посмотреть», да так и пылящихся в ящике.

Просто так подключить гирлянду к ардуине и залить стандартные алгоритмы мне показалось слишком скучным. Потому, я решил привнести что-то новое, модное. Чтобы и самому интересно было и ребёнка порадовать.
Потому, было принято решение подключить эту гирлянду к умному дому. Умный дом у меня работает преимущественно на микроконтроллерах семейства ESP8266 с использованием библиотек ESP/arduino и blynk. Сервер blynk свой, локальный, развернут на RaspberryPi 3.

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

Подключается гирлянда к ESP8266 очень просто, но строго к определенным GPIO, в зависимости от модели модуля и нужной скорости передачи

В библиотеке даны на этот счет комментарии:// three element pixels, in different order and speeds
NeoPixelBus strip(PixelCount, PixelPin);
//NeoPixelBus strip(PixelCount, PixelPin);

// For Esp8266, the Pin is omitted and it uses GPIO3 due to DMA hardware use.
// There are other Esp8266 alternative methods that provide more pin options, but also have
// other side effects.
//NeoPixelBus strip(PixelCount);
//
// NeoEsp8266Uart800KbpsMethod uses GPI02 instead

// You can also use one of these for Esp8266,
// each having their own restrictions
//
// These two are the same as above as the DMA method is the default
// NOTE: These will ignore the PIN and use GPI03 pin
//NeoPixelBus strip(PixelCount, PixelPin);
//NeoPixelBus strip(PixelCount, PixelPin);

// Uart method is good for the Esp-01 or other pin restricted modules
// NOTE: These will ignore the PIN and use GPI02 pin
//NeoPixelBus strip(PixelCount, PixelPin);
//NeoPixelBus strip(PixelCount, PixelPin);

// The bitbang method is really only good if you are not using WiFi features of the ESP
// It works with all but pin 16
//NeoPixelBus strip(PixelCount, PixelPin);
//NeoPixelBus strip(PixelCount, PixelPin);,>,>,>,>,>,>,>,>,>

Вот прошлогоднее видео, что из этого получилось.

[embedded content]

Ребенок 6лет был в восторге, особенно от RGB-Зебры. Мне кажется, разработчики придумали этот элемент как раз для такого случая.

Елка долго стояла и радовала, аж до марта месяца (у ребенка в конце февраля день рождения и она хотела похвалиться перед друзьями).

Раз уж «корабль так удачно взлетел», в дальнейшем было решено добавить ещё огоньков. Была докуплена ещё одна гирлянда в 50 диодов. При подключении пришлось добавить 5В питания с противоположного конца гирлянды, т.к. она светила тускло и помаргивала. Кроме того, пару недель тому назад дочка вместе с мамой решили купить для ёлки звезду. Купили какую-то самую дешманскую китайскую в фикспрайсе, которая к тому же не работала. Вручили мне со словами «вот, папа, почини и повесь на ёлку!». Внутри звезды оказался один единственный диод, батарейка и выключатель, который оказался рабочий, но с замкнутыми контактами. Контакты я разомкнул, но это всё хозяйство уныло мигало разными цветами (такие встраивают в прыгающие силиконовые шарики). К стати, буду рад, если мне кто объяснит, как этот диод работает без резистора и какой либо схемы. Диод LED с виду самый обычный однокристальный, у него один катод и анод в прозрачной колбе. Выглядит примерно так.

В общем, было решено убрать штатный диод и взамен вставить 5шт. из гирлянды ws2811. Соответственно, скетч и профиль blynk были слегка доработаны для поддержки большего количества огней и звезды. Звезда получила персональную зебру и была исключена из всех алгоритмов анимации. С анимацией звезда не понравилась никому из домочадцев.

[embedded content]

В следующем году добавлю координатную анимацию и может ещё кто-то из читателей что-то предложит.

Ссылка на библиотеку

Ссылки на скетчи:
раз
два

P.S.: Если будет интересно, то в следующих статьях расскажу про своё видение недорогого умного дома. На данный момент у меня настроено управление освещением, аквариумом, климатом, домашним кинотеатром при помощи смартфона, ИК-пульта, датчиков движения, настенных кнопок и голосом.