РадиоКот :: RGB люстра с пультом ДУ от ТВ
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Теги статьи: Добавить тег

RGB люстра с пультом ДУ от ТВ

Автор: Deadhunters
Опубликовано 20.09.2018
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2018!"

Дистанционное управление RGB люстрой.

Где-то, года два назад, родилась у меня идея сделать люстру с дистанционным управлением. Тогда я только начинал разбираться в электронике, и далось мне это нелегко. Сделал корявую плату с релюшкой, которая включала и выключала лампочку (люстры тогда не было), а потом прикрутил туда же транзистор и белый огрызок светодиодной ленты. Вроде получилось, и плата успешно проработала пару месяцев, пока не произошел "БАБАХ" - взорвалась плата от зарядки телефона, которая питала все это дело. После этого была сделана вторая версия платы, которая проработала полгода. На борту уже была пьезо пищалка и пару светодиодов для различной индикации, реле было заменено на симистор в связке с оптосимистором - мой первый опыт применения данных компонентов, кстати. Питалось все это дело от миниатюрного китайского AC/DC 12В 400мА.

И вот этой весной была приобретена люстра, и, естественно, моя плата туда не помещалась. Значит нужна новая плата, а еще ведь и люстра должна получиться самой оригинальной и максимально технологичной. Сказано - сделано! Глядя на люстру, сразу представил, какой она должна стать. Начало бессонным ночам было положено. Сперва необходимо было доработать "механику" - установить RGB светодиодную ленту 5050 в паре с обычной белой 5630, обе ленты  наклеены на верхнюю часть люстры.

Провода проведены через крепежные трубки:

.

Были доработаны плафоны: внутри каждого, на сам патрон, была накленна RGB лента, просверлено отверстие в защитном колпачке, провода выведены наверх и подключены к соответсвующим пинам RGB ленты, а + 12в питания подключен к +12в питания белой ленты. Таким образом, мы используем всего 3 канала ШИМ и можем переключать подсветку между основной RGB лентой и подсветкой плафонов.

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

Теперь необходимо было выбрать источник питания. И тут снова на помощь пришли китайцы - NES 15-12 (12в, 1.3А). БП был установлен в основание люстры, к сожалению, фото не сделал, но поверьте, он туда поместился. Пришлось, правда, удалить одну половину корпуса БП, т.к. он упирался в сам стержень с гайкой, на котором висит люстра, и теперь стержень частично заходит в пространоство БП (все масимально заизолировано). А как же вентиляция, спросите вы? Да, с вентиляцией дела не очень, но пока сбоев в работе не было (работает уже 3 месяца).

После всей проделанной работы люстра была установлена на свое место, а мне оставалось самое сложное: придумать плату, которая поместится в центральную полусферу люстры, да еще и с огромным отверстием в центре, под центральный соединительный шток. Т.к люстра задумывалась максимально оригинальной и навороченной (в меру моей фанатазии конечно), было решено сделать возможным включение и отключение каждой лампочки по отдельности, + 3 канала ШИМ для RGB ленты, 1 канал ШИМ для белой ленты, коммутация +12в, обязательно нужна пищалка и индикация работы. Учитывая опыт с предыдущей платой, каждый раз, если хотелось добавить что-то новое в прошивку, приходилось снимать плату, было решено добавить USB интерфейс, для прошивки со смартфона/планшета.

В итоге получилась такая вот схема:

Не знаю, как так вышло, но забыл подключить RESET Атмеги к DTR CH340 через кондер 0.1мкФ. Обнаружилось это уже после того, как плата была распаяна. Видимо, все-таки нужно более внимательно проверять схемы, нарисованные после полуночи. Думаю, стоит сразу предупредить - схема ИК приемника была впоследствии изменена - был добавлен светодиод для индикации:

Отдельно сделана схема силовой части:

За небольшую "кривость" схем строго не судите. Делал для себя, темной ночью...

 

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

Еще пару бессонных ночей и миру явилась 3D модель будущего творения:

Плату делал обычным ЛУТом, на мой взгляд, получилось хорошо и с первой попытки. После напайки всех компонентов и прошивки бутлоадера через USBasp, я попытался прошить через microUSB, но вот тут и обнаружилась засада с DTR - 0.1 мкФ - RST. Ну чтож, значит будем шить по старинке - снимая плату. Представляю вашему вниманию свое творение:

Фото силовой платы:

Центральная часть люстры состоит из двух полусфер, разделенных между собой металоческой пластиной (на фото выше пластина попала в кадр). Силовую часть было решено засунуть за пластину, а управляющую снизу, чтобы был быстрый доступ. В качестве изолятора между платами и пластиной идеально подошли пластиковые крышки от чипсов "Pringles": 

 

Т.к. я начинающий электронщик, то прошивку освоил писать только в Arduino IDE. Да, возможно, это не профессионально, но для моих задач этого вполне хватает. За основу были взяты наработки с предыдущей платы. Уже в процессе написания были придуманы новые фишки и возможности люстры. На отработку прошивки и устранение "багов" ушло около 2 недель. 

О  прошивке


Для начала нам потребуется выбрать соответствующие кнопки на пульте ДУ и считать коды данных кнопок, в этом нам поможет стандартная библиотека "IRremote.h". Устанавливаем ее в Arduino IDE и загружаем скетч для приема кодов кнопок:

#include "IRremote.h"
IRrecv irrecv(11); // Указываем пин, к которому подключен приемник
decode_results results;

void setup()
{
Serial.begin(9600); // Выставляем скорость COM порта
irrecv.enableIRIn(); // Запускаем прием
}

void loop() {
if (irrecv.decode(&results)) // Если данные пришли
{
Serial.println(results.value, HEX); // Отправляем полученные данные в терминал
irrecv.resume(); // Принимаем следующую команду
}
}

Подключаем ИК приемник (я использовал VS1838) по схеме:

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

Записав все необходимые коды, в начало каждого кода необходимо подставить "0x". Например, код кнопки STOP у меня "E0E0629D", а в саму прошивку пишем "0xE0E0629D". Для управления люстрой у меня используется 26 кнопок, 10 из которых (цифры) используются в качестве ячеек сохранения пользовательского цвета. Чтобы впоследствии сократить размер прошивки приблизительно на 4кб, идем в папку с добавленной библиотекой (у меня это C:UsersUserDocumentsArduinolibrariesIRremote), находим файл IRremote.h, открываем и в самом начале видим протоколы каких производителей поддерживает данная библиотека, у нас пуль ДУ от ТВ Samsung, поэтому проставляем везде 0, оставляем 1 только в строке

#define DECODE_SAMSUNG 1 - теперь библиолека IRremote работает только на прием кодов SAMSUNG:

Когда я только начинал делать первую плату, столкнулся с проблемой - не работает ШИМ выход (функция analogWrite), при использовании библиотеки IRremote. Данная бибилиотека по умолчанию использует TIMER1, а функция analogWrite так же использует TIMER1. Нужно это исправить. Снова идем в папку с библиотекой и находим файл IRremoteInt.h в нем ищем строки:

// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc
#else
#define IR_USE_TIMER1 // tx = pin 9
//#define IR_USE_TIMER2 // tx = pin 3

И меняем их на:

// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc
#else
//#define IR_USE_TIMER1 // tx = pin 9
#define IR_USE_TIMER2 // tx = pin 3

Теперь для распознования ИК сигнала используется TIMER2, и наша функция analogWrite будет работать без проблем.

Осталось только подставить в прошивку свои коды кнопок и можно прошивать. Готовая прошивка занимает 8098 байт. 

Режимы работы

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

Далее мы можем упралять люстрой с пульта ДУ. Подробно каждое действие описано в самом файле прошивки, старался коментировать по максимуму.

Вот полный список всех возможностей:

1) Плавная регулировка яркости белой светодиодной ленты

2) Отдельное включение любой из пяти лампочек

3) Регулировка яркости каждого RGB цвета

4) Плавное мерцание белой ленты (затухание и разгорание) с возможностью настройки длительности периода

5) Режим стробоскоп - белая лента часто вспыхивает, частота вспышек настраивается

6) Самостоятельная плавная смена цвета RGB ленты. Скорость смены цвета так же настраивается. Причем есть 3 режима смены цвета

7) Можно одновременно включить белую ленту сверху на любую яркость и включить любой цвет плафона

8) Имеется 9 ячеек памяти для настройки своего цвета и сохранения в EEPROM

9) Пъезопищалка и индикация работы и приема сигнала с пульта ДУ

10)Красивый старт люстры при включении выключателя (всегда перед уходом из дома просто выключаю выключатель, а то мало ли..)

11) Возможность отключения пъезо с сохранением состояния в EEPROM

12) Ну и наконец, самый главный плюс - не нужно ходить к выключателю, т.к. пульт от телика всегда под рукой. Даже если произойдет самое страшное, и пульт останется на столе, то эмулятор данного пульта есть на смартфоне с ИК портом).

Фото работающей люстры:

Видеодемонстрация работы: 

P.S Это моя сама первая статья на просторах рунета.

 Всем спасибо за внимание! 

Все вопросы в Форум

Либо в личку ВК

Весь проект в Altium Designer

Бибилиотека IRremote.h

 


Файлы:
Схема управляющей платы
Схема силовой платы
Размещение компонентов
Коды кнопок пульта ТВ Samsung
Прошивка


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

39 9 2