Умная новогодняя ёлка на 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);

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

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

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

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

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

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

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

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

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

 
Источник

Читайте также