Схема управления телевизором через приставку 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 не будет, можно их и не обрезать (моя не «ругалась», но кто знает как поведут себя другие модели).

Схема приставки, позволяющей управлять телевизором через приставку DVB-T2

Рис. 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.


0 704 На микроконтроллерах
дистанционное управление телевизор микроконтроллер avr микроконтроллер arduino

Комментарии (1):

#1 jeka Февраль 19 2022
+1

таймер 155аг3 включающий кнопки телека и уно пойдёт на другой проект.

Оставить комментарий: