Аппаратная часть
Для реализации понадобится четыре основных компонента:
1. Управляемая светодиодная RGB лента,
2. Блок питания,
3. Микрокомпьютер Arduino,
4. Программа Ambient light Application for Android.
Сначала небольшое количество объяснений.
WS2811 — это трёхканальный канальный контроллер/драйвер (микросхема) для RGB светодиодов с управлением по одному проводу (адресация к произвольному светодиоду). WS2812B — это RGB светодиод в корпусе SMD 5050, в который уже встроен контроллер WS2811.
Подходящие для проекта светодиодные ленты для простоты так и называют — WS2811 или WS2812B.
WS2812B лента — это лента, на которой последовательно размещены светодиоды WS2812B. Лента работает с напряжением 5 В. Существуют ленты с разной плотностью светодиодов. Обычно это: 144, 90, 74, 60, 30 на один метр. Бывают разные степени защиты. Чаще всего это: IP20-30 (защита от попадания твёрдых частиц), IP65 (защиты от пыли и водяных струй), IP67 (защита от пыли и защита при частичном или кратковременном погружении в воду на глубину до 1 м). Подложка чёрного и белого цвета.
Вот пример такой ленты:
WS2811 лента — это лента, на которой последовательно размещены WS2811 контроллер и какой-то RGB светодиод. Есть варианты, рассчитанные на напряжением 5 В и 12 В. Плотность и защита аналогичны предыдущему варианту.
Вот пример такой ленты:
Какую ленту выбрать, WS2812B или WS2811?
Важный фактор — питание ленты, о чём я расскажу чуть позже.
Если у вас дома окажется подходящий по мощности блок питания (часто дома от старой или испорченной техники остаются блоки питания), то выбирайте ленту, исходя из напряжения блока питания, т.е. 5 В — WS2812B, 12 В — WS2811. В этом случае вы просто сэкономите деньги.
От себя могу дать рекомендацию. Если общее количество светодиодов в системе будет не более 120, то WS2812B. Если более 120, то WS2811 с рабочим напряжением 12 В. Почему именно так, вы поймёте, когда речь зайдёт о подключении ленты к блоку питания.
Какой уровень защиты ленты выбрать?
Для большинства подойдёт IP65, т.к. с одной стороны она покрыта «силиконом» (эпоксидной смолой), а с другой есть самоклеющаяся поверхность 3M. Эту ленту удобно монтировать на ТВ или монитор и удобно протирать от пыли.
Какую плотность светодиодов выбрать?
Для проекта подойдут ленты с плотностью от 30 до 60 светодиодов на метр (конечно, можно и 144, никто не запрещает). Чем выше плотность, тем больше будет разрешение Ambient light (количество зон) и больше максимальная общая яркость. Но стоит учитывать, что чем больше светодиодов в проекте, тем сложнее будет устроена схема питания, и понадобится более мощный блок питания. Максимальное количество светодиодов в проекте — 300.
Какой блок питания выбрать для ленты?
Блок питания подбирается по мощности и напряжению. Для WS2812B — напряжение 5 В. Для WS2811 — 5 или 12 В. Максимальная потребляемая мощность одного WS2812B светодиода 0,3 Вт. Для WS2811 в большинстве случаев аналогично. Т.е. мощность блока питания должна быть не ниже N * 0,3 Вт, где N — количество светодиодов в проекте.
Например, у вас ТВ 42″, и вы остановились на ленте WS2812B с 30 светодиодами на метр, вам нужно 3 метра ленты(все 4 стороны экрана). Вам понадобится блок питания с напряжением 5 В и максимальной мощностью от 5 В / 6 А. В случае если на нижней горизонтали экрана меньше диодов, чем на верхней, это всего порядка 60 светодиодов — мощность от 5 В / 4 А.
Пример блока питания для ленты:
Какой микроконтроллер выбрать?
Управлять Ambient light будет микрокомпьютер Arduino. Arduino Nano на Алиэкспресс стоит около 2,5$ за штуку.
Пример микроконтроллера:
Затраты на проект для обычного телевизора 42″:
12$ — 3 метра WS2812B (30 светодиодов на метр)
4$ — блок питания 5 В / 4 А
2,5$ — Arduino Nano
3$ — программа Ambient light Application for Android
Итого: 21,5$ или ~1400 рублей
Микроконтроллер Arduino Nano:
AliExpress
Banggood
Amazon US
Amazon UK
Amazon DE
Светодиодная лента WS2812B:
AliExpress
Banggood
Amazon US
Amazon UK
Amazon DE
Реализация аппаратной части
Самое главное — это правильно организовать питание ленты. Лента длинная, напряжение падает при большом токе потребления, особенно при использовании 5 В ленты. Большинство проблем, которые возникают у тех, кто делает себе Ambient light, связаны именно с питанием. Я пользуюсь правилом — нужно делать отдельную подводку питания на каждые 10 Вт потребляемой максимальной мощности при 5 В и 25 Вт потребляемой мощности при 12 В. Длина подводки питания (от блока питания до самой ленты) должна быть минимальной (без запаса), особенно при 5 В.
Общая схема подключения выглядит следующим образом (Arduino запитана от USB, а лента от БП):
К ленте с обоих концов подведено питание — два параллельных подключения. Для примера, если бы мы делали подсветку на все 4 стороны, а лента была бы по 60 светодиодов на метр (т.е. максимальная мощность 54 Вт), то мы бы сделали такой подвод питания:
К Arduino от ленты идут два контакта. 1 – GND, который нужно подключить к соответствующему контакту на Arduino. И 2 – DATA, который нужно подключить к шестому цифровому контакту на Arduino через резистор 470 Ом. Если резистора у вас нет, то в большинстве случаев всё будет прекрасно работать и без него, но лучше, чтобы он был. Резистор можно купить за пару копеек в любом радиомагазине. Сам микрокомпьютер Arduino можете разместить в любом удобном корпусе, многие используют для этого контейнер от “Kinder Surprise”. Arduino нужно размещать как можно ближе к ленте, чтобы подводка контакта от DATA на Arduino имела минимальную длину.
Припаивать провода к ленте просто. Главное правило — время контакта с паяльником должно быть минимальным!
Как изгибать ленту под прямым углом?
Есть два варианта. 1 – ленту нужно разрезать и соединять короткими проводами (разместив всё это в термоусадочной трубке). 2 – Можете купить специальные угловые коннекторы на три контакта для светодиодных лент:
Программная часть
Это самое простое.
Загружаем и устанавливаем Arduino IDE. Загружаем последнюю доступную версию библиотеки FastLED, распаковываем и кладём папку FastLED из архива, в папку с библиотеками Arduino IDE(C:Program Files (x86)Arduinolibraries). Запускаем Arduino IDE и закрываем её. В папке Документы будет создана папка Arduino. В ней создаём папку AAA и копируем туда скетч – AAA.ino.
Подключаем микрокомпьютер Arduino по USB. Драйвер (последовательного интерфейса CH340) установится автоматически. Если этого не произошло, то в папке Arduino IDE есть папка Drivers со всем необходимым.
Запускаем Arduino IDE и открываем файл AAA.ino.
Изменяем(если нужно) скорость передачи данных:
Изменяем количество светодиодов. Количество должно быть равным количеству светодиодов в вашей светодиодной ленте:
Инструменты > Плата > Arduino nano
Инструменты > Порт > Выбираете COM-порт (там будет нужный вариант)
Нажимаем кнопку «Загрузить»:
Программа проинформирует, когда загрузка будет завершена (это буквально пара секунд).
Готово. Нужно отключить Arduino от USB и подключить заново. Лента загорится последовательно красным, зелёным и синим цветом — Arduino активировался и готов к работе.
Теперь можно подключить Arduino к TV приставке и приступить к настройке программы.
Программная часть для контроллеров ESP8266 WeMos D1R2 или NodeMCU V1.0. Подключение по WiFi.
WeMos D1R2
WeMos D1R2 (ESP-8266) – Бинарная прошивка для лент типа WS2812/WS2813/WS2815:
LEDStripWiFi_AAA.ino.d1_mini_WS2812.bin
Ленты типа NeoPixels (APA106, WS2811, WS2812, WS2813, WS2815 & SK6812, SK6813, SK6815)
Подключение:
WeMos D1R2 (ESP-8266) – Бинарная прошивка для лент типа APA102 (DotStar):
LEDStripWiFi_AAA.ino.d1_mini_APA102.bin
Ленты типа DotStars (APA102, LPD8806, SK9822, WS2801, P9813)
Подключение:
NodeMCU V1.0
NodeMCU V1.0 (ESP-12E) – Бинарная прошивка для лент типа WS2812/WS2813/WS2815:
LEDStripWiFi_AAA.ino.nodemcu_WS2812.bin
Ленты типа NeoPixels (APA106, WS2811, WS2812, WS2813, WS2815 & SK6812, SK6813, SK6815)
Подключение:
NodeMCU V1.0 (ESP-12E) – Бинарная прошивка для лент типа APA102 (DotStar):
LEDStripWiFi_AAA.ino.nodemcu_APA102.bin
Ленты типа DotStars (APA102, LPD8806, SK9822, WS2801, P9813)
Подключение:
Для загрузки прошивок в контроллер можно использовать утилиту например:
Flash Download Tool
Как работает прошивка
Количество светодиодов в прошивке указывать не нужно, определяется автоматически.
Максимально возможное количество светодиодов в прошивке – 1500.
В прошивке есть 3 основных цвета индикации
1 – Синий, 2 – Красный, 3 – Зеленый.
Определение состояния прошивки согласно цвету индикации:
Синий – Начало работы (инициализация), в этот момент нажатие кнопки сброса приведет к сбросу сохраненных параметров подключения WiFi, о чем прошивка сообщит тройным миганием синего цвета.
Красный – Начало процесса инициализации WiFi и подключение к WiFi сети. Если параметры подключения WiFi были сохранены ранее и подключение удалось – мы увидим индикацию зеленого цвета. Если параметры подключения WiFi ранее не были сохранены – индикация останется красной.
Зеленый – Подключение к WiFi выполнено успешно, система находится в ожидании подключения к программе Ambient light Application for Android
Хочу обратить внимание на то, что для передачи данных от программы на контроллер используется протокол UDP, который позволяет нам обеспечить скорость передачи потоковых данных, но не предоставляет никаких гарантий доставки сообщения, следует внимательно отнестись к качеству покрытия WiFi сигнала, чем хуже будет связь контроллера с WiFi, тем больше будет потерь данных.
Подключение контроллера к WiFi
Что бы подключить контроллер к сети WiFi необходимо:
1. Подключить LED ленту к контроллеру
2. Подключить питание к контроллеру
3. Дождаться когда LED лента загорится красным цветом
4. На любом устройстве с WiFi (телефон/планшет/ПК) выполнить поиск доступных WiFi сетей
5. Выполнить подключение к сети с именем типа – AAA_b3da7c (пароль – password), где b3da7c это последние 3 сегмента MAC адреса вашего контроллера.
6. Если подключение удалось, должен открыться браузер со страницей настройки WiFi контроллера, если браузер не открылся перейдите по ссылке http://192.168.4.1 вручную:
7. Выбрать желаемый тип подключения (Static IP/ DHCP), при подключении с DHCP IP адрес будет назначен автоматически и узнать какой адрес назначен можно будет только на роутере. Рассмотрим вариант с назначением статического адреса:
8. В списке сетей выберем нашу домашнюю сеть и введем пароль для подключения к ней, так же введем IP адрес, Шлюз и Маску сети:
9. На этом настройка подключения к WiFi завершена, светодиодная лента должна загореться зеленым и погаснуть:
10. Ваше устройство (телефон/планшет/ПК) должно снова подключиться к вашей домашней сети, а контроллер перейдет в режим ожидания подключения к программе.
Сброс настроек
Одинарное нажатие на кнопку сброса контроллера приведет его перезагрузке, настройки подключения к сети WiFi при этом сохранятся.
Повторное нажатие на сброс, пока лента горит синим цветом, приведет к сбросу настроек подключения к сети WiFi и перезагрузке контроллера.