Носимая новогодняя гирлянда. С управлением по Bluetooth LE

ee3577cddc104b54961b5d1b29f344f1.jpg

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

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

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

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

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

3cfd1b4d10094c24968039d2cab7897b.jpg

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

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

70da590cc2874526953f14104673b4ae.png

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


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

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

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

37562c2bd3414c2cad38b846ad2bfb8d.gif

Исходники проекта находятся здесь — 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.


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

© Geektimes