А по мне, то лучший способ провести длинные тёмные зимние вечера — это за разработкой алгоритмов для праздничной иллюминации.
Представляю открытый проект новогодней гирлянды на основе 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.
Проект развивается. И надеюсь к следующему Новому году гирлянда будет управляться голосом и из облаков.