Ambilight своими руками для телевизора arduino

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags

Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

DIY / Ambilight подсветка монитора или телевизора своими руками за 10$ и 15минут

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time
February 26, 2018 23:16
June 8, 2018 12:20
March 26, 2022 08:30
September 3, 2017 00:37
September 3, 2017 00:37

September 3, 2017 00:37
August 26, 2017 02:09
August 26, 2017 02:11
September 9, 2021 18:54

README.md

AlexGyver YouTube

Динамическая фоновая подсветка для монитора компьютера с адаптивной яркостью Подробности в видео: https://youtu.be/tx5GxvFgkh0

  • Библиотеки — библиотеки для дисплея и прочего, скопировать в
    C:Program Files (x86)Arduinolibraries (Windows x64)
    C:Program FilesArduinolibraries (Windows x86)
  • Gyver_Ambilight — прошивка для Arduino, файл в папке открыть в Arduino IDE (читай FAQ)
  • Schemes — папка со схемами подключения
  • Test pictures — папка с ядрёными радугами для теста подсветки

СХЕМА

Материалы и компоненты

Если товар закончился, то почти всё указанное ниже можно найти здесь http://alexgyver.ru/arduino_shop/ или здесь http://alexgyver.ru/electronics/

  • Arduino NANO 328p – искать
  • https://ali.ski/tb18j-
  • https://ali.ski/1792_
  • https://ali.ski/tZY3U4
  • https://ali.ski/nrX0Eh
  • Giant4 (Россия)
  • Адресная лента
  • https://ali.ski/9khIB
  • https://ali.ski/pbceh
  • Купить в РФ, 60 свет/метр, 30 свет/метр
  • Black PCB / White PCB – цвет подложки ленты, чёрная / белая. В видео была чёрная
  • 1m/5m – длина ленты в метрах (чтобы заказать 2 метра, берите два заказа 1m, очевидно)
  • 30/60/74/96/100/144 – количество светодиодов на 1 метр ленты. В видео использовалась лента 60 диодов на метр
  • IP30 лента без влагозащиты (как на видео)
  • IP65 лента покрыта силиконом
  • IP67 лента полностью в силиконовом коробе
  • Постфикс ECO – лента чуть более низкого качества, меньше меди, на длинной ленте будет сильно проседать яркость
  • БЕЗПАЕЧНЫЕ УГЛОВЫЕ СОЕДИНИТЕЛИ ДЛЯ ЛЕНТЫ. https://ali.ski/_7Bq8s
  • БП 5V Али искать (минимум 3A на каждые 100 LED)
  • https://ali.ski/IOI-1
  • https://ali.ski/w9OJz
  • Мощные https://ali.ski/Nce3OL
  • Мощные https://ali.ski/Fv4y47
  • Фоторезисторы https://ali.ski/Y52f7
  • Резисторы ЧипДип 10 кОм https://www.chipdip.ru/product0/41486
  • Резисторы ЧипДип 300 Ом https://www.chipdip.ru/product0/29794

Вам скорее всего пригодится

  • Всё для пайки (паяльники и примочки) http://alexgyver.ru/all-for-soldering/
  • Недорогие инструменты http://alexgyver.ru/my_instruments/
  • Все существующие модули и сенсоры Arduino http://alexgyver.ru/arduino_shop/
  • Электронные компоненты http://alexgyver.ru/electronics/
  • Аккумуляторы и зарядные модули http://alexgyver.ru/18650/

Как запустить и настроить

  • Загрузка прошивки http://alexgyver.ru/arduino-first/
  • Установить ambiBox, настроить по видео

Настройки в коде

#define NUM_LEDS 98 // число светодиодов в ленте #define DI_PIN 13 // пин, к которому подключена лента #define start_flashes 0 // проверка цветов при запуске (1 — включить, 0 — выключить) #define auto_bright 0 // автоматическая подстройка яркости от уровня внешнего освещения (1 — включить, 0 — выключить) #define max_bright 255 // максимальная яркость (0 — 255) #define min_bright 50 // минимальная яркость (0 — 255) #define bright_constant 500 // константа усиления от внешнего света (0 — 1023) // чем МЕНЬШЕ константа, тем «резче» будет прибавляться яркость

В: Как скачать с этого грёбаного сайта?
О: На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

В: Скачался какой то файл .zip, куда его теперь? О: Это архив. Можно открыть стандартными средствами Windows, но думаю у всех на компьютере установлен WinRAR, архив нужно правой кнопкой и извлечь.

В: Я совсем новичок! Что мне делать с Ардуиной, где взять все программы?
О: Читай и смотри видос http://alexgyver.ru/arduino-first/

В: Компьютер никак не реагирует на подключение Ардуины!
О: Возможно у тебя зарядный USB кабель, а нужен именно data-кабель, по которому можно данные передавать

В: Ошибка! Скетч не компилируется!
О: Путь к скетчу не должен содержать кириллицу. Положи его в корень диска.

В: Сколько стоит?
О: Ничего не продаю.

Вопросы по этому проекту

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

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

Еще по теме:  Как настроить lampa на телевизоре

About

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

Источник: github.com

Embiliight на Arduino первый пуск

В общем я писал, что заказал себе Arduino. Побаловался с ним пару дней и перешел к действиям.
Проект ambilight для ПК или для телевизора на который подается видеосигнал с пк. Первые наброски.

Что понадобится:
1.Arduino (любой)
2.Провода для подключения
3.Паяльник (припой, флюс)
4.Диодная лента ws2812b/ ws2812 (4 ножки/6 ножек на диод)
5.Блок питания 5v/12v не меньше 2A
6.Резистор 470 Ом
7.ПК (софт)

Описание:
Лента ws2812b/ws2812 состоит из диодов со встроенной микросхемой, что позволяет управлять каждым диодом по отдельности, в любом порядке. У такой ленты в отличии от стандартных RGB лент всего 3 контакта. +5в – управление – земля. Найти ее не так просто. Например я нашел только на Митинском радиорынке в одном месте. (ну и интернет конечно же).
Кстати: После покупки ленты и проверки ее работоспособности, при подключение к питанию – загораются не все диоды – это нормально.

Arduino – это микроконтроллер семейства Atmega. Микроконтроллер представляет из себя микропроцессор с памятью и различными периферийными устройствами, реализованный на одной микросхеме. Фактически это однокристальный микрокомпьютер, который способен выполнять относительно простые задачи – заказал с Алиэкспресс. Адекватнее использовать модель NANO, у меня UNO и это пробный так сказать запуск.

Софт на пк – программа Prismatik – захватывает видео с экрана, анализируя световую гамму в определенных зонах. Программа для arduino.

Принцип действия:
Программа Prismatik – захватывает видео с экрана, анализируя световую гамму в определенных зонах (по краям экрана) . За зонами прикреплены определенные диоды (в зависимости от расположения и количества). Далее программа через провод USB передает эту информацию на Arduino, который в свою очередь подает сигналы к определённым диодам через управляющий провод (PIN). Есть аналог программы AmbiBox, настройка идентичная – язык русский.

Монтаж:
Сначала нарезаем ленту по длине сторон экрана
ВАЖНО: нужно посчитать количество всех диодов, которые будут использоваться! спаиваем куски ленты между собой короткими проводами – это для создания прямых углов, т.к. лента не сгибается под прямым углом. Если кто-то сможет согнуть без проводов – тогда резать ничего не надо. К концу ленты припаиваем три провода. К началу ленты припаиваем провода.
ВАЖНО! На ленте обозначено направление сигнала стрелками. Направление сигнала на разных отрезках ленты надо соблюдать.

Далее все, что получилось клеим на корпус экрана с обратной стороны.

Полный размер

Полный размер

Полный размер

Между управляющим контактом ленты (PIN) и платой Arduino – впаиваем резистор на 470 ОМ. (у меня не впаян — а на монтажной плате и не один а несколько — 220, 220, 10,10 10 ОМ — не было у меня резистора на 470)))
К контакту ленты +5В подключаем питание от блока +5В, управляющий провод ленты (через резистор 470 ОМ) подключаем к пину (контакту) на Arduino №6 (1-13 – на любой – зависит от программы – скетча). Контакт №10 (1-13 – зависит от программы скетча) на плате Arduino и контакт GND (земля) – подключаем к «-» (земле) блока питания. Саму плату Arduino через USB к ПК.

Полный размер

Установка ПО:
Для начала устанавливаем программу для Arduino — Arduino IDE.
Качаем и устанавливаем библиотеку Fast LED – скаченный архив кидаем в папку «/lib»
Например: C:Program Files (x86)Arduinolib

Скачиваем скетч (листинг программы) который и будет у нас обрабатывать сигнал с пк и распределять его по ленте. Открываем его. Тут надо поменять несколько цифр, а конкретно:
1.кол-во используемых светодиодов (у меня 128 – тут надо вписать ваше количество)
2.Номер управляющего пина (у меня 6 – у вас – в какой воткнули от 1 до 13).
3.Маркировка диодов – у меня это ws2812b
4.Жмем стрелочку (на рис – 1)

Если все сделано правильно – лента мигнет разными цветами.

Устанавливаем Prismatik — жмем далее, next пока программа не предложить нам выбрать порт – выбираем порт ардуино – он указан в нижнем правом углу окна программы Arduino IDE у меня это порт COM11

Далее программа предложит порядок расположения зон на экране – 2-3 -4 стороны (андромеда, касиопея, пегас). У меня нет внизу диодов – поэтому у меня три стороны. Тут нужно указать общее количество наших диодов, которые подсчитали раньше. Счет диодов идет от начала ленты и зоны пронумерованы – не перепутайте.

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

Ну собственно и все)))

Я буду в дальнейшем дорабатывать. А именно: сделаю это все на ARDUINO NANO – маленькая платка размером с флэшку. Уменьшу провода между лентами по углам, установлю рассееватель на ленту, что бы свет был мягче и больше как бы заполнял заднюю область.

Телевизор подключен к пк через обычный VGA кабель.


Видео по динамичней:

Источник: www.drive2.ru

Аналог ambilight из LED ленты WS2812, arduino и киндер-сюрприза

Ambilight — разработанная Philips технология боковой подсветки пространства за телеящиком, которая, по мнению создателей, помогает зрителю еще больше погружаться в происходящее на экране.

Еще по теме:  Отзывы о покупке телевизора на озоне

В сети можно найти довольно много упоминаний о DIY Ambilight-like проектах, известны также коммерческие реализации подобного функционала в продуктах сторонних производителей / opensource-проектах, например, Lightpack.

Около года назад я практически случайно приобрел LED ленту на базе управляемых RGB диодов WS2812, рассчитывая задействовать её в каком-нибудь Arduino-проекте. Нехватка времени и противоречивая информация о возможности совместной работы с AVR контроллерами (сиречь Arduino) привела к тому, что реализация отодвинулась почти на год. Каково же было мое удивление, когда весь мини-проект по созданию Ambilight и организации его совместной работы с XBMC занял всего два вечера, т.е. 5-6 часов, включая поиск рабочего решения, написание скетча для arduino и конфигурационного скрипта к boblight, отладку их совместной работы, резку, пайку и монтаж ленты, а также прокладку 8м кабеля от arduino к телевизору.
Цель данного топика — поделиться с сообществом опытом и удивлением по поводу того, насколько все было просто, и задать направление желающим повторить это у себя дома. Мне кажется, что при наличии необходимых компонентов, повторение моего опыта «на столе» займет не более получаса.

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

Что у меня было

  1. Домашний медиасервер/NAS на базе Intel Celeron G1610 с установленным Ubuntu Server 13.10
  2. Готовая arduino-совместимая плата, купленная на ebay
  3. 4 метра вот такой RGB LED ленты (для 32″ экрана потребовалось менее трех метров, около 140 диодов из 240)
  4. Около 8 метров симметричного четырехжильного телефонного кабеля (таким, например, подключается ADSL-модем к сплиттеру), т.е. не «витая пара»

Как это работает

Светодиодная лента WS2812

Каждый метр ленты состоит из 60 SMD светодиодов типоразмера 5050 WS2812 со встроенным в каждый диод трехканальным ШИМ-контроллером. Отличие WS2812 от WS2811, с которыми их иногда путают, заключается собственно в наличии светодиодов (WS2811 — отдельная микросхема контроллера, WS2812 — светодиоды со встроенным контроллером). Не углубляясь в подробности, опишу в двух словах протокол управления диодами:
На ленте всего три шины: земля, питание и управление. С первыми двумя все очевидно из названия (требуется стабилизированный источник напряжения +5V), а управление работает так:
В течение первых 50 ms происходит инициализация ленты путем заземления управляющей шины. После этого контроллером отправляется пачка из пакетов по 24 бита (8 бит на каждый цветовой канал), содержащих информацию о яркости, каждый пакет предназначается для одного диода. Данные в пачке ничем не разделяются, т.е. каждый следующий пакет идет непосредственно за предыдущим. Получив всю пачку (длина пачки равна 24 бита x количество диодов в ленте), контроллер первого диода «откусывает» от нее свой пакет, использует информацию по назначению, а остальную пачку ретранслирует вперед. Таким образом, до последнего диода доходит пачка из одного 24-битного пакета.
Мне повезло: на глаза попалась библиотека для Arduino FastSPI_LED2, авторам которой удалось не только реализовать этот протокол, но и оставить нетронутым некоторое количество ресурсов контроллера. Общая логика её работы такова: необходимо инициализировать ленту (задается тип контроллера, управляющий пин arduino, количество диодов и их максимальная яркость), задать массив из восьмибитных значений яркости каждого цвета для каждого диода и дать команду на отображение данных, после чего происходит посылка управляющей пачки на ленту, и диоды меняют свой цвет.

Boblight

Opensource-проект boblight, по заверению разработчиков, является набором инструментов для управления светодиодами, подключенных к внешнему контроллеру. Я выбрал его по причине поддержки USB serial интерфейса, незатейливости его реализации, и, главное, наличия нативного клиента для XBMC.
С точки зрения пользователя, т.е. нас с вами, все достаточно прозрачно. Есть демон boblight, который получает информацию о выводимом на экран изображении по TCP/IP (с учетом наличия официального плагина boblight для XBMC, разбираться в работе этого протокола нет необходимости).
При поступлении данных со стороны клиента, демон проводит анализ видео в соответствии со своей конфигурацией и посылает внешнему контроллеру информацию о том, что и как должно гореть, в понятном контроллеру виде. Я выбрал вариант, в котором данные побайтно передаются через USB serial порт. Как и в случае с лентой, посылка данных предваряется инициализационной последовательностью, затем подряд идут данные для всех диодов.
Необходимым условием для запуска boblightd является наличие конфигурационного файла, в котором задается устройство вывода (у меня /dev/ttyACM0), количество каналов (равное утроенному количеству диодов, по каналу на каждый цвет каждого диода), инициализационная последовательность (по умолчанию 0x55AA), шестнадцатеричное значение каждого из основных цветов, а также задается каждый диод в следующем формате:

[light] name right1 #имя, может быть любым, необходимо для удобства чтения конфигурационного файла color red arduino 1 #номер канала, этот канал будет первым в очереди на отправку данных на контроллер color green arduino 2 color blue arduino 3 hscan 80 100 #горизонтальный диапазон сканирования изображения (в процентах), в данном случае для всех диодов по правую сторону экрана значение будет одинаковым, т.к. таким образом задается глубина сканирования. vscan 97 100#вертикальный диапазон сканирования, для диодов справа и слева будет соответствовать участку изображения, откуда берется информация о цвете для данного диода. Т.е. берем за 100 процентов количество диодов по вертикали и делим экран на равные части. Следующий по порядку диод будет, соответственно 94 97.

Еще по теме:  Подключить телевизор в Москве

Писать такое вручную было лень, поэтому я написал небольшой скрипт, который принимает в качестве аргументов количество диодов по вертикали и горизонтали и глубину сканирования в процентах, и выдает готовый конфигурационный файл для boblightd (внимание, для смены устройства вывода, скорости последовательного интерфейса или частоты обновления, необходимо отредактировать скрипт):

Скрипт для генерации конфигурационного файла для boblightd

#!/bin/bash # A shell script to make boblight.conf file # Written by: TPertenava, based on default boblight.conf example # Last updated on: 22.10.2013 #set vars # -v vertical LED count # -h horizontal LED count # -d deepness of color detection (in percent) usage() < echo «Usage: $0 [-v <1|100>] [-h <1|100>] [-d <0|100>]» 1> exit 1; > HOR= VER= DEEPNESS= while getopts «v:h:d:» OPTION; do case $ in h) HOR=$ ;; v) VER=$OPTARG ;; d) DEEPNESS=$OPTARG ;; esac #echo «s= $» #$ = $ done if [ -z «$» ] || [ -z «$» ] || [ -z «$» ]; then usage fi echo «#Leds in vertical = $VER» echo «#Leds in horizontal = $HOR» function output < # $1 location # $2 hscan low # $3 hscan high exit > cat

Синтаксис использования скрипта создания конфигурации (у меня 45 диодов по горизонтали и 28 по вертикали, глубина сканирования — 20 процентов, лента начинается из правого нижнего края экрана и наклеена против часовой стрелки):

# ./boblight_config_generator -h 45 -v 28 -d 20 > /etc/boblight.conf # boblightd -f

Таким образом мы настроили boblightd и запустили его на исполнение в фоновом режиме (с ключом -f).

Подробное описание конфигурационного файла можно найти в официальном репозитории проекта boblight.

Официальный плагин для boblight ставится прямо из меню “дополнения” XBMC:

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

$ boblight-constant FFFFFF

, лента загорится белым светом с максимально разрешенной контроллером яркостью. Я использовал эту программу для отладки взаимодействия boblightd и скетча Arduino, к которому мы сейчас перейдем.

Arduino

Как ни странно, этот этап тоже дался поразительно легко, благодаря вышеупомянутой библиотеке FastSPI_LED2. Скетч для Arduino прост до безобразия, он ждет начальной последовательности (0x55AA) с последовательного порта, дождавшись, инициализирует массив данных для LED, а затем запускает встроенную в библиотеку функцию вывода массива на ленту. Стоит отметить отдельно, что, строго говоря, WS2812 является не RGB, а BRG диодом, т.е. первой по порядку идет информация синего, затем красного и зеленого каналов.

Скетч для Arduino

// boblightd receiver for WS_2811, boblightd device type=momo, prefix 55 AA // capable at least for 20Hz input stream if LED count (leds, NUM_LEDS); > byte values[NUM_LEDS][3]; // 2-level array, 1 level is for led number, 2 level is for rgb values void WaitForPrefix() < uint8_t first = 0, second = 0; while (second != 0x55 || first != 0xAA) < while (!Serial.available()); second = first; first = Serial.read(); >> void loop() < WaitForPrefix(); for (byte Led = 0; Led> memset(leds, 0, NUM_LEDS * sizeof(struct CRGB)); //filling Led array by zeroes for (byte Led = 0; Led < NUM_LEDS; Led++) < byte red = values[Led][0]; byte green = values[Led][1]; byte blue = values[Led][2]; leds[Led] = CRGB(blue, red, green); >LEDS.show(); >

Аппаратно-железячная часть

Питание

Самый главный вопрос — электропитание. Arduino в моем случае получает питание по USB, а сама лента — от отдельного блока питания. Для уравнивания потенциалов земли Arduino и источника питания соединены. Правда, через восьмиметровый телефонный провод сопротивлением в пару Ом. Номинальная мощность ленты, указанная на упаковке, 18Вт/м, или 0,3Вт/диод.

Таким образом, номинальная мощность отрезка ленты из 140 диодов — 42Вт. В качестве источника питания ленты я использовал компактный импульсный БП от USB-хаба, 5В 3A, т.е. максимальная выдаваемая мощность БП равна 15Вт. В соответствии с этим расчетом была уменьшена максимальная яркость диодов (см. выше скетч Arduino). (Да, я знаю, что в datasheet на диоды указано напряжение питания 6..7В, по этому поводу ничего не могу сказать, работает хорошо на +5В, потребление линейки не измерял).

Лента

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

Обратите внимание на направление стрелок, у каждого диода есть вход и выход!
Лента подключалась к контроллеру довольно длинным кабелем (~8м), здесь была доля риска, однако мои опасения не подтвердились — судя по всему, коэффициент битовых ошибок при передаче очень низок — иначе в отсутствии сигнала некоторые диоды время от времени «моргали» бы вместо того, чтобы быть выключенными. Впрочем, возможно, в других условиях, при наличии электромагнитных помех на частотах, близкой к несущей сигнала управления (ок. 800 кГц и гармоники), результат был бы иным.
Подозреваю, что неплохо бы было защитить выход Arduino ограничительным резистором для предотвращения последствий случайного замыкания информационного входа на плюс питания или от внешних наводок (например, от грозы) на длинный провод. Я этого делать не стал, т.к. мысль пришла позже, а паять внутри киндер-сюрприза было бы очень неудобно.

Монтаж

Монтаж благодаря клейкому основанию ленты также не составил труда:

Для уменьшения просадки по питанию, стыки ленты в поворотах я осуществлял довольно толстым проводом AWG26:

Источник: habr.com

Оцените статью
Добавить комментарий