А по мне, то лучший способ провести длинные тёмные зимние вечера — это за разработкой алгоритмов для праздничной иллюминации.

Представляю открытый проект новогодней гирлянды на основе LED ленты со светодиодами WS2812B. Гирлянда питается от 4-х AA аккумуляторов. С текущими настройками проект поддерживает 122 светодиода на ленте, но легко может быть расширен до 1000 светодиодов и более. Гибкий перенастраиваемый алгоритм генерации световых эффектов. Проект содержит программу управления гирляндой с телефонов или планшетов, компилируемую без модификаций под iOS, Android и Windows.

Управляется лента в моем проекте модулем K66BLEZ c микроконтроллерами семейства Kinetis.
Знакомство с модулем K66BLEZ1 было начато в статьях:

— Модуль универсального контроллера для интернета вещей. Вдыхаем жизнь
— Модуль универсального контроллера для интернета вещей. Тестирование FatFs
— Модуль универсального контроллера для интернета вещей. Основы программирования
— Схема модуля
— Репозитарий проекта

Высокопроизводительный способ работы со светодиодной лентой на WS2812B был описан здесь. В данном проекте я использую тот же принцип. Как и STM32 микроконтроллеры семейства Kinetis K66 имеют в себе таймеры с доступом по DMA (механизм прямого доступа к памяти минуя процессор). На этот раз я использую прерывания после окончания каждого цикла DMA чтобы обновить состояния светодиодов согласно алгоритму генератора эффектов.

К модулю присоединяемся через макетную плату:



Макетная плата практически ничего не содержит кроме двух разъемов. Один разъем предназначен для подключения аккумуляторов, другой для подключения ленты.

Ниже схема макета (кликабельно):



Напряжение питания


Интересной особенностью ленты является ее способность работать от гораздо более низкого напряжения чем написано в спецификации. Гирлянда сохраняет работоспособность при понижении напряжения на аккумуляторах до 2.9 В!

При свежих аккумуляторах гирлянда получает напряжение 5 В, но при этом управляющий сигнал подается напрямик с микроконтроллера и имеет амплитуду 3 В и сбоев в управлении светодиодами не происходит.

Так выглядит работа гирлянды на столе в режиме отладки:



Исходники проекта находятся здесь — Indemsys/K66BLEZ_WS2812B_LED_strip_control.

Проект состоит из 3-х программных частей:

  • Директория MK66 — содержит проект для микроконтроллера MK66FX1M0VLQ18 модуля K66BLEZ. Микроконтроллер выполняет основное приложение. Работа приложения базируется на операционной системе реального времени MQX.

    Помимо основного приложения проект содержит стеки USB, TCP/IP, файловую систему, отладочный монитор и многое другое. По сути это фреймворк для создания разнообразных приложений где управление гирляндой является просто некоторым простейшим демонстарционным приложением. Среда разработки — IAR 7.70.2.

  • Директория MKW40Z — содержит проект для микроконтроллера MKW40Z160VHT4 модуля K66BLEZ. Микроконтроллер занимается поддержкой связи по протоколу Bluetooth LE. Работа стека Bluetooth базируется на операционной системе реального времени FreeRTOS. Среда разработки — IAR 7.70.2

  • Директория PC_app содержит проект управляющей программы на PC в среде RAD Studio 10.1. Использован кросплатформенный фреймворк позволяющий компилировать приложение под Windows, iOS и Android.

Проект развивается. И надеюсь к следующему Новому году гирлянда будет управляться голосом и из облаков.
Поделиться с друзьями
-->

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


  1. Ugrum
    31.12.2016 18:20
    +1

    Носимая новогодняя гирлянда.

    Для шагающей ёлки?
    А собссно по сабжу — красиво и добротно сделано.
    Респект.


    1. Rumlin
      01.01.2017 22:05
      +1

      Например приманка для отлова гиков
      https://geektimes.ru/post/252988/
      image


  1. Celtis
    31.12.2016 18:39

    Замеры потребления гирлянды делали?
    По грубым прикидкам на таком световом паттерне хороших батарей должно хватить максимум на 40-60 минут.


    1. Indemsys
      01.01.2017 22:33

      Интересно то, что выключенная лента с 122 светодиодами потребляет около 20 мА.
      Показанный на гифке паттер потребляет 800 мА.


      1. Celtis
        01.01.2017 23:34

        Каждый адресуемый контроллер 2812 потребляют постоянно, даже если управляемый им светодиод не горит.


        1. Indemsys
          02.01.2017 00:09

          Да


  1. Vnuchok
    01.01.2017 11:58

    Носимая — это что бы носить с собой или на себе, верно? Ну, например, как детали одежды, так? Хватит аккумуляторов, примерно, на час. Далее так и вижу:

    Подожди, я сейчас платье подзаряжу и пойдём!

    Ну или можно сделать зарядку от движений. Картинка номер 2:

    — а чего это её так колбасит?
    — да она платье заряжает.

    Ну это я так, чисто поржать))


  1. VioletGiraffe
    01.01.2017 11:59

    Не понимаю, как это работает. Что за хитрая светодиодная лента с тремя выводами, позволяющая добиться разного цвета светодиодов в одной ленте?
    Обычно у RGB-лент 4 вывода — земля и 3 анода R, G, B.


    1. LikeCoolPerson
      01.01.2017 12:33

      В каждом отрезке чип, который управляет цветом на своем участке


    1. DarkByte
      01.01.2017 14:35

      Вся магия в светодиодах WS2812B.


  1. vladimir_open-dev
    01.01.2017 14:01

    То, что у вас нет сбоев при управлении лентой уровнем 3в — сущее везение. Будет работать через раз(от экземпляра к экземпляру).


    1. Indemsys
      01.01.2017 22:31

      На таком принципе сделано около сотни устройств.
      Отказов ни разу не было.
      С даташитом все согласуется. Согласно нему граница логических уровней лежит в пределах 2 В при питании 5 В.
      Обычный TTL уровень.


      1. vladimir_open-dev
        01.01.2017 22:35

        Все так, вот только TTL логика это 5В, а не 3,3… и по документации уровень самой плохой лог. 1 получается 0,7*Uпит~3,5В. Поэтому я вам и говорю, что вам чисто повезло (скорее всего у вас питание проваливается при работе и логический уровень начинает совпадать).


        1. Leerooooy
          03.01.2017 00:39

          TTL вполне себе стабильно работает и при лог.1 равной 2.5В. Правда есть некоторые «НО», например, потребление самого контроллера и цепей управления растет, что ощутимо для портативного устройства с батарейным и питанием. Ну и конечно это все работает пока в радиусе нескольких метров не появится источник помех — тогда-то все и накроется)))
          Для игрушки это приемлемо, для китайцев это тоже приемлемо, для серьезного продакшена уже разумеется нет.


          1. vladimir_open-dev
            03.01.2017 06:35

            Надо документацию смотреть в таком случае… я вот не посмотрел — 300 устройств с ws2812 дорабатывать пришлось, хотя до этого от 3,3в управления работало и макет нормально работал, а продакшн не заработал. Хорошо, что малой кровью отделались.


            1. Indemsys
              03.01.2017 11:37
              -1

              Скорее всего проблема была в способе управления. Время рефреша, согласование с волновым сопротивлением кабеля и проч.
              Уверяю вас от 3 В работает железно. Уж более года производим.


              1. vladimir_open-dev
                03.01.2017 13:31

                Скорее всего, но как изменение уровня управления повлияло на эти вещи? И получается, что документация врет??

                Я вас уверяю, что вам повезло(такое часто бывает)… либо у вас питание ленты не 5В, а ниже.


                1. Indemsys
                  03.01.2017 15:09
                  -1

                  Не врет, а просто ее надо правильно понимать.
                  Возьмите Vil (уровень логического нуля ) и добавьте Vh (гистерезис) и получите уровень переключения.


                  1. vladimir_open-dev
                    03.01.2017 15:52

                    Пусть будет по вашему.


                  1. Leerooooy
                    03.01.2017 21:27
                    +1

                    Все классно… уровень нуля… гистерезис… только «мертвую зону» вы учли? «VIL + VH» — это лишь нижняя границы «зоны неопределенности». Вы хоть документацию правильно интерпретируйте. Производитель не гарантирует стабильность работы в данной границе, любые помехи и наводки будут искажать состояние линий и вызывать ошибки, а значит это очередной «хуяк, хуяк и в продакшен» — чисто российско-китайский подход.


  1. Indemsys
    02.01.2017 00:08

    Я измерю и думаю уровень будет еще ниже. Поскольку логика скорее CMOS.