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

Просто так подключить гирлянду к ардуине и залить стандартные алгоритмы мне показалось слишком скучным. Потому, я решил привнести что-то новое, модное. Чтобы и самому интересно было и ребёнка порадовать.

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

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

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

В библиотеке даны на этот счет комментарии:
// three element pixels, in different order and speeds
NeoPixelBus<NeoGrbFeature, Neo800KbpsMethod> strip(PixelCount, PixelPin);
//NeoPixelBus<NeoRgbFeature, Neo400KbpsMethod> 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<NeoGrbFeature, Neo800KbpsMethod> 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<NeoGrbFeature, NeoEsp8266Dma800KbpsMethod> strip(PixelCount, PixelPin);
//NeoPixelBus<NeoRgbFeature, NeoEsp8266Dma400KbpsMethod> 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<NeoGrbFeature, NeoEsp8266Uart800KbpsMethod> strip(PixelCount, PixelPin);
//NeoPixelBus<NeoRgbFeature, NeoEsp8266Uart400KbpsMethod> 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<NeoGrbFeature, NeoEsp8266BitBang800KbpsMethod> strip(PixelCount, PixelPin);
//NeoPixelBus<NeoRgbFeature, NeoEsp8266BitBang400KbpsMethod> strip(PixelCount, PixelPin);


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


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

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

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

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


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

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

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

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

Комментарии (8)


  1. lopatoid
    31.12.2017 02:29
    +1

    > буду рад, если мне кто объяснит, как этот диод работает без резистора и какой либо схемы.
    geektimes.ru/post/258290


  1. safari2012 Автор
    31.12.2017 10:04

    Точно, это он. Спасибо, интересно было почитать. У меня RGB-вариант.


  1. Eeegrek
    31.12.2017 11:20

    Могу пояснить только на счёт отсутствия ограничительного резистора. Китайцы сделали гениальный ход: они ставят совершенно хреновенько батарейку, которая выдает очень малый ток, меньше максимального прямого тока диода! Я до этого догадался после того, как решил на паре китайских поделок заменить фиговые батарейки на нормальные того же типоразмера.


  1. tambovchanin
    31.12.2017 20:58

    Было бы интересно посмотреть и почитать про автоматизацию аквариума.


    1. safari2012 Автор
      03.01.2018 01:41

      Обязательно будет статья про аквариум. А посмотреть на него краем глаза можно на моем канале в YouTube уже сейчас.


  1. besitzeruf
    01.01.2018 07:28

    Просто так подключить гирлянду к ардуине и залить стандартные алгоритмы мне показалось слишком скучным.
    … и
    потому я ограничился несколькими стандартными примерами из библиотеки NeoPixel.
    … как так-то?


    1. safari2012 Автор
      01.01.2018 17:44

      … и потому добавилось IOT-составляющая, плюс кое-что от меня


    1. Hellsy22
      01.01.2018 21:27

      Вы не понимаете сути DiY. Автор же успешно подключил два провода к нужными выводам, подключил питание и все заработало. Это не магия, не мистика, а торжество науки и интеллекта! Подождите еще пару лет и будут вам не только стандартные шаблоны.