Схема управления телевизором через приставку DVB-T2 с помощью ARDUINO UNO
Современные телевизоры имеют цифровые радиоканалы и могут принимать цифровое эфирное телевидение. Но если телевизор старый, к нему нужно приобрести DVB-T2 приставку, которая фактически является выносным цифровым радиоканалом. С приставкой телевизор работает в режиме «А/V», то есть, как монитор.
DVB-T2 приставка является многофункциональным устройством, с собственным пультом дистанционного управления, которым можно переключать программы, регулировать громкость звука, выключать и включать приставку, и многое другое. В результате, от системы управления телевизора требуется только включить его, и переключить в режим «АV». И ради этого приходится держать под рукой еще один пульт.
На страницах радиолюбительских журналов были предложены различные схемы и устройства, позволяющие отказаться от пульта телевизора, и сделать так, чтобы при включении приставки включался и телевизор в режим АV.
Мое устройство отличается тем, что выполнено на основе микроконтроллерной платы ARDUINO UNO, и позволяет управлять телевизором при помощи пульта дистанционного управления DVB-12 приставки.
И так, чтобы включить телевизор и перевести его в режим АЛ/ пульт ДУ телевизора не обязателен. Можно все сделать кнопками, расположенными на его фронтальной панели. В большинстве телевизоров, нужно сначала включить питание телевизора, подав на него ток из электросети.
Затем, нужно вывести телевизор из режима «сна», нажав одну из кнопок перебора программ (Р+ или Р-). После того как телевизор включится, нужно нажать кнопку АЛ/ чтобы перевести его в режим монитора.
То есть, нужно три места, - сетевой выключатель, и управление двумя кнопками. Первое можно организовать довольно просто, - при включении DVB-T2 приставки появляется напряжение +5V на её USB-разъем. Это напряжение можно подать, например, на твердотельное реле, выход которого включить в разрыв провода питания телевизора от сети (механический выключатель телевизора при этом должен быть предварительно включен).
Два других действия с кнопками на передней панели телевизора можно совершить при помощи обычных транзисторных ключей, потому что в большинстве кинескопных телевизоров эти кнопки замыкают контакт на общий минус.
Теперь остается все это реализовать на основе платы ARDUINO UNO. Но сначала нужно найти на пульте DVB-T2 приставки две неиспользуемые или мало используемые кнопки, нажатие на которые при обычном просмотре ТВ-программ ни к чему не приводит У меня была DVB-T2 приставка CADENA CDT-1711SB.
На её пульте ДУ есть две кнопки «Переход» и «Повтор» нажатие на которые при обычном просмотре ТВ-программ вообще ни к чему не приводит. Вот эти две кнопки и было решено использовать в качестве кнопок пробуждения телевизора и вклю-чния его в режим монитора.
Принципиальная схема
А теперь рассмотрим схему устройства. Плата ARDUINO UNO может питаться через встроенный стабилизатор напряжения от источника +7...12V, либо через USB-разъем напряжением 5V, которое на нем имеется.
Здесь выбран второй вариант, потому что питание должно начинаться с включением DVB-T2 приставки, то есть, от её USB-разъема.
Для этого можно использовать стандартный «принтерный» USB-кабель. Для того чтобы DVB-T2 приставку «не вводить в заблуждение» наличием на USB порту некого «странного» устройства, рекомендую немного разделать кабель USB и перерезать в нем провода белого и зеленого цвета.
Впрочем, если приставка «ругаться» на ARDUINO UNO не будет, можно их и не обрезать (моя не «ругалась», но кто знает как поведут себя другие модели).
Рис. 1. Схема приставки, позволяющей управлять телевизором через приставку DVB-T2.
Для управления питанием телевизора используется твердотельное реле U1 типа S202S02. Светодиод этой оптопары подключается к цепи питания +5V на плате ARDUINO UNO через токоограничительный резистор R1.
Как только включают DVB-T2 приставку напряжение питания через USB поступает и на плату ARDUINO UNO, а с неё на эту оптопару, выход которой включен в разрыв сетевого провода питания телевизора. Если механический выключатель телевизора был предварительно включен, то в этот момент телевизор включается, но переходит в режим «сон».
Чтобы его вывести из этого состояния нужно нажать одну из кнопок перебора программ на передней панели телевизора. Здесь этим занимается транзистор VT2. При подаче логической единицы с порта D4 платы ARDUINO UNO он открывается, и его коллектор дублирует нажатие кнопки Р+.
Включением режима АЛ/ телевизора здесь занимается транзистор VT1. При подаче логической единицы с порта D5 платы ARDUINO UNO он открывается, и его коллектор дублирует нажатие кнопки АN. И телевизор включается в режим монитора.
Для приема сигналов пульта используется фотоприемник F1 типа TSOP4838, но можно применить и любой другой аналогичный.
В общем, по схеме все ясно, - код от фотоприемника поступает на порт D2, работающий на прием. Затем микроконтроллер декодирует код, и соответственно программе, управляет транзисторами VT1 и VT2. Коллекторы которых нужно при помощи монтажных проводов подключить к кнопкам Р+ и А/V, расположенным на передней панели телевизора.
Программа для МК
Программа для ARDUINO UNO приводится в таблице 1.
Данная программа требует загрузки библиотеки IRremote.h которая нужна для распознавания команд пульта ДУ. Эта библиотека есть в стандартном наборе.
Таблица 1.
/*
CADENA CDT-1711SB
*/
#include
IRrecv irrecv(2); // фотоприемник на порту D2
decode_results results;
void setup() {
pinMode(4, OUTPUT); // задание порта D4 как выходного
pinMode(5, OUTPUT); // задание порта D5 как выходного
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
switch( results.value ) {
case 0xFD708F:
digitalWrite(4, HIGH); // кнопка Переход
delay(1000); // время удержания 1 сек
digitalWrite(4, LOW);
break;
case 0xFD48B7:
digitalWrite( 5, HIGH); // кнопка Повтор
delay(1000); // время удержания 1 сек
digitalWrite( 5, LOW); break;
}
irrecv.resume();
}
}
программного обеспечения для ARDUINO, у меня версия Arduino 1.6.11.
Далее идет назначение портов. В строке:
IRrecv irrecv(2);
входным назначен порт D2. На него подается сигнал с выхода интегрального фотоприемника. А в строках:
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
выходными назначены порты D4, D5. Но, порты можно выбрать и другие, - как вам захочется, соответственно, к ним подключив базы транзисторов VT1 и VT2.
В программе после «case 0х» записаны коды команд, которые формируется при нажатии соответствующей кнопки. Как уже сказано выше, используются кнопки «Переход» и «Повтор» пульта дистанционного управления DVB-T2 приставки CADENA CDT-1711SB. Этим кнопкам соответствуют коды FD708F и FD48B7, соответственно, и далее прописано, что должно происходить с выходами после поступления соответствующего кода.
Вот, при нажатии кнопки «Переход», на порту D4 платы ARDUINO UNO появляется логическая единица, которая держится в течение одной секунды, и потом логический уровень на этом порту опять становится нулевым.
Это отображено в строках:
case 0xFD708F:
digitalHrite(4, HIGH);
delay(1000);
digitalWrite(4, LOW);
Время 1 секунда, в течение которого действует на порту логическая единица задано строкой:
delay(1000);
Его легко изменить, написав другое число вместо «1000». Например, если нужно чтобы было две секунды, пишем: delay(2000);
Совершенно аналогично все происходит и со второй кнопкой - «Повтор», что отображено в строках: case 0xFD48B7:
digitalHrite( 5, HIGH);
delay(1000);
digitalWrite( 5, LOW);
Теперь по поводу того, что делать, если ваша DVB-T2 приставка не CADENA CDT-1711 SB, а какая-нибудь другая. На самом деле, все то же самое. Только будут другие коды кнопок пульта.
Нужно сначала выбрать на пульте кнопки, которые либо не используются данной приставкой, либо несут какие-то вспомогательные мало значительные функции, например, при их нажатии временно появляется какое-то информационное сообщение, например, о частоте принимаемого сигнала и т.д.
Таблица 2.
/*
определение кодов команд пульта V
#include
IRrecv irrecv(2); // фотоприемник на порту D2
decode_results results;
void setup () {
Serial.begin(9600); // задание скорости порта COM
irrecv.enableIRIn(); // запуск приема команды
}
void loop () {
if (irrecv.decode(Sresults)) {
Serial.println(results.value, HEX); // вывод данных в COM
irrecv.resume(); // прием следующей команды
}
}
После того как эти кнопки будут выбраны, нужно будет определить ихкоды. Для этого нужно сначала загрузить в ARDUINO UNO программу из таблицы 2.
После загрузки данной программы в микроконтроллер платы ARDUINO UNO, нужно открыть монитор COM-порта, для этого в окне программы Arduino 1.6.11 выбираем «Инструменты» и из выпадающего меню «Монитор порта».
После того как откроется окошко Монитора порта, берем пульт ДУ и нажимаем интересные нам кнопки. В окне Монитора порта будет отображаться код, соответствующий каждой кнопке.
Следует заметить, что может быть такое, что при нажатии кнопки приходит две команды, -сначала код команды, а затем код FFFFFFF Так вот, первое это код команды, который нужно занести в программу в таблице 1 после «case 0х», а вторая строка или строки букв «F» это просто указатель на то, как долго кнопка удержана нажатой. Для нашего случая важен только код самой команды
Каравкин В. РК-02-2020.
Комментарии (1):
таймер 155аг3 включающий кнопки телека и уно пойдёт на другой проект.