Контроллер RGBW LED ленты: очередная лажа

Контроллер RGBW LED ленты: очередная лажа Машинки
Содержание
  1. Адресная светодиодная лента ардуино
  2. Адресные светодиодные ленты
  3. Библиотеки ардуино для работы со светодиодной лентой
  4. Видео инструкции и ролики
  5. Задумка
  6. Контроллер rgbw led ленты: очередная лажа
  7. Лента на базе ws2812b
  8. Мигание светодиодами neopixel в ленте
  9. Необходимые компоненты
  10. Постепенное затухание свечения светодиодов в ленте
  11. Предисловие
  12. Пример подключения к ардуино
  13. Проблемы
  14. Пульты и блоки
  15. Раздельное управление светодиодами neopixel
  16. Разработка android-контроллера для управления rgb светодиодной лентой. часть 1
  17. Реализация — android
  18. Реализация — arduino
  19. Режим радуги для светодиодов neopixel
  20. Светодиодная лента 16 цветов, bluetooth управление через телефон комплект для светодиодной подсветки bond 5050 5м, usb, ip65, 60 led/m smd 5050/ rgb 5 метров — купить в интернет-магазине ozon с быстрой доставкой
  21. Светодиодная лента ws2812b характеристики
  22. Сенсорное управление
  23. Случайный режим свечения светодиодов
  24. Схема проекта
  25. Управляем с телефона и компьютера
  26. Итоги

Адресная светодиодная лента ардуино

Адресные ленты отличаются плотностью — от 30 до 144 светодиодов на метр, изготавливаются разном защитном исполнении: IP30, IP65, IP67, IP68. Все варианты исполнения, кроме IP30, могут применяться на улице в диапазоне температур от -25 до 80°C. Еще одна, более надежная лента — WS2813 отличается возможностью передавать сигналы дальше по цепочке даже через сгоревший чип.

Адресные светодиодные ленты

Светодиодная лента – это набор связанных светодиодов, на которые может одновременно подаваться напряжение питания. Обычные ленты хорошо всем знакомы, они используются сегодня повсюду. В адресной светодиодной ленте так же используются светодиоды, но светоизлучающий диод может управляться отдельно и независимо от других.

Адресная светодиодная лента WS2811
Адресная светодиодная лента WS2811

Сегодня наибольшей популярностью пользуются разноцветные светодиодные ленты RGB-формата, позволяющие получать множество цветов. Благодаря конструкции есть возможность управления цветом каждого светодиода, что позволяет создавать оригинальные световые эффекты.

Главное отличие адресной светодиодной ленты от обычной RGB ленты – это наличие специальных контроллеров (конструктивно выполненных в виде микросхем) возле каждого светодиода, что и дает возможность индивидуальной адресации и регулирования каждого оттенка.

Как правило,л ента содержит 3-4 контакта для подключения. Два вывода используются для питания – 5 Вольт и земля, остальные один или два – логический, для управления свечением.  

Управление умной лентой производится по цифровому протоколу. Это значит, что без управляющего контроллера управлять устройством нельзя. Кстати, при прикосновении к цифровому входу может загореться несколько диодов – это связано с тем, что появляются помехи, которые контроллер принимает за команды.  

Самыми популярными адресными светодиодными лентами являются устройства на чипах WS2812b и WS2811. В первом случае чип находится прямо внутри светодиода, то есть один прибор управляет свечением одного излучающего диода. Питание ленты составляет 5 вольт. Во втором случае чип помещается отдельно, и к нему подключаются 3 диода. Мощность – 12 вольт.

Библиотеки ардуино для работы со светодиодной лентой

Для управления адресной светодиодной лентой существует 3 библиотеки: FastLED, AdafruitNeoPixel и LightWS2812. Наиюолее популярной является первая. Она поддерживает все версии Ардуино и различные протоколы данных, которые используются не только для адресной ленты. Но надо иметь в виду, что FastLED более ресурсоемкая.

Вторая библиотека, AdafruitNeoPixel, чаще используется при работе со светодиодными кольцами. Возможностей меньше, скорость ниже, но она менее требовательна к ресурсам, в ее составе только самое нужное. Поддерживает все версии Ардуино. Третья библиотека используется не очень часто.

Работать с библиотеками FastLED и Adafruit NeoPixel одинаково просто. Их отличия заключаются в функциональности и объеме занимаемой памяти.

Основные моменты подключения ленты: 

  • Питание. Каждому светодиоду в сегменте нужно 20 мА. Суммарный ток будет составлять 60 мА. Нужно просчитать общий ток ленты, и, исходя из полученного значения, подбирать блок питания. Например, лента длиной 1 м с 60 диодами будет потреблять 60*60=3600 мА=3,6 Ампер. Блок питания подбирается с похожей мощностью.  
  • Силовые точки должны быть запаяны качественно. Провода должны иметь такое сечение, чтобы выдерживать подаваемую нагрузку. Минимальное сечение 1,5 кв.м. При тонких проводах заданный программно белый цвет будет отдавать красным оттенком.  
  • Помехи. Лента, которая мигает, может создать помехи на линии. Если она с контроллером получает напряжение от одного источника, то помехи пойдут на микроконтроллер. Это может привести к нестабильности работы и различным сбоям. Решением проблемы будет установка электролитического конденсатора емкостью 470 мкФ на питание микроконтроллера и конденсатор на 1000 или 2200 мкФ на питание ленты.  
  • Если лента и устройство управления питаются от источников с разным напряжением, нужно использовать преобразователь уровня.  
  • Рекомендуется подавать на ленту менее 5 В питания. 
  • Питание в длинной ленте советуется распределить по всей длине. В ином случае моет произойти перегрев токопроводящих дорожек.
  • На ленте имеется толстый слой меди. От точки питания по ленте может падать напряжение. Для удаления подобной проблемы нужно дублировать питание при помощи медного провода сечением минимум 1,5 кв.м. через каждый метр.  

Соблюдение основных моментов и следование инструкции позволяет самостоятельно подключить адресную светодиодную ленту к вашему проекту.

Видео инструкции и ролики

Обучающее видео на канале HomeMade:

Видео по созданию бегущей строки на базе ленты ws2112

Задумка

Расположенные вдоль стен светодиоды находятся в отверстиях, просверленных в ламинате/паркете, на небольшом удалении от стены (на хабре уже была пара постов про подобное расположение светодиодов). При включении — плавное изменение яркости свечения отдельных светодиодов с одновременным смещением вдоль стены наиболее яркого — наподобие посадочных огней на ВПП.

Что хотелось воплотить в системе подсветки

Контроллер rgbw led ленты: очередная лажа

Я уже рассказывал про

RGBW светодиодную ленту

в одном из своих обзоров, теперь пришло время рассмотреть и контроллеры для них. В этом посте – контроллер с Bluetooth. Расчленёнка внутри.

Поставляется контроллер в антистатическом пакете чуть больше него самого по размеру. Кроме устройства в комплекте только гребенка 5×1 с шагом между контактами 2 мм. для подключения ленты, и инструкция с QR кодом для скачивания приложения.
Контроллер RGBW LED ленты: очередная лажа
Контроллер RGBW LED ленты: очередная лажа

Напряжение питания составляет от 5 до 24 В.

Контроллер RGBW LED ленты: очередная лажа
Контроллер RGBW LED ленты: очередная лажа
Контроллер RGBW LED ленты: очередная лажа

Устройство ничем не примечательно, из корпуса выглядывает только «хвост» с гнездом 5,5×2,1 мм. для подключения блока питания.

Подключение более чем незамысловатое – скачиваем приложение «Happy Lighting», включаем Bluetooth, и подключаемся к устройству. Все, можно работать! И ничего не работает.

Я скачивал приложение на следующие телефоны:
1) Samsung Galaxy A6 ;
2) Samsung Galaxy Grand Prime;
3) LG G4s.

Поэтому вывод простой, дело не в телефоне (-ах), а в самом приложении.

Похоже, приложение настолько кривое, что (судя по отзывам) у десятков людей, купивших контроллер, ничего не работает.
Тогда вскрываем?

Вот и обещанная расчлененка:
Контроллер RGBW LED ленты: очередная лажа
Контроллер RGBW LED ленты: очередная лажа
Контроллер RGBW LED ленты: очередная лажа

Рулит всем небезызвестный контроллер ST17H26ES16 китайской компании Lenze Technology, про который я рассказывал в одном из прошлых обзоров. Кстати, с устройством из того обзора тоже были косяки. Совпадение?
Еще раз приведу распиновку микросхемы:
Контроллер RGBW LED ленты: очередная лажа
Контроллер RGBW LED ленты: очередная лажа

Помимо нее на борту стоит ATtiny45 и линейный стабилизатор HT7133-1 и 4 ключа 3400L.
Судя по плате, изготовлена она 28 мая 2022. Монтаж компонентов производился машиной, претензий к нему нет. Следы неотмытого флюса обнаружены только на проводах питания и у гребенки для подключения ленты.

Естественно, был открыт спор, который я выиграл.

Вывод:

Товар не работает, к покупке не рекомендуется.

Смотрите про коптеры:  Raspberry Pi: что это такое, зачем он нужен, описание, характеристики, настройка, какой Raspberry Pi выбрать

Лента на базе ws2812b

Лента на базе ws2812b 
Лента на базе ws2812b

Лента на чипе ws2812b является более совершенствованной, чем ее предшественник. ШИМ драйвер в адресной ленте компактен, и размещается прямо в корпусе светоизлучающего диода.  

Основные преимущества ленты на основе ws2812b: 

Лента оснащена четырьмя выходами: 

Максимальный ток одного адресного светодиода равняется 60 миллиамперам. Рабочие температуры лежат в пределах от -25 до 80 градусов. Напряжение питания составляет 5 В  -0,5. 

ШИМ драйверы ленты 8-мибитные – для каждого цвета возможно 256 градация яркости. Для установки яркости нужно 3 байта информации – по 8 бит с каждого светодиода. Информация передается по однолинейному протоколу с фиксированной скоростью. Нули и единицы кодируются высоким и низким уровнем сигнала по линии.  

1 бит передается за 1,25 мкс. Весь пакет из 24 бит для одного светодиода передается за 30 мкс.  

Мигание светодиодами neopixel в ленте

В этом примере мы установим мигающий режим светодиодов в ленте NeoPixel – для этого все светодиоды должны включаться и выключаться одновременно, при этом цвет светодиодов может быть различный.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Адресная светодиодная лента (WS2812 RGB LED Ring Module) (купить на AliExpress).
  3. Макетная плата.
  4. Соединительные провода.

Постепенное затухание свечения светодиодов в ленте

Постепенное затухание свечения светодиодов (fading) – это еще один из замечательных эффектов светодиодов NeoPixel. Чем медленнее происходит затухание, тем более впечатляющим является этот эффект.

Предисловие

Летом прошлого года заинтересовался созданием системы декоративной монохромной подсветки на светодиодах для ремонтируемой квартиры, и встал вопрос, на основе чего её собирать.

Хотелось, чтобы была возможность:

Выбор был несложным — и я стал обладателем китайской копии Arduino Uno3 под названием DK-Duino Uno, купленной за 15 вечнозеленых на ебее. Одновременно с контроллером были приобретены собственно светодиоды (синие, по 3 бакса за сотню), модуль синезуба HC-05 за 12 долларов и блок питания на 12В/5А за 7 долларов — итого на круг вышло 37 долларов, или 1100 рублей.

На ебее есть возможность купить наборы светодиодная лента 5м контроллер пульт ИК за 17 долларов, но данный вариант не подходил из-за необходимости направлять пульт на приемник контроллера, который планируется спрятать за мебель/плинтус.Оригинальностью задумка не блистала, просто хотелось создать нечто удобное, долговечное и понятное в управлении всем жильцам дома.

Пример подключения к ардуино

Любая адресная светодиодная лента имеет начало и конец, которые важно не перепутать во время сборки. На них есть специальные обозначающие стрелки, которые указывают направление сигнала.  

Лента ws2812B подключается к Ардуино следующим образом. 

Лента ws2812B подключается к Ардуино следующим образом
Лента ws2812B подключается к Ардуино следующим образом

Еще один вариант подключения:

Подключение ws2128 к Ардуино
Подключение ws2128 к Ардуино

Выходы питания с ленты 5В и земля соединяются с соответствующими контактами на микроконтроллере Ардуино. При подключении отрезка с более чем 13 светодиодами потребуется выносной блок питания. Земля и минус блока питания должны быть соединены друг с другом.

Цифровой вход ленты идет на вход контроллера, поэтому между ними нужен токоограничивающий резистор номиналом 100-500 Ом. С его использованием нагрузка на пин будет ниже.  

Причины проблем при работе с адресной светодиодная лентой: 

Проблемы

С чем столкнулся: невозможность приема многосимвольных команд от телефона. Например, посылая команду s150 (по задумке — установить скорость 150 попугаев при максимуме в 255), я получал на Ардуино вместо переданной строки полный бред вида s###, где вместо шарпа шли любые ASCII-символы.

Возможно, это связано с использованием класса SoftwareSerial для подключения синезуба. Курение гугла показало, что я не один такой счастливчик с этой проблемой, но нет ни одного решения, кроме как изменение режимов модуля HC-05. Заморачиваться с командами AT не было желания, поэтому решил использовать только односимвольные команды из определенных диапазонов, тем более для поставленной задачи этого вполне хватало. Например — для скорости 10 значений и команды от G до P, для яркости — диапазон от Q до Z соответственно.

Пульты и блоки

Работа светодиодной ленты с подсветкой может быть эффектна только при грамотной координации. Чаще всего эту задачу решают, применяя особый контроллер (либо диммер). Контролирующее устройство типа RGB используют для лент соответствующего типа. Такой вариант позволяет подобрать гармонично оттенок свечения.

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

Этот способ особенно комфортен, обеспечивая контроль на расстоянии. Пульт и особый контроллер могут прилагаться в наборе поставки или покупаться отдельно.

Методики работы контроллеров RGB могут заметно различаться. Так, одни модели регулируют выбор оттенка по усмотрению самих пользователей. Другие рассчитаны на корректировку окраски с учетом той или иной программы. Разумеется, продвинутые устройства объединяют эти два способа и позволяют варьировать программы. Такой метод пригодится, если лента украшает:

  • помещение;
  • фасад;

  • различные части ландшафта (но контроллеры хорошо справляются еще и с цветомузыкальными режимами).

Раздельное управление светодиодами neopixel

В этом примере программы мы включаем светодиоды в ленте и управляем цветом и интенсивностью свечения каждого светодиода по отдельности использую плату Arduino UNO.

Разработка android-контроллера для управления rgb светодиодной лентой. часть 1

Журнал РАДИОЛОЦМАН, январь 2022

Вадим Колесник, Тирасполь

Android Bluetooth RGB controller – простое аппаратно-программное решение для управления RGB светодиодной лентой или RGB светодиодами посредством Android-устройства с поддержкой Bluetooth

Смотрите про коптеры:  Arduino. Проект «Робот-машина RoboCar4W» / Хабр

Статья носит ознакомительный характер, и в ней я постараюсь максимально подробно описать процесс создания простой системы, с помощью которой можно удаленно управлять RGB светодиодной лентой (или RGB светодиодами) посредством любого Android-устройства с интегрированным Bluetooth-модулем (Рисунок 1). Материал будет полезен не только начинающим радиолюбителям, осваивающим микроконтроллеры, но и профессионалам, интересующимся простым способом реализации беспроводного обмена данными Android-устройств с микроконтроллерными системами.

Общие сведения, состав аппаратной части и принципиальная схема.

Отличительной особенностью данного проекта является простота аппаратной и программой части системы, в состав которой входят Bluetooth-контроллер, портативное Android-устройство с установленным приложением (смартфон, планшет), выполняющее функции пульта ДУ, и источник питания 12 В/3 А (Рисунок 2). В статье мы рассмотрим в некотором роде демонстрационную версию системы, раскрывающей основные ключевые моменты аппаратной и программной реализации.

Bluetooth-контроллер представляет собой компактное устройство, состоящее из AVR микроконтроллера (МК) AtmelATmega8, миниатюрного Bluetooth-модуля HC-05 [4], силовых N-канальных MOSFET ключей, интегральных регуляторов напряжения, светодиодов статуса и нескольких пассивных элементов.

Программа микроконтроллера очень проста и разработана в интегрированной среде разработки AVR Studio 4 на языке Си.

Программное приложение для Android-устройства разработано в несложном и легким в освоении, но при этом достаточно функциональном графическом редакторе MIT App Inventor Beta.

Основные характеристики системы:

  • аппаратная часть (Bluetooth-контроллер):
    • доступный, дешевый и простой в применении Bluetooth-модуль HC-05;
    • реализованные на МК 3 канала 8-разрядной ШИМ для управления светодиодами;
    • в качестве силовых ключей используются N-канальные MOSFET в корпусе для поверхностного монтажа;
    • автономная работа – не требуется постоянная связь по Bluetooth с Android-устройством;
    • дальность связи 10-15 м;
    • напряжение питания 12 В;
    • ток потребления Bluetooth-контроллера (без светодиодной ленты):
      • Bluetooth-модуль в режиме поиска: 55 … 60 мА;
      • при установленном соединении с Android-устройством и отсутствии команд: 22 … 27 мА;
      • прием и обработка команды: 38 … 42 мА;
    • два светодиода для индикации режима работы Bluetooth-контроллера;
    • возможность реализации 10-разрядного ШИМ управления;
    • возможность реализации управления различными световыми эффектами;
  • простое приложение для Android-устройства:
    • понятный и достаточно информативный графический пользовательский интерфейс;
    • отображение МАС адреса подключенного Bluetooth-контроллера;
    • возможность ручной установки MAC-адреса;
    • сервисные сообщения об ошибках соединения с Bluetooth-контроллером;
    • кнопки быстрого выбора цвета свечения;
    • возможность ручной установки цветовой гаммы;
    • информирование о состоянии подключения;
    • возможность наращивания функционала (потребуется модернизация программы микроконтроллера).

Изначально для разработки и отладки системы автор использовал МК серии ATmega128, установленный на отладочную плату собственной разработки. Принципиальная схема доступна для скачивания в дневнике автора на форуме сайта radiocopter.ru [3]. Такой подход был обусловлен большим количеством свободных портов МК, достаточным объемом памяти и, самое главное, наличием в микроконтроллере отладочного интерфейса JTAG. При необходимости автор предоставит принципиальную схему и прошивку для этого МК.

Принципиальная схема Bluetooth-контроллера на микроконтроллере ATmega8 изображена на Рисунке 3, список примененных электронных компонентов приведен в Таблице 1. Схема и печатная плата разрабатывались в системе Proteus 7.7 SP2 [1]. Минимальное количество компонентов позволяет собрать схему на макетной плате или навесным монтажом.

Таблица 1.
Список использованных компонентов
Обозначение
в схеме
НоминалПримечание
R1, R268 ОмКорпус SMD 1206
R3, R4, R510 кОмКорпус SMD 1206
R6, R7, R8,
R9, R10
220 ОмКорпус SMD 1206
С11000 мкФ 16 В 
С20.47 мкФ 
С3, C4, C5100 мкФ 10 ВКорпус SMD
U1LM7805Возможно применение
LM78L05
U2UTC1117Y33Или аналог
в корпусе SOT223-3
DD1ATmega8Корпус PDIP28
Q1-Q3APM3055LИли аналог
в корпусе TO-252 
D1, D2светодиод (3 мм) 
X1кварцевый резонатор
11.0592 МГц
Опционально

Bluetooth-модуль HC-05 подключается к МК ATmega8 посредством интерфейса UART (порты PD0/RXD и PD1/RXD). О текущем режиме работы Bluetooth-модуля (поиск, установление соединения, режим AT команд) пользователя информируют два светодиода D1 и D2.

Стоит отметить, что в продаже доступны несколько вариантов Bluetooth-модулей, отличающихся конструктивным исполнением (Рисунок 4) и прошивкой. Чаще всего встречаются модули установленные на переходную плату с собственным регулятором напряжения, светодиодами статуса и выводами для подключения к МК. В авторском варианте схемы и печатной платы используется Bluetooth-модуль без переходной платы, который подключается к основной плате Bluetooth-контроллера с помощью гибкого шлейфа  (Рисунок 5). Другими словами, для такого решения потребуются установка микросхемы регулятора напряжения 3.3 В, светодиодов статуса и разъема для подключения к МК.

На принципиальной схеме участок с регулятором напряжения 3.3 В на микросхеме серии UTC1117Y33 (или аналогичной, например, CYT8117T33) отмечен надписью «Опционально» именно из-за этих конструктивных особенностей Bluetooth-модулей. Если вы используете модуль с переходной платой, то указанный участок исключается из схемы, изменяется разводка разъема подключения и, соответственно, немного видоизменяется печатная плата [2]. Распайка гибкого шлейфа для подключения Buetooth-модуля к разъему на печатной плате изображена на Рисунке 6.

Несмотря на то, что Bluetooth-модуль имеет напряжения питания 3.3 В, его цифровые входы/выходы являются 5 В совместимыми и могут подключаться к МК с напряжением питания 5 В без схем преобразования логических уровней.

Микросхема стабилизатора 5 В серии LM7805 используется для питания МК, а также в качестве предварительного понижающего регулятора напряжения для микросхемы стабилизатора 3.3 В (максимальное входное напряжение для этих микросхем не должно превышать 9 В). Однако возможно применение микросхемы серии LM78L05, ввиду того, что потребляемый МК и Bluetooth-модулем ток не превышает 65 мА. (Максимальный выходной ток LM78L05 составляет 100 мА). В ходе тестирования был выявлен незначительный нагрев микросхемы регулятора, когда Bluetooth-модуль находится в режиме поиска.

После программной инициализации периферии МК выходами 8-разрядных аппаратных блоков ШИМ назначаются порты PB1 (OC1A), PB2 (OC1B), PB3 (ОС2), к которым подключаются силовые N-канальные MOSFET ключи APM3055L с соответствующими резисторами в цепях затворов и между истоком и затвором. При работе с RGB светодиодной лентой длиной 5 м (светодиоды типоразмера 5050) нагрева силовых ключей не происходит. Также возможно применение любых мощных MOSFET в корпусе для поверхностного монтажа, например, транзисторов серии K3918. В процессе тестирования схемы в трех каналах ШИМ автор использовал указанные силовые ключи (один APM3055L и два K3918, что бросается в глаза на Рисунке 9), и разницы в установке цветовой гаммы и яркости не заметил.

Тактирование МК осуществляется от внутреннего осциллятора 8 МГц, однако на схеме указан опциональный кварцевый резонатор 11.0592 МГц. Кварцевый резонатор позволит повысить надежность обмена данными по UART. Испытания системы при тактовой частоте МК 8 МГц и скорости работы UART 9600 бит/с показали, что обмен данными ведется достаточно надежно, и сбоев обнаружено не было.

Также на схеме изображена перемычка (джампер) J1, предназначеная для перевода Bluetooth-модуля в режим AT команд с целью его конфигурирования и определения текущих параметров.

Все предлагаемые варианты печатных плат являются односторонними (Рисунки 7, 8). Коннектор для внутрисхемного программирования в авторских вариантах схем отсутствует, что связано с желанием минимизировать размеры платы, поэтому микроконтроллер устанавливается в DIP колодку, чтобы его можно было его извлечь для программирования.

Смотрите про коптеры:  Лего Роботы и Обучение (Lego Mindstorms & Education)

Внешний вид готовой платы со стороны установки smd компонентов изображен на Рисунке 9. Как видно, печатная плата изготавливалась в домашних условиях по ЛУТ-технологии без лужения печатных проводников.

Ссылки

  1. Принципиальные схемы и рисунки печатных плат для варианта Bluetooth-модуля без переходной платы (Proteus 7.7 SP2) – скачать
  2. Принципиальная схема и печатная плата для варианта Bluetooth-модуля на переходной плате (Proteus 7.7 SP2) – скачать
  3. Документация на модуль HC-05 и утилита для его настройки – скачать
  4. Отладочная плата на микроконтроллере ATmega128
  5. Калькулятор Fuse-битов AVR микроконтроллеров

Продолжение

Реализация — android


Для телефона было написано приложение, с возможностью задания передаваемых команд без переписывания и компиляции кода — для универсальности.

Скриншоты приложения:

Особых заморочек не было — благо документация есть, и весьма хорошая, как и громадное количество советов на StackOverflow. Но кое с чем пришлось столкнуться — например невозможность подключиться к Ардуино, используя стандартный метод класса BluetoothDevice:

// Get a BluetoothSocket to connect with the given BluetoothDevice
try
{
    // MY_UUID is the app's UUID string, also used by the server code
    tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
}
catch (IOException e) { }

Вместо этого пришлось лезть в рефлекшн и дергать приватный метод:

try
{
    Class class1 = device.getClass();
    Class aclass[] = new Class[1];
    aclass[0] = Integer.TYPE;
    Method method = class1.getMethod("createRfcommSocket", aclass);
    Object aobj[] = new Object[1];
    aobj[0] = Integer.valueOf(1);

    tmp = (BluetoothSocket)method.invoke(device, aobj);
}

С чем связана эта проблема — неизвестно, но возникает она у многих.

Еще одна проблема возникла при парсинге принимаемой от микроконтроллера строки. Вместо строк вида ###0-50-100-150-200-250***###0-50-100-150-200-250***… иногда приходили строки с ошибочным количеством элементов, неправильными разделителями или маркерами начала/окончания последовательности.

Реализация — arduino


Для управления выбрал телефон на Андроиде и синезуб, как наиболее простой способ, не завязанный на систему команд определенного пульта, не подверженный проблемам передачи команд через препятствия вроде стен-мебели-котов.

За основу была взята одна из многочисленных схем бегущего огня с затуханием, найденная на просторах бесконечного.

Максимум числа светодиодов — 6, по количеству PWM выходов выбранного Ардуино.

Что требовалось доделать: возможность подключения модуля синезуба для приема команд управления и отсыла данных о текущем состоянии на телефон для отображения.

С этим я успешно справился, результатом стал скетч для Ардуино:

Код скетча
#include <SoftwareSerial.h>

enum LedState { LED_ON, LED_OFF };
boolean isFadeMode = false;

#define LED_CNT 6
int ledPins[LED_CNT] = {11, 10, 9, 6, 5, 3}; // pwm pins
int ledBrightnessesWave[LED_CNT] = {0, 50, 100, 150, 205, 255}; // represents initial brightness for wave mode
int ledStepsWave[LED_CNT] = {-5, 5, 5, 5, 5, 5}; // represents initial change for wave mode
int ledBrightnesses[LED_CNT]; // represents brightness for pin
int ledSteps[LED_CNT]; // represents change, each pin gets its own change so it wont interfere with any other pin

int ledSpeed = 50;
int maxLedBrightness = 255;
int ledBrightnessesConst = 255; // represents brightness for pins in no wave or fade mode

LedState led_state;

#define rxPin 2
#define txPin 4

#define SPEED_PREFIX 'G'
#define SPEED_PREFIX_MAX 'P'
#define BRIGHTNESS_PREFIX 'Q'
#define BRIGHTNESS_PREFIX_MAX 'Z'

#define MIN_SPEED_DELAY 5
#define MAX_SPEED_DELAY 100
#define MIN_BRIGHTNESS 5
#define MAX_BRIGHTNESS 255

// set up a new serial port
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

void setup()
{
  for (int i = 0; i < LED_CNT; i  )
  {
    pinMode(ledPins[i], OUTPUT); //set pwm pins to output

    //copy initial values
    ledBrightnesses[i] = ledBrightnessesWave[i];
    ledSteps[i] = ledStepsWave[i];
  }
  
  led_state = LED_ON;
  
  Serial.begin(9600);

  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);

  mySerial.begin(115200);
}

int getBrightness(int b)
{
  return b;
}

int valueToDelay(int value)
{
  return MIN_SPEED_DELAY   (MAX_SPEED_DELAY - MIN_SPEED_DELAY) * value / (SPEED_PREFIX_MAX - SPEED_PREFIX);
}

int valueToBrightness(int value)
{
  return MIN_BRIGHTNESS   (MAX_BRIGHTNESS - MIN_BRIGHTNESS) * value / (BRIGHTNESS_PREFIX_MAX - BRIGHTNESS_PREFIX);
}

void recalculateBrightness(int brValue)
{
  ledBrightnessesConst = valueToBrightness(brValue);
}

void ledFade()
{
  if (led_state == LED_OFF)
  {
    for (int i = 0; i < LED_CNT; i  )
    {
      analogWrite(ledPins[i], ledBrightnessesConst); // update all pins
    }
    
    return;
  }

  String s = "###";
  for (int i = 0; i < LED_CNT; i  )
  {
    analogWrite(ledPins[i], getBrightness(ledBrightnesses[i]));

    int newBr = ledBrightnesses[i]   ledSteps[i];
    if (newBr <= 0 || newBr >= maxLedBrightness)
    {
      ledSteps[i] =- ledSteps[i]; //change direction if exceeds max/min value
    }
    else
    {
      ledBrightnesses[i] = newBr;
    }

    s.concat(ledBrightnesses[i]);
    if (i < LED_CNT - 1) //skip separator for last entity
      s.concat("-");
  }
  s.concat("***");
  
  char charBuf[1000];
  s.toCharArray(charBuf, 1000);
  mySerial.write(charBuf);
  mySerial.flush();
  
  delay(ledSpeed);
}

void loop()
{
  if (mySerial.available())
  {
    char command = mySerial.read();
    Serial.println("command is -> "   command);
    
    boolean handled = false;
    boolean changeFadeMode = false;
    
    switch (command)
    {
      case 'a':
        led_state = LED_OFF;
        handled = true;
        break;
      case 'b':
        led_state = LED_ON;
        ledSpeed = 50;
        handled = true;
        //do these lines to set wave mode
        changeFadeMode = true;
        isFadeMode = true;
        break;
      case 'c':
        led_state = LED_ON;
        ledSpeed = 30;
        handled = true;
        //do these lines to set wave mode
        changeFadeMode = true;
        isFadeMode = true;
        break;
      case 'd':
        led_state = LED_ON;
        ledSpeed = 10;
        handled = true;
        //do these lines to set wave mode
        changeFadeMode = true;
        isFadeMode = true;
        break;
      case 'e':
        led_state = LED_ON;
        changeFadeMode = true;
        handled = true;
        break;
      default:
        break;
    }
    
    if (changeFadeMode)
    {
      if (isFadeMode)
      {
        Serial.println("Set fade mode off");
        for (int i = 0; i < LED_CNT; i  )
        {
          //copy initial values
          ledBrightnesses[i] = ledBrightnessesWave[i];
          ledSteps[i] = ledStepsWave[i];
        }
      }
      else
      {
        Serial.println("Set fade mode on");
        for (int i = 0; i < LED_CNT; i  )
        {
          ledBrightnesses[i] = 0;
          ledSteps[i] = 5;
        }
      }
      isFadeMode = !isFadeMode;
    }
    else
    {
      //do nothing
    }
    
    if (!handled)
    {
      boolean isSpeedCommand = command >= SPEED_PREFIX && command <= SPEED_PREFIX_MAX;
      boolean isBrCommand = command >= BRIGHTNESS_PREFIX && command <= BRIGHTNESS_PREFIX_MAX;
      
      if (isSpeedCommand)
      {
        led_state = LED_ON;
        int speedValue = command - SPEED_PREFIX; //from 0 to 9
        ledSpeed = valueToDelay(speedValue);
      }
      if (isBrCommand)
      {
        led_state = LED_OFF;
        int brValue = command - BRIGHTNESS_PREFIX; //from 0 to 9
        recalculateBrightness(brValue);
      }
    }
  }
  
  ledFade();
}

В зависимости от принятой команды контроллер либо изменяет скорость, либо яркость свечения светодиодов. Так же можно запрограммировать любые произвольные действия на принятую команду — в примере я отключаю подсветку и меняю скорость.В каждом цикле контроллер шлет по синезубу на сопряженное устройство строку вида ###0-50-100-150-200-250***, где цифры — значения яркости шести светодиодов, с максимумом в 255.

Схема:
Контроллер RGBW LED ленты: очередная лажа

Режим радуги для светодиодов neopixel

В сети есть интересный инструмент для удобного создания различных эффектов для адресной светодиодной ленты NeoPixel – NeoPixel Effects Generator. В нем вы можете задать число светодиодов и контакт платы Arduino для управления ими и после создания в этом генераторе необходимых эффектов для вашей ленты вы можете в этом генераторе сформировать готовый код для платы Arduino.

Для этого выполните следующую последовательность шагов.

1. На сайте генератора нажмите Add Led Strip (добавить светодиодную ленту).

2. Задайте количество светодиодов в ленте и номер контакта Arduino, с которого будет осуществляться управление ими.

3. После этого нажмите на Add Effect (добавить эффект) и выберите желаемый эффект.

4. Задайте цвет свечения светодиодов.

5. Нажмите на “generate Arduino code” и после этого для вас будет сформирован код программы для Arduino, который вы можете непосредственно вставить в Arduino IDE.

2 802 просмотров

Светодиодная лента 16 цветов, bluetooth управление через телефон комплект для светодиодной подсветки bond 5050 5м, usb, ip65, 60 led/m smd 5050/ rgb 5 метров — купить в интернет-магазине ozon с быстрой доставкой

Светодиодная лента ws2812b характеристики

  • Размер светодиода — 5 х 5 мм
  • Частота ШИМ — 400 Гц
  • Скорость передачи данных — 800 кГц
  • Размер данных — 24 бита на светодиод
  • Напряжение питания — 5 Вольт
  • Потребление при нулевой яркости — 1 мА на светодиод
  • Потребление при максимальной яркости — 60 мА на светодиод
  • Цветность: RGB, 256 оттенков на канал, 16 миллионов цветов
Характеристики WS2812B
Характеристики WS2812B адресной светодиодной ленты

Адресная светодиодная лента ws2812b — это вершина эволюции лент. Каждый светодиод в ленте состоит из обычного RGB светодиода и контроллера с тремя транзисторными выходами. Благодаря этому есть возможность управлять цветом любого светодиода и создавать потрясающие цветовые и световые эффекты. Именно поэтому устройство пользуется популярностью, несмотря на высокую стоимость.

Сенсорное управление

Чтобы манипулировать яркостью и другими характеристиками диодной схемы, можно воспользоваться модульным выключателем. Он работает как ручным способом, так и с дистанционным управлением инфракрасным пультом.

Так как отзывчивость у управляющего контура весьма велика, важно избегать лишних касаний его руками, даже по периметру. Это может быть воспринято как команда.

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

Случайный режим свечения светодиодов

В этом примере мы будем использовать функцию random(num1, num2) чтобы сгенерировать случайное число в интервале от num1 и num2 и на основе этого выбрать цвет и светодиод.

Схема проекта

Схема подключения адресной светодиодной ленты WS2812 к плате Arduino представлена на следующем рисунке.

Схема подключения адресной светодиодной ленты WS2812 к плате Arduino

Примечание: если вы используете адресную светодиодную ленту с большим количеством светодиодов, то в этом случае рекомендуется подключать конденсатор большой емкости (приблизительно 1000 мкФ) параллельно и – источника питающего напряжения.

Управляем с телефона и компьютера

Подключение LED-ленты к компьютеру вполне разумно, если нужно подсвечивать сам этот компьютер или стол. Подсоединение к блоку питания позволяет обойтись без понижающих трансформаторов, которые были бы нужны при подпитке от домашней электросети.

Важно: для применения в квартире следует использовать ленты с защитой от влаги на уровне 20IP – этого вполне достаточно, и более дорогие изделия не нужны.

Наиболее практичны конструкции SMD 3528. Начинают присоединение с поиска свободных разъемов типа molex 4 pin. На 1 м конструкции должно приходиться 0,4 А тока. Подача его на элемент обеспечивается при помощи желтого 12-вольтового кабеля и черного (заземляющего) провода.

Все поверхности, куда монтируют ленты, протирают спиртом. Это позволяет убрать пылинки и жировые отложения. Перед приклеиванием ленты надо снять защитные пленки. Провода взаимно подсоединяют, соблюдая цветовую последовательность. Но управлять светом от компьютера можно и при помощи RGB-контроллера.

Многоцветные диоды подсоединяют 4 проводами. В связке с контроллером можно использовать пульт. Стандартная схема рассчитана, опять же, на питание током 12 В. Чтобы сборка проходила лучше, необходимо применять разборные коннекторы.

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

Есть еще один вариант — координация работы системы по Wi-Fi с телефона. В этом случае используют метод подключения Arduino. Этот подход позволяет:

  • менять интенсивность и скорость работы подсветки (с градацией до полного выключения);

  • задавать стабильную яркость;

  • включать затухание без бега.

Необходимый код скетча выбирают среди множества готовых вариантов. При этом учитывают, какой конкретно тип свечения должен обеспечиваться с помощью Arduino. Без труда можно программировать произвольные действия на каждую команду. Необходимо учесть, что иногда многосимвольные команды с телефонов не передаются. Это зависит от рабочих модулей.

Системы с Wi-Fi надо подключать с учетом наибольшей нагрузки и номинального тока ленты. Чаще всего, если напряжение составляет 12 В, можно питать 72-ваттный контур. Подсоединять все надо по последовательной системе. Если же напряжение составляет 24 В, становится возможно поднять расход электричества до 144 Вт. В подобном случае более правильным будет параллельный вариант исполнения.

Итоги

Работающее приложение для телефона и скетч для Ардуино, работающая схема на макетке.

Видео примера работы схемы:

Что дальше:

Оцените статью
Радиокоптер.ру
Добавить комментарий

Adblock
detector