Беспроводной/USB RGB-контроллер

В ранних статьях был рассмотрен контроллер трех цветного светодиода/линейки… На его основе был построен новый RGB контроллер, управлением которым осуществляется с компьютера по USB или, без проводов, по bluetooth.

Контроллер в работе

Контроллер в работе

Такое управление раскрывает большие возможности по применения такого контроллера: задание приятного светового оттенка с компьютера, цветомузыка, световые шоу, динамическая фоновая подсветка…

Устройство построено на основе UART и поэтому ему всё равно по чему именно будет передаваться сигнал: COM порт или используя виртуальный COM порт на компьютере, а на контролере UART – USB или bluetooth. Т.к. основная часть в обоих схемах будет одинаковая её рассмотрим отдельно, а кирпичики связи, по средствам которых контролер сопрягается с компьютером по отдельности.

Основная схема RGB контроллера

Основная схема RGB контроллера

Всё построено на основе микроконтроллера PIC16F628A. RGB каналы коммутируются ключами IRL2203N, которые управляются логическим уровнем. Напрямую к их выходам можно подключать светодиодные ленты, для подключения отдельного RGB светодиода или 3-х разноцветных диодов понадобятся тока ограничители каждому из каналов, об этом подробнее можно прочитать в соответствующей статье посвящено светодиодам. Так же подключение полупроводниковых светоизлучателей к контроллеру было подробно описано в первой статье. Светодиод LED1 информирует о приятом пакете. Стабилизатор VR1 7805 понижает напряжение до 5В, от которого питается МК. Далее рассмотрим средства связи этого контроллера с компьютером.

Основная часть платы

Основная часть платы

Основная часть содержит следующие детали: микроконтроллер PIC16F628A, кварц на 20МГц с двумя конденсаторами C1 и C2 0805 по 22пкФ. Резистор R1 4,7к 0805, резистор R2 на 470Ом 0805, любой светодиод типоразмера до 0805 с током до 15мА. Стабилизатор 7805 в корпусе SOT-87 и обвязкой в виде двух конденсаторов C3 и C4 по 0,1мкФ 0805 и C5 чип тантал на 10мкФ типоразмера A. Ключи IRL2203N (замена IRL3103, IRL3705N), можно другие со схожими параметрам. Резисторы R3, R4, R5 – 680 Ом, а R6, R7, R8 – 10 кОм. Три клеммника 340-021-12 или два 340-031-12.

USB RGB-контроллер

Всё построено на маленькой микросхеме CP2102 от SiLabs, что это и как с ней работать уже было рассмотрено в соответствующей статье — USB-UART на cp2102. Немного упростив оригинальную схему, убрав обратную связь и гальванически развязав контроллер с компьютером, был получен следующий переходник:

Схема USB-UART

Схема USB-UART

Плата с ним выглядит следующим образом:

Плата USB RGB контроллера (вид со стороны выводных деталей)

Плата USB RGB контроллера (вид со стороны выводных деталей)

В преобразователе USB-UART с гальванической развязкой применены следующие детали: конденсатор C1 0,1 мкФ 0805, C2 чип-тантал типоразмера A на 4,7мкФ. Резистор R1 на 470 Ом, ограничивает ток, протекающий через светодиод LED1. Резистор R2 на 0 Ом 1206 выполняет роль предохранителя. Резисторы R3 и R4 по 4,7 кОм в корпусах 0805 и 1206. Сама микросхема преобразователя в корпусе QFN28 CP2102. Оптопара KP814, можно применить COSMO KP1010, так же, в ущерб гальванической развязке, её можно заменить перемычкой с выхода Tx микросхемы cp2102 на RB2 микроконтроллера, при таком включение надобность в резисторах R3 и R4 отпадает. Разъём mini-USB. И две перемычки, одна из которых выполнена резистором на 0 Ом в корпусе 1206.

Внимание! USB разъём не должен замыкаться с + шиной, которая подходит под ним.

Bluetooth RGB-контроллер

Этот вариант контроллера построен на базе ранее рассмотренного Bluetooth модуля HC-05 . Как и предыдущая схема в этой отсутствует обратная связь с компьютером. Преимущество этого варианта в том, что его можно забросить почти куда угодно и подцепившись к нему с компьютера наслаждаться светопредставлением. Модуль должен быть запрограммирован как Slave со скоростью 9600.

Схема Bluetooth – UART

Схема Bluetooth – UART

Схема такого интерфейса ещё проще: беспроводной модуль, стабилизатор и два делительных резистора.

Плата Bluetooth RGB контроллера (вид со стороны выводных деталей)

Плата Bluetooth RGB контроллера (вид со стороны выводных деталей)

В беспроводном варианте принимающая сторона состоит из следующих деталей: синий зуб HC-05 с прошивкой Linvor v1.5. Стабилизатор на 3,3В 78L33 в корпусе SOT-87 с обвязкой в виде двух конденсаторов в корпусах 0805 на 0,1 и 1 мкФ. Резисторы R1 и R2 на 3,3-4,7 кОм 0805.

Перед началом работы второго варианта, возможно, придётся немного понастраивать «синий зуб», а именно подключить его к компьютеру через UART и произвести следующею настройку. Специально для этого на плате предусмотрена обратная связь с контролером, хоть и не используется в основной схеме. Удалить с платы микроконтроллер, подключить UART преобразователь (USB-UART или COM-UART) к 7 (Tx преобразователя), 8 (Rx), 5 (общий) и 13 (+ питания) выводам микроконтроллера. Подать питание. Произвести диалог, по средством AT команд. Китайские HC-05 с DealExtreme приходят с прошивкой Linvor V1.5 со следующими настройками: Slave 9600 9N1, пароль 1234.

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

Протокол управления

Контроллер управляется по USB или Bluetooth, оба эти средства на компьютере используют виртуальные COM порты, а у микроконтроллера UART. Контроллер настроен следующим образом: скорость 9600, 8N1.

Контроллер принимает команды следующего вида – @xhcсссс , где @ — стартовый байт, x – байт, количество байт в посылке (до 10), h – байт, контрольная сумма (сложены все байты посылки), ссссc – данные.

Список команд контроллера:

  • Rx – установить насыщенность красного, x – байт (принимает значения от 0 до 255)
  • Gx – установить насыщенность зеленого
  • Bx – установить насыщенность синего
  • Mi – выбор режима работы, i – номер эффекта в ASCII коде (доступны 6 эффектов, см ниже)
  • Dx – установка скорости проигрывания спецэффекта, x – байт (принимает значения от 0 до 255, по умолчанию 40)

Модуль умеет проигрывать следующие эффекты:

  • 0 – эффект не выбран, просто горит заданным цветом
  • 1 – плавное переливание одного из базовых цветов
  • 2 – плавное переливание любых цветов
  • 3 – разгорание и гашение любого цвета
  • 4 – разноцветный стробоскоп
  • 5 – смена цветов

Примеры команд:

@06hD8hRяGяBя – установит белый цвет, если выключены световые эффекты
@02h81hM4 – включает стробоскоп

Программа

Для работы с ним была написан специальная программа, которая может задавать цвет и яркость, включать световые эффекты, запрограммированные в контролере, и устроить цветомузыкальное представление, получая звуковой спектр с любого из выходов звуковой карты. Подробнее о ней читайте в соответствующей статье — Al RGB Controller – программа для RGB контроллера, здесь же покажу видео работы контроллера:

Цветомузыка на RGB контроллере

Скачать прошивку от 10.11.2013

Убрано свечение на 0 яркости.

Скачать старую версию прошивки

Скачать печатки

Прошивка обновлена 10.11.2013

49 комментариев на « Беспроводной/USB RGB-контроллер»

  1. vladimir пишет 02.01.2012 в 18:38 #

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

  2. Alex_EXE пишет 03.01.2012 в 19:25 #

    Статья с программой ещё не готова, если контроллер уже собран, то могу то, что есть скинуть на мыло.

  3. vladimir пишет 03.01.2012 в 20:22 #

    Alex_EXE схему сегодня дособеру, плата готова, новый год из колеи выбил :)), скинь то что есть, а то невтерпёж как любопытно !

  4. vladimir пишет 07.01.2012 в 02:52 #

    Alex_EXE супер!, класс !, собрал запустил, пока модуля блютуз нету, тестирую на шнурке usb-uart от сот-телефона на чипе pl2303 , позже сделаю полный отчёт, поскольку собираюсь использовать схему в подсветке потолка, очень огорчило отсутствие запоминания настроек при отключении, и последующем вкл, Alex_ может можно это поправить малой кровью, былоб вааще супер pleease !?

  5. Alex_EXE пишет 08.01.2012 в 02:24 #

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

  6. Сергей пишет 22.01.2012 в 16:29 #

    Мне очень понравилась статья. Но возможности собрать схему сейчас самому нет. и тут возникает вопрос — есть ли у Вас возможность выслать по почте готовую систему беспроводного контроллера с голубым зубом и какая цена вашего изделия ? Алексей, а есть ли возможность все это соединить по Ethernet интерфейсу ?

  7. Alex_EXE пишет 23.01.2012 в 15:15 #

    Ответил, смотрите почту

  8. Сергей пишет 24.01.2012 в 03:45 #

    ссылка на прошивку не работает

  9. Alex_EXE пишет 24.01.2012 в 16:15 #

    В конце следующей недели файл добавлю, сейчас прошивка на доработке.

  10. Alex_EXE пишет 14.02.2012 в 20:46 #

    Прошивку и программу выложил, информацию немного обновил.

  11. harpjke пишет 29.02.2012 в 21:26 #

    Какой нагрев у транзисторов, если подключить 5метровую RGB ленту? Кто собирал, проверял? Потребляемая мощность при 9А 108 Вт?

  12. Alex_EXE пишет 29.02.2012 в 21:59 #

    На токах порядка 5А ключи холодные.
    10А эти ключи потянут, они до 82А, только проводники на плате усилить не забудьте.

  13. Борисыч пишет 21.06.2012 в 03:01 #

    Ой братцы, крепко я сомневаюсь что при таком включении полевика, в затворе с килоомом да еще и прямо с ноги ПИКа Вы сможете прокачать серьезный ток, через киолоом емкость затвора будет довольно долго заряжаться, транзистор в полуоткрытом состоянии будет довольно долго, перегрев обеспечен. Если гговорит о токах больше 5 ампер нужен драйвер перд затвором, хоть пару транзючков поставить pnp npn.

  14. Сергей пишет 21.06.2012 в 14:15 #

    Основательно так, со всех сторон проработано 🙂 Автору — respect!
    Вопросик: на какой частоте работает ШИМ для управления СД?

  15. Alex_EXE пишет 25.06.2012 в 01:29 #

    Частота ШИМа около 300-333Гц со скважностью 255.
    То что не идеально подобрал резисторы в ключах — этого не исключаю, схема на практике работает.

  16. Николай пишет 04.08.2012 в 03:15 #

    Здравствуйте.Такая проблема-спалил один из портов выхода.Случайно задел проводом 12 вольт.Вы мне как-то высылали исправленную прошивку с работой от кнопки и начальное свечение убирали.Можно будет обратится к вам на днях?Просто нужно будет поменять в прошивке одну лапу на другую.Спасибо.

  17. Alex_EXE пишет 08.08.2012 в 03:01 #

    Письмо отправил

  18. Евгений пишет 20.12.2012 в 18:32 #

    Здравствуйте, Алекс. возможно ли подключить Ваше устройство к JDM программатору (для управления), max232 на нем присутствует

  19. Alex_EXE пишет 21.12.2012 в 00:03 #

    На счёт программатора не знаю, а через max232 пожалуйста.
    Только в схеме есть 3 небольшие критические ошибки, по которым отправил статью на доработку, — отсутствуют биполярые ключи коммутирующие истоки мосфетов к линии «+ питание».

  20. Евгений пишет 22.12.2012 в 00:52 #

    а исходники программы появятся на свет?

  21. Василий пишет 11.04.2013 в 20:23 #

    Печатка на качается.

  22. Василий пишет 21.04.2013 в 00:44 #

    Ау. Есть кто ни будь живой?

  23. Alex_EXE пишет 16.09.2013 в 23:19 #

    Статья обновлена, ошибки исправлены, исправленные файлы возвращены на место.

  24. Алексей пишет 10.11.2013 в 14:20 #

    Здравствуйте!!! Alex_EXE Конструкцию повторил КЛАСС сделал на 9 светодиодах 3w RGB вмонтировал в софит, буду еще делать 3 таких.
    единственное что не понравилось это отключение цвета на температуре и когда включаешь по одному цвету в рисунок а так большой респект автору.

  25. Alex_EXE пишет 10.11.2013 в 17:53 #

    Обновил прошивку.

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

  26. Ярослав пишет 25.11.2013 в 03:58 #

    Я немного не понял по протоколу управления. Произвожу посылку строки «@0281M4» на контроллер по Bluetooth через терминал на компьютере (виртуальный COM-порт), а он не зажигает светодиоды, только реагирует на стартовый бит (мигает красный индикатор).

  27. Alex_EXE пишет 25.11.2013 в 23:17 #

    Срабатывает ли посылка на установление белого цвета? Попробуйте послать такую посылку: @03hBChM4; (64 3 188 77 52 59 (int))
    Терминал поддерживает отправку байтов?

  28. Ярослав пишет 26.11.2013 в 22:12 #

    Посылка на установление белого цвета не срабатывает. На посылку @03hBChM4 — результат тот же. Контроллер зажигает светодиоды только с помощью Вашей программы Al_RGB_Controller. Но мне необходимо управление через терминал. Я пользуюсь Вашей программой — AL Terminal. Настройки по умолчанию.

  29. Alex_EXE пишет 26.11.2013 в 23:53 #

    Если команду вводите так, как написали в сообщении — то неверно, Вы вводите все это ASCII символами. Ввод байтов осуществляется через доллар ($), при его нажатии открывается окно с выбором символов, где нужно вводить или @$003$188M4; в режиме [int] (выбор способа ввода в правом нижнем углу) или @$03$BCM4; в режиме [hex]. Так же не забываем про точку с запитой в таком варианте посылки.
    В статье же команду @02h81hM4 привел в более привычном виде, как мне кажется.

  30. Ярослав пишет 29.11.2013 в 16:33 #

    Благодарю Вас за помощь! Ваш подробный ответ мне помог разобраться с протоколом управления. А если не секрет, как Вы в своей программе управления светодиодной подсветкой (AL_RGB_controller), преобразуете команду для управления контроллером в нужный вид перед отправкой? Ведь нам надо преобразовать посылку в HEX коды, верно? Дело в том что я начинающий программист, разрабатываю программу управления для Аndroid и мне любопытно узнать…

  31. Alex_EXE пишет 01.12.2013 в 16:33 #

    На Си примерно будет так выглядеть:
    unsigned char mas[8],Length,i,hesh;
    // Формирование посылки
    mas[0]=’R’;
    mas[1]=переменная со значением красного цвета;
    mas[2]=’G’;
    mas[3]=переменная со значением зеленого цвета;
    mas[4]=’B’;
    mas[5]=переменная со значением синего цвета;
    Length=6; // известная длина команды
    // Отправка посылки
    hesh=0;
    for(i=0;i < Length ;i++) hesh+=mas[i];// может немного и не оптимально, что расчёт хэша тут, но этот протокол был сформирован давно.
    send_Usart(’#’);
    send_Usart(Length);
    send_Usart(hesh);
    for(i=0;i < Length;i++) send_Usart(mas[i]);

  32. Ярослав пишет 02.12.2013 в 14:50 #

    Спасибо большое Alex_EXE!

  33. Дмитрий пишет 13.12.2013 в 03:12 #

    Немного запутался с подсчётом контрольной суммы посылки. Если брать Ваш пример из статьи (установка белого цвета), то сумма получается 3D8 а не D8, если сложить все байты: 52 FF 47 FF 42 FF (R 255 G 255 B 255). Почему так?

  34. Alex_EXE пишет 13.12.2013 в 12:51 #

    Для хранения и пересылки хэша используется одно байтовая переменная, которая может принимать значения от 0 до FF, а всё что больше она просто отбрасывает.

  35. Alexsl пишет 11.02.2014 в 18:10 #

    Здравствуй!!! Alex_EXE повторил конструкцию респект и уважуха решил сделать небольшие софиты для оформления сцены получилось классно но вот вопрос если возможность доработки схемы для работы в DMX.

  36. Alex_EXE пишет 12.02.2014 в 00:31 #

    С DMX не работал и пока что не собираюсь, но есть вариант схемы, правда уже устаревший, для работы по Rs485 по своему протоколу.

  37. Alexsl пишет 14.02.2014 в 18:54 #

    не но если посмотреть как делают китай то там только все в прошивки укладывается да и микроконтроллер другой марки от атмелла вот ссылка http://elwo.ru/forum/58-527-1 ну а мне как бы не хотелось покупать новые микроконтроллеры и ставить взамен пикушек как и если возможность все это дело влюбить.

  38. Alex_EXE пишет 16.02.2014 в 23:40 #

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

  39. Alexsl пишет 18.02.2014 в 17:41 #

    Ну тогда придется переводить на атмелы для работы в DMX тк я сам не силен с прошивками и их писанием пытался как то вникнуть в написание программа для микроконтроллера, мозги закипели да и вас понимаю это трудоемкий труд и терпения.

  40. Alex_EXE пишет 20.02.2014 в 22:41 #

    Мне многое интересно и многое бы хотелось сделать, но всё упирается во время, его на все и всех не хватает.

  41. Serg пишет 14.11.2014 в 20:15 #

    Отлично сделано! Будет ли ли вариант управления с пультика + цветомузыка с микрофона? чтобы обходиться без компьютера

  42. Alex_EXE пишет 15.11.2014 в 02:13 #

    Ближайшее время нет. Нет необходимости и наработок. Пробел восполнить не желаете?

  43. руслан пишет 24.12.2015 в 02:09 #

    Подскажите а можно ли его посекундно запрограммировать? Хочу сделать костюмы для светового шоу

  44. Alex_EXE пишет 27.12.2015 в 00:05 #

    По моему такой функционал в программу не закладывал.
    При большом желании такую прошивку написать можно, но или выйдет немного, или эффекты нужно делать простые, или МК пожирнее взять, или со внешней памятью…

  45. миша пишет 01.01.2017 в 01:22 #

    на схеме с оптопарой я так полагаю ошибка, так как сигнал ведь будет инвертирован…

  46. Виктор пишет 30.07.2018 в 19:09 #

    Добрый день!
    Собрал схему все как бы работает, спасибо вам !
    Но вот я хочу немного разобраться с отправкой команд с мобыльного по БЛЮ ТУЗ.
    Поясните как правильно формировать команды ?
    Спасибо !!!

  47. Alex_EXE пишет 31.07.2018 в 01:08 #

    Смотрите раздел — Протокол управления

  48. Виктор пишет 03.08.2018 в 12:25 #

    Добрый день !
    С отправкой команд разобрались ! Спасибо !
    Но команды работают только с терминала на компе где создан виртуальный COM порт БлюТуза. С терминала на андроиде команды не работают. Я так понял что все связанно именно с COM портом ?
    Помогите мне понять принцип работы устройства в плане сотрудничества Отправитель-БлюТуз-PIC16. НС-05 выполняет только передачу данных, в каком виде она поступает на НС-05 с компа ?
    СПАСИБО !

  49. Alex_EXE пишет 17.08.2018 в 03:16 #

    Для отправки команд на блютуз модуль нужно сделать несколько вещей, т.е. подготовить модуль:
    1. Сначала подключить только один модуль к терминалу и настрить на нём: название, пин код, скорость по умолчанию 9600 8N1.
    2. Далее проверьте, работает ли он по умолчанию на приём. Подключитесь теперь к нему с телефона и проверьте, ка он принемает команды, если все хорошо то
    3. Подключите настроенный модуль к контроллеру
    4. сопрягите с ним источник команд.

Комментарии RSS

Оставьте отзыв