Rgb подсветка для пк на ардуино

Создаем свой режим ARGB-подсветки в игровом компьютере на базе Gelid Codi6 и управляем жестами

Всем привет. Сегодня расскажу как создать свой режим RGB подсветки в игровом компьютере, если у вас в ПК используются ленты и кулеры с адресными светодиодами, и как управлять с помощью жестов и даже музыки.

У меня материнская плата Asrock AB350 Pro не предназначена для управления подсветкой ARGB кулеров и светодиодных лент и вот как раз для таких ситуаций придумали отдельный контроллер. Поговорим сегодня про Codi6 от Gelid Solutions, который можно самому программировать за пару минут.

Технические характеристики

  • 6 независимых каналов управления ARGB подсветкой
  • 6 PWM разъемов подключения вентиляторов
  • Программирование на Arduino и наличие семплов в свободном доступе

Разбор работы Codi6 проведем на примере двух вентиляторов Radiant-D, которые имеют по 9 адресных светодиодов. У меня таких вентиляторов с подсветкой два. Дополнительно для управления подсветкой к контроллеру можно подключать различные сенсоры и датчики и у меня есть микрофон и дальномер.

Игровой вентилятор с подсветкой Radiant-D имеет размер 120мм. К основным техническим характеристикам отнесем наличие двойного шарико-подшипника, 9 ARGB светодиодов, PWM управление, бесшумный мотор. Частота вращения регулируется от 500 до 2000 оборотов в минуту. На обратной стороне коробки приведены более полные данные.

В комплекте идет 4 винта для крепления игрового вентилятора и сама вертушка. Из вентилятора идет 2 кабеля: один для регулирования частоты вращения, а второй для управления подсветкой. Крыльчатка вентилятора имеет матовый молочный цвет и края с зубами. На обратной стороне вентилятора указаны рабочее напряжение 12В и ток в 0.35А.

Управлять вентиляторами будет Codi6. Это контроллер, который выполнен на базе Arduino Uno. Он может управлять и светодиодными лентами, но у меня их нет с ARGB светодиодами. Контроллер поставляется в небольшой коробке. На обратной стороне приведены основные характеристики, которые указаны в начале статьи.

Внутри коробки находятся:

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

С самой платы выведены все разъемы и готовы к подключению, а сама Arduino Uno находится в прозрачном акриловом корпусе. На корпусе платы имеется разъем для подключения к внешнему источнику питания за пределами компьютера. К примеру, взяли блок питания от какого-то зарядного устройства и подключили в розетку. Для сброса настроек есть красная кнопка. Еще на плате есть черная кнопка, которую можно программировать. В видео будет пример выполнения скетча(кода), когда режим свечения подсветки меняется при нажатии на эту кнопку. Так же вынесены разъемы для подключения внешних сенсоров и датчиков. То есть можно настроить подсветку в игровом компьютере в зависимости от температуры в корпусе, уровня шума или даже управлять жестами.

Я буду подключать микрофон и дальномер, но в комплекте они не идут. Codi6 состоит только из контроллера на базе Arduino Uno.

Инструкции в комплекте нет, поэтому переходим на сайт производителя.

Там все очень просто расписано даже с картинками и подключение занимает всего пару минут. Постараюсь очень коротко, чтобы не утомить. Подключаем контроллер проводами к материнской плате и Sata разъемом к блоку питания. Далее устанавливаем драйвер CH340 USB и устанавливаем Arduino IDE. Далее в Диспетчере устройств смотрим, на какой СОМ-порт установился наш контроллер. После этого запускаем Arduino IDE и там уже указываем наш СОМ-порт. И осталось всего лишь скачать библиотеку Fastled. Теперь можно самому написать код для управления подсветкой, а можно воспользоваться примерами с сайта производителя.

Настраивать подсветку из примера кода с сайта можно как хочешь. Можно, чтобы горели не все светодиоды, а только какое-то определенное количество. Можно отключить подсветку одного вентилятора, а второй чтобы сверкал. Это свободное поле для фантазии. С другой стороны теперь не скажешь, что RGB подсветка — это баловство. Таким нехитрым способом ребенка можно заинтересовать программированием. Конечно, если вы дружите с радиодеталями и паяльником, то такую плату сможете собрать и самостоятельно, но Codi6 является готовым продуктом для людей, которые не обладают особыми знаниями.

Пример работы подсветки с переключением режимов программируемой кнопкой и вообще как работают вентиляторы Radian-D можно в видео ниже. Там же показан принцип работы в зависимости от уровня громкости музыки. Ну и дальномер может регулировать подсветку при входе в комнату или когда подносите руку. Сам по себе Codi6 мне понравился, потому что очень легок в освоении и пару часов я провел очень интересно, узнавая что-то новое.

Источник

Динамическая фоновая подсветка экрана своими руками

ОБНОВЛЕНИЯ

  • 02.12.2018 версия 1.3: Добавлено ограничение тока для всей системы, настройка CURRENT_LIMIT
  • 21.10.2019: Вышел проект “Компактный Ambilight by Karman” – читай здесь

ОПИСАНИЕ

Динамическая фоновая подсветка экрана телевизора или монитора компьютера (аналог Philips Ambilight). Работает под управлением Arduino, на компьютере вертится программа Ambibox. Arduino управляет адресной светодиодной лентой на чипах WS2812. В схему добавлен фоторезистор для адаптивной подстройки яркости ленты в зависимости от интенсивности освещения в помещении.

  • Очень дешёвый аналог Ambilight для любого монитора/телевизора, подключенного к компьютеру
  • Разрешение самодельной фоновой подсветки гораздо выше, чем предлагают даже дорогие модели от Philips
  • Самая простая схема подключения среди всех моих проектов
  • Удобная программа Ambibox для настройки и персонализации фоновой подсветки

ГОТОВЫЙ НАБОР

У наших партнёров Giant4 появился готовый набор ( ссылка на товар ) для сборки динамической подсветки! В комплекте идёт:

  • Лента (длину можно выбрать)
  • Провода для подключения
  • Блок питания
  • Удобный контроллер
  • Подробная инструкция по установке

ВИДЕО

КОМПОНЕНТЫ

Каталоги ссылок на Алиэкспресс на этом сайте:

Стараюсь оставлять ссылки только на проверенные крупные магазины, из которых заказываю сам. Также по первые ссылки ведут по возможности на минимальное количество магазинов, чтобы минимально платить за доставку. Если какие-то ссылки не работают, можно поискать аналогичную железку в каталоге Ардуино модулей . Также проект можно попробовать собрать из компонентов моего набора GyverKIT .

  • Купить в РФ, 60 свет/метр, 30 свет/метр
  • Купить на Али ссылка, ссылка
  • Black PCB / White PCB – цвет подложки ленты, чёрная / белая. В видео была чёрная
  • 1m/5m – длина ленты в метрах (чтобы заказать 2 метра, берите два заказа 1m, очевидно)
  • 30/60/74/96/100/144 – количество светодиодов на 1 метр ленты. В видео использовалась лента 60 диодов на метр
  • IP30 лента без влагозащиты (как на видео)
  • IP65 лента покрыта силиконом
  • IP67 лента полностью в силиконовом коробе
  • Постфикс ECO – лента чуть более низкого качества, меньше меди, на длинной ленте будет сильно проседать яркость
  • Беспаечные угловые соединители для ленты! 3 pin https://ali.ski/fm05oPhttps://ali.ski/2vRw0

    СХЕМЫ

    ПРОШИВКА

    УПРАВЛЕНИЕ

    Теперь ставим программу амбибокс. Тут всё стандартно, далее далее продолжить далее далее завершить. В конце при выборе устройства нужно указать адалайт. Запускаем. Сразу можно поставить русский язык. И можно поставить автозапуск программы при старте компьютера. Чтобы она не мешала остальным, можно поставить задержку запуска. Теперь переходим на вторую вкладку и сразу жмём кнопку больше настроек. Не пугаемся. Вспоминаем номер порта, у меня это был порт номер 5, и указываем его. Далее в программе есть несколько методов захвата изображения, из них у меня работают вроде бы первые 6, можете их все потыкать посомтреть посмотреть какой будет меньше тормозить. Но. Все методы кроме GDI FS Aero включают классическую тему оформления виндоус, то есть без прозрачных окошек, они даже подписаны no aero. Я люблю прозрачные окошки так что оставил аэро. Теперь нажимаем показать зоны захвата и видим, что они не настроены. Зон должно быть столько же, сколько у вас светодиодов. 98. Оп, перезагрузилась. Теперь жмём мастера настрйоки зон. Я наклеивал ленту так, что она получилась без угловых светодиодов, ставлю галочку. Далее, по горизонтали у меня 31 светодиод, ориентироваться нужно не на это число, а сразу смотреть вниз на зоны. Соотношение сторон определяется автоматически, но я на всякий случай поставил как у своего монитора, 16 на 9. И ещё можно удлинить зоны, чтобы они брали источник цвета с большей площади, так результат будет более симпатичным. Ну и всё. Сохраняем настрйоки и ставим галку включить подсветку. Тадаааам. Поздравляю, теперь у нас есть динамическая подсветка монитора. С режимом виндоус аэро наблюдается небольшая задержка, в других режимах без аэро задержки почти нет. В папке с картинками для тестов вы найдёте несколько сочных картинок для проверки вашей фоновой подсветки.

    Рекомендую попробовать программу Adalight EtVersion, вот отсюда

    ОШИБКИ И FAQ

    Может случиться так, что при работе от USB компьютер не выключается, пока не будет извлечён штекер, ведущий к Arduino

    Ответы на большинство вопросов можно найти здесь: https://alexgyver.ru/ws2812_guide/

    В: Я купил ленту, на ней контакты G R B 12V. Как подключить?
    О: Молодец, можешь кинуть ей в собаку. Это не та лента.

    В: Не работает! Какие есть типичные ошибки?
    О: Скорее всего в подключении. В основном забывают объединить GND ленты и GND Ардуины.

    ПОДДЕРЖАТЬ

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

    Источник

    Пиксельная подсветка просто и быстро

    Ролики с демонстрацией пиксельной подсветки выглядят довольно эффектно — куча разноцветных всплохов, динамичные отблески смотрятся просто замечательно и выглядят более подвижными по сравнению с другими типами подобной подсветки.
    Желание поработать с управляемыми огоньками с помощью arduino побудили меня соорудить такую систему. Как оказалось, это довольно простое мероприятие, на которое в сумме было потрачено всего несколько часов (собственно, само сооружение — 10 минут, остальное — софт). Детали процесса сборки и программирования я и изложу в этой статье. Софт, выводы и демо прилагаются.

    Аппаратная часть

    Для такой подсветки нам понадобятся следующие предметы и устройства:

    • Светодиодная лента на микросхемах WS2801 (с индивидуальным управлением каждым пикселем) нужной длины. Выглядит эта лента приблизительно таким образом:

      Лучше покупать ленту в силиконовой оболочке. Я покупал на ebay, можно попробовать купить напрямую у китайцев, будет дешевле раза в полтора. Длина ленты должна быть достаточной, чтобы обернуть её по периметру вокруг монитора или телевизора.
    • Arduino nano (или один из многочисленных клонов) — например, вот это. Подойдёт и не nano, нужно будет лишь правильно подключить.
    • Провода, называемые DuPont — не знаю, как они называются по-русски, выглядят вот так:

      Эти провода нужны для припаивания к ленте и подключения к ардуино. Нужно всего 2шт — так как они обжаты с двух сторон, разрезав пополам получим нужные нам 4 провода с разъемами.
    • Блок питания 5V + разъем питания, подходящий к этому блоку — и то, и другое в обилии продается как в радиомагазинах, так и на ebay, любых цветов, размеров и исполнений.
      Лента потребляет около 2A / метр в максимально ярком режиме. В повседневной работе 2 метра ленты питаются от БП 3A без каких-либо проблем.
    • Паяльник (любой, в разумных пределах), паяльные принадлежности, нож для зачистки проводов, изолента/термоусадка по вкусу.

    Схема (если это гордое слово подходит для соединения двух изделий четырьмя проводами) приведена на рисунке:

    Процесс сборки прост до безобразия. Детально описывать его нет смысла (по этой же причине нет фотографий готового «изделия» — ардуин с четырьмя проводами в интернете полно).

    1. Припаять всё, как показано на схеме.
    2. Присоединить провода к arduino, саму ардуинку соединить с PC, подключить блок питания.
    3. Залить в ардуино скетч (см. ниже), запустить исполняемый файл на компьютере (ссылки на софт также см. ниже), установить в программе нужный порт COM.
      Если вы пользуетесь Windows Vista/7 — нужно обязательно отключить Aero. Иначе скорость работы просто плачевная, какого-то решения проблемы низкой скорости захвата экрана при включенном Aero, как я понял, не существует.
    4. Убедиться, что всё работает, выключить.
      Следует упомянуть, что работает софт в 32-битном цвете only. Это можно легко поправить, но большого смысла, на мой взгляд, в такой правке нет.
    5. Прикрепить ленту на монитор. Пустить ленту нужно от левого нижнего угла по периметру по часовой стрелке (ЛН->ЛВ->ПВ->ПН->ЛН). Разрезать ничего не нужно, лента хорошо гнется практически в любом месте, так что проблем быть не должно. Для закрепления я использовал двухсторонний скотч — лента очень легкая и этого более чем достаточно.

    На этом сборка закончена. Остаётся посчитать и задать количество пикселей по вертикали и горизонтали, и можно смотреть ролики, играть, etc. и радоваться.

    Программная часть

    Скетч для Arduino

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

    Тут всё предельно просто:

    1. Посылаем сигнал, что мы готовы принять данные о подсветке;
    2. В течение небольшого промежутка времени ожидаем данные;
    3. Если данные пришли, то первый байт из этих данных — число диодов, которые обслуживаются. Умножаем на 3 (RGB) для того, чтобы узнать количество последующих байт;
    4. Переправляем принимаемые данные в ленту;
    5. Обновляем метку времени о последнем обновлении ленты (это нужно для тайм-аута и гашения всех пикселей ленты).
    Программа для PC

    Вроде бы есть готовые решения для этого, но то, что я видел, мне не понравилось категорически, и вообще это неспортивно, зря что ли ардуино используется. Поэтому, пожевывая бутерброд, левой ногой была написана программа для захвата областей экрана, обработки их и передачи нужных данных в ленту. Вся программа с потрохами доступна на гитхабе по адресу github.com/sergrt/pixie (за код не пинайте).
    Используется Qt 5.0.1 — интереса ради, никаких особенных вещей, присущих именно этой версии, не задействовано, так что вполне хорошо заработает и на 4 последние правки сделаны с использованием новых классов, так что теперь с версией 4 исходный код несовместим. Поскольку большую часть своих развлечений я проделываю под Windows, проект сделан под неё — Visual Studio 2012, захват GDI или DirectX. Я честно пытался генерировать .pro файлы для Qt Creator, но этот процесс страшно глючит с новым VS Qt Add-in, в итоге сходу эти файлы не заработали, разбираться не стал. Но всё можно без проблем скомпилировать под linux, см. UPD #3.

    Настройки программы

    Основная настройка — это указание количества светодиодов по вертикали и горизонтали, а также задание размеров захвативаемых областей. В мои 22″ поместилось 10 шт по вертикали и 17 по горизонтали:

    Ограничение частоты кадров разумно установить около 30. Значение «0» используется для работы с максимально возможной скоростью.

    Также нужно правильно указать порт для обмена с Arduino и скорость обмена. Скорость в скетче по умолчанию 115200:

    Для настройки яркости, порога срабатывания и ограничителя сделана отдельная вкладка «Обработка». Параметры, там представленные, регулируются в реальном времени:

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

    Немного про внутренности софта для интересующихся

    Основная идея состоит в запуске потока, хватающего области по заданному механизму, с подстраиваемым fps, и передающий эти области на обработку и последующую передачу ленте. Области захватываются в соответствии с настройками (кто бы мог подумать), цвет пикселя определяется простым средним по трем каналам RGB соответствующей области экрана. Опционально можно включить (директивами препроцессора) преобразование в Lab и усреднение его силами, но этот кусок кода не оптимизирован никак (взят как есть с просторов интернета), тормозит, поэтому по умолчанию выключен. Более того, каких-то особенных преимуществ Lab не заметно в контексте данной задачи, так что это не повод печалиться.
    Обработка областей осуществляется по вертикалям и горизонталям, а на ленту отсылается последовательность цветов, начиная с левого нижнего угла и далее по периметру по часовой стрелке (так, как мы наматывали ленту на монитор при сборке).
    Захват DirectX по скорости примерно равен захвату с GDI, при том, что в первом случае захватывается экран целиком, а во втором — только нужные куски. Вероятно, тут есть запас по оптимизации.
    Обильное использование memcpy связано в первую очередь со скоростью работы — все остальные методы показали себя медленнее в той или иной степени.

    Выводы и впечатления

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

    Что понравилось:
    Просмотр видео и игры с такой подсветкой субъективно разгружают глаза — пропадает жесткий фокус на картинке монитора. Ощущение усталости глаз наступает позже, если не переусердствовать с яркостью. Смотреть видео как минимум необычно, для полноты эффекта лучше делать это с некоторого расстояния.

    Что не понравилось:
    К самой системе подсветки как таковой особенных претензий нет, но, как уже говорилось, для полноты удовольствия нужно правильное окружение — отстутсвие бликующих поверхностей, равномерный цветовой фон за экраном, etc. В процессе эксплуатации выяснилось, что дизайнерские изыски моего монитора несколько мешают нормальной работе ленты — передняя панель выполнена из прозрачного пластика и выступает над задней крышкой по всему периметру на несколько миллиметров, особенно выдаваясь в нижней части. Поэтому несмотря на то, что лента закреплена относительно далеко, на гранях этой панели видны отдельные светодиоды. Полагаю, мало кто с таким столкнется, но всё же пусть информация будет доступна заранее.

    Ниже — ролик, как это выглядит в динамике. Оператор приносит свои извинения за заваленный горизонт.

    Ссылки
    • Проект на гитхабе — github.com/sergrt/pixie
    • Архив с исполняемым файлом для Win7/Vista etc — rghost.net/43638571 (VS 2012, Qt5)
    • Архив с исполняемым файлом для Windows XP — www.filedropper.com/pixiexp (VS 2010, Qt4 — работает на XP, отключен кроссплатформенный захват — т. к. часть необходимых классов в Qt4 отсутствует)
    • Ссылка на Visual Studio 2012 Update 1 Redistributable Package (на случай ошибок с отсуствием файлов msvcp110.dll и т.п.) — www.microsoft.com/en-us/download/details.aspx?id=30679
    • Ссылка на Visual C++ 2010 SP1 Redistributable Package (x86) (для версии под Windows XP) — www.microsoft.com/en-us/download/details.aspx?id=8328

    P. S. Дабы соблюсти приличия, привожу ссылку на отправную точку, откуда я начинал — compcar.ru/forum/showthread.php?t=9462

    UPD #1 На гитхабе обновилось ПО (включая исполняемый файл) — добавлена возможность группировать светодиоды для смягчения эффекта при просмотре не особенно динамичны фильмов.

    UPD #2 Добавил поддержку захвата экрана силами Qt (при помощи QScreen), так что теперь можно строить кроссплатформенное приложение. Наличие желающих помочь потестировать приветствуется.

    Источник

  • Adblock
    detector