Как подключить arduino к телевизору

Для приема цифрового ТВ на аналоговый телевизор к нему нужно приобрести DVB-T2 приставку. С приставкой телевизор работает в режиме монитора. DVB-T2 приставка работает с собственным пультом дистанционного управления, которым можно переключать программы, регулировать громкость звука, включать и выключать приставку.

В результате получается что от системы управления телевизора требуется только включить его, и переключить в режим «АV».

В Л.1 приводится описание блока на основе ARDUINO UNO, который подключается к кнопкам выбора программ (+Р) и монитора (АV) телевизора, а так же, по питанию от сети. И этот блок управляет телевизором при помощи свободных кнопок пульта приставки.

Идея хорошая, но мне не понравилось два момента.

Первое, это то что для включения телевизора используется USB-порт приставки. У меня к нему подключен внешний жесткий диск, и порт и так нагружен.

Второе, это то, что нужно чтобы на пульте приставки было две лишние кнопки На пульте моей приставки таковых не оказалось, — все кнопки задействованы.

Как подключить Arduino к телевизору? | Arduino TVout library

Поэтому было решено сделать блок, который вообще никак не подключается к DVB-T2 приставке, и работает только от одной кнопки её пульта. — кнопки «On/Off».

Принципиальная схема

Идея такова, — нажимаем кнопку «Оп/Off» на пульте приставки. Сигнал пульта принимает приставка и включается.

Кроме того, этот же сигнал пульта принимает блок на ARDUINO UNO и сначала при помощи электромагнитного реле подключает телевизор к электросети (механический выключатель телевизора должен быть предварительно включен).

Затем, через 5 секунд открывается ключ, который подключен параллельно кнопке «+Р» (перебор программ) телевизора. Это включает телевизор в рабочий режим.

Далее, спустя паузу в 2 секунды, другой ключ «нажимает» кнопку «АV» телевизора. и переключает его в режим монитора. Если выключаем приставку, то еще раз нажимаем кнопку «Оп/Off» на пульте приставки.

Сигнал пульта принимает приставка и выключается. Кроме того, этот же сигнал пульта принимает блок на ARDUINO UNO и при помощи электромагнитного реле отключает телевизор от электросети.

Схема блока управления телевизором для работы с DVB-T2, построена на ARDUINO UNO

Рис. 1. Схема блока управления телевизором для работы с DVB-T2, построена на ARDUINO UNO.

Один недостаток только в том, что для блока управления нужен отдельный источник питания напряжением 12V. С учетом того что используется готовый блок ARDUINO UNO, схема получается довольно простая.

Для управления питанием телевизора служит электромагнитное реле К1. Оно включается когда на порту D4 платы ARDUINO UNO появляется логическая единица. Транзистор VT2 служит для включения телевизора из ждущего режима, в котором он оказывается сразу после подачи питания.

Сток транзистора подключен к кнопке перебора программ (+Р) на передней панели телевизора. Транзистор VTЗ служит для включения режима монитора, его сток подключен к кнопке АV телевизора.

#ArduBlock 2.0 — Подключаем телевизор к плате Arduino по AV!

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

Для приема сигналов пульта используется фотоприемник F1 типа TSOP4838, но можно применить и любой другой аналогичный.

Программа для МК

Программа для ARDUINO UNO приводится в таблице 1.

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

Исходный код для программы блока управления телевизором с DVB-T2 на ARDUINO UNO

Рис. 2. Исходный код для программы блока управления телевизором с DVB-T2 на ARDUINO UNO.

Данная программа требует загрузки библиотеки IRremote.h которая нужна для распознавания команд пульта ДУ. Эта библиотека есть в стандартном наборе программного обеспечения для ARDUINO.

Еще по теме:  Buds pro подключить к телевизору

Далее идет назначение портов. В строке:

IRrecv irrecv (2);

входным назначен порт D2. На него подается сигнал с выхода интегрального фотоприемника. А в строках:

выходными назначены порты D4, D5 и D6.

В программе после «case Ох» записан код команды, формируемый при нажатии кнопки «Оп/Off» пульта. После приема этой команды запускается подпрограмма, которая сначала определяет состояние порта D4. Нужно было как-то сделать чтобы при одном нажатии кнопки на D4 появлялась единица, а при другом — ноль.

В данном случае, может быть применено и нестандартное решение, но оно работает. Используется аналоговый порт АО, на который поступает напряжение с порта D4. Аналоговый порт измеряет напряжение на порту D4.

Если это напряжение больше 0,7 от напряжения логической единицы, то в порт D4 записывает ноль. Если же это напряжение меньше 0,7 от напряжения логической единицы, то в порт D4 записывает единицу. Для этого используется компараторная функция «IF».

Принятие решения какой уровень записывать в порт D4 происходит в этих строках:

if (val > 700) digitalWrite( 4, LOW);

После того как в порт D4 записан нужный логический уровень (ноль или единица), далее идет поочередная запись единицы в порты D5 и D6. с паузами между ними в 2 секунды и длительностью по 1 секунде:

digitalWrite( 5, HIGH);

digitalWrite( 5, LOW);

digitalWrite( 6, HIGH);

digitalWrite( 6, LOW);

Таким образом, если телевизор был выключен, то после нажатия кнопки «Оп/Off» пульта телевизор включается, переходит в активный режим, и переходит в режим монитора.

Если же телевизор был включен, то после нажатия кнопки «Оп/Off» пульта телевизор выключается, а потом происходит бессмысленное «нажатие» кнопок «+Р» и «АV» у уже выключенного телевизора, что никакого влияния на него не оказывает.

Еще один важный момент. Продается очень много DVB-T2 приставок самых разных производителей. И их пульты тоже разные.

Поэтому, чтобы данный блок работал с пультом именно от вашей DVB-12 приставки, нужно в программу после «case 0х» записать код команды, формируемый именно этим конкретным пультом при нажатии кнопки «On/Off».

Здесь этот код: 20FF50AF. У другой приставки код может быть совсем другой. Чтобы узнать этот код нужно сначала загрузить в ARDUINO UNO программу из таблицы 2.

Определение кода команд пульта ДУ

Рис. 3. Определение кода команд пульта ДУ.

После загрузки этой программы в микроконтроллер платы ARDUINO UNO, нужно открыть монитор COM-порта, для этого в окне программы Arduino 1.6.11 выбираем «Инструменты» и из выпадающего меню «Монитор порта».

После того как откроется окошко Монитора порта, берем пульт ДУ и нажимаем его кнопку «Оп/Off» В окне Монитора порта будет отображаться код этой кнопки.

Следует заметить, что может быть такое, что при нажатии кнопки приходит две команды, — сначала код команды, а затем код FFFFFFF Так вот, первая строка. — это код команды, который нужно занести в программу в таблице 1 после «case 0х», а вторая строка и последующие строки букв «F» это просто указатель на то, как долго кнопка удержана нажатой.

Детали

Электромагнитное реле типа GH-1A-12L или любое другое с обмоткой на 12V и контактами, достаточно мощными для подключения телевизора к электросети.

Транзисторы 2N7000 можно заменить на КП501, КП505. Фотоприемник TSOP4838 можно заменить любым аналогичным. Для питания блока нужен отдельный источник питания с выходным напряжением 12V.

Общий минус низковольтных цепей схемы телевизора должен быть соединен с общим минусом этого блока Но сам блок питания должен быть самостоятельным, вырабатывающим 12V даже тогда, когда телевизор отключен от электросети.

Еще по теме:  Что означает sat на телевизоре

Совсем не обязательно использовать этот блок управления именно с DVB-T2 приставкой. Эта переделка касается только старого аналогового телевизора, это к нему подключен этот блок управления.

А команду кнопки пульта «On/Off» можно прописать в программу от пульта любой бытовой техники, например, спутникового приемника, DVD-плеера, или смарт-ТV-приставки.

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

Лыжин Р. РК-08-2020.

Литература: 1. Каравкин В. «Приставка DVB-T2 управляет телевизором при помощи ARDUINO UNO». РК-02-2020.

Источник: radiostorage.net

Arduino.ru

Кто нибудь пробовал подключать Leonardo к тв через «тюльпан»?

Скачанные с оффициального сайта библиотеки с Leonardo не работают!

Помогите разобраться с подключением.

  • Войдите на сайт для отправки комментариев

Втр, 09/04/2013 — 20:35

Так либа не работает или подключили не так? 🙂 Тут были? http://code.google.com/p/arduino-tvout/

Всё просто вроде.

  • Войдите на сайт для отправки комментариев

Втр, 09/04/2013 — 20:42

Подключить действительно просто.

Проблема в другом. ПО Ардуино 1.0.4 библиотека TVout_R5.91.

При выборе платы Леонардо даже примеры из библиотеки не компилируются.

При выборе платы uno компиляция проходит без проблем

  • Войдите на сайт для отправки комментариев

Втр, 09/04/2013 — 21:16

файл hardware_setup.h в папке библиотеки TVOut

  • Войдите на сайт для отправки комментариев

Втр, 09/04/2013 — 21:48

В файл hardware_setup.h в папке библиотеки TVOut добавлял код в разных вариациях.

#ifndef HARDWARE_SETUP_H
#define HARDWARE_SETUP_H

// device specific settings.
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__)
#define _VID_PORT PORTB
#define _VID_DDR DDRB
#define _VID_PIN 6
#define _SYNC_PORT PORTB
#define _SYNC_DDR DDRB
#define _SYNC_PIN 5
#define _ANDI_HWS «andi r16,0xBFn»
#define _BLD_HWS «bld r16,6nt»

#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)
#define _VID_PORT PORTD
#define _VID_DDR DDRD
#define _VID_PIN 4
#define _SYNC_PORT PORTD
#define _SYNC_DDR DDRD
#define _SYNC_PIN 5
#define _ANDI_HWS «andi r16,0xDFn»
#define _BLD_HWS «bld r16,4nt»

#elif defined(__AVR_ATmega32U4__)
//video
#define PORT_VID PORTE
#define DDR_VID DDRE
#define VID_PIN 6
//sync
#define PORT_SYNC PORTB
#define DDR_SYNC DDRB
#define SYNC_PIN 5
//sound
#define PORT_SND PORTB
#define DDR_SND DDRB
#define SND_PIN 7

#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega88__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__)
#define _VID_PORT PORTB
#define _VID_DDR DDRB
#define _VID_PIN 0
#define _SYNC_PORT PORTB
#define _SYNC_DDR DDRB
#define _SYNC_PIN 1
#define _ANDI_HWS «andi r16,0xFDn»
#define _BLD_HWS «bld r16,0nt»

и все равно проблема с компиляцией не исчезла:

C:Documents and Settings1Рабочий столarduino-1.0.4-windowsarduino-1.0.4librariesTVoutTVout.cpp: In member function ‘void TVout::render_setup(uint8_t)’:
C:Documents and Settings1Рабочий столarduino-1.0.4-windowsarduino-1.0.4librariesTVoutTVout.cpp:730: error: ‘_VID_DDR’ was not declared in this scope
C:Documents and Settings1Рабочий столarduino-1.0.4-windowsarduino-1.0.4librariesTVoutTVout.cpp:730: error: ‘_VID_PIN’ was not declared in this scope
C:Documents and Settings1Рабочий столarduino-1.0.4-windowsarduino-1.0.4librariesTVoutTVout.cpp:731: error: ‘_SYNC_DDR’ was not declared in this scope
C:Documents and Settings1Рабочий столarduino-1.0.4-windowsarduino-1.0.4librariesTVoutTVout.cpp:731: error: ‘_SYNC_PIN’ was not declared in this scope
C:Documents and Settings1Рабочий столarduino-1.0.4-windowsarduino-1.0.4librariesTVoutTVout.cpp:732: error: ‘_VID_PORT’ was not declared in this scope
C:Documents and Settings1Рабочий столarduino-1.0.4-windowsarduino-1.0.4librariesTVoutTVout.cpp:733: error: ‘_SYNC_PORT’ was not declared in this scope

  • Войдите на сайт для отправки комментариев

Источник: arduino.ru

Arduino, MK-90 и другие

Программирование Arduino, оживление микроэвм Электроника МК-90, аппаратный хакинг.

Страницы

07.06.2013

TV-out для Arduino

Если вы когда-нибудь почувствуете, что вашему Arduino-проекту стало тесно на алфавитно-цифровом дисплее 1602, обязательно обратите внимание на проект TellyMate Shield. Он позволяет выводить ту же алфавитно-цифровую информацию на обычный телевизор, через видео-вход.

При определенном везении можно заполучить весьма внушительных размеров дисплей (если телевизор имеет прилично дюймов в диагонали), работающий в режиме телетайпа 38 x 25 знакомест. Впрочем, бросив первый взгляд на схему, ловишь себя на мысли о розыгрыше. В самом деле:

Обычный ATmega8 на тактовой частоте 16 МГц формирует два компонента видеосигнала, которые смешиваются нехитрой схемой из двух резисторов и двух диодов. Группой переключателей S1 устанавливаются режимы работы; согласующий резистор 75 Ом подключается через перемычку и добавлен, скорее, для универсальности (думаю, в большинстве случаев не понадобится).

Еще по теме:  Как узнать mac телевизора Samsung

Arduino выводит информацию для отображения через последовательный порт — пины RX/TX. Если вас смущает, что по ним же происходит загузка скетча и во время этого процесса на экране появляется некая «ерунда», можно уйти на любой пин с помощью библиотеки SoftwareSerial. Поддерживаются разные скорости, а также есть возможность автоопределения. Простейший скетч выглядит так:

Serial.begin(57600); //57k6 baud Serial.println(«Hello, world!»);

К сожалению, изображение формируется исключительно черно-белое. Зато внутри имеем полноценный знакогенератор кодовой страницы 437, в котором есть псевдографика:

Вы, наверное, заметили, что для вывода видео использован аудио-разъем 3,5мм. На самом деле, это не казус, а вполне осознанный выбор, ограничивающий высоту элементов и делающий возможным стекирование шилдов:

Кроме вывода обычных символов, поддерживаются так называемые ESCAPE-последовательности, которые управляют курсором, удваивавают высоту и/или ширину символов и даже переключают банки шрифтов и переопределяют символы (что, впрочем, возможно только на ATmega328P, где памяти гораздо больше, чем у ATmega8). Таким же образом можно получить версию прошивки и прочую диагностическую информацию.

Чем-то все это напоминает LoL-Shield, особенно приложениями — взгляните на список доступных .ino. Здесь найдется не только классика Life и Snake, но и более изощренные — Maze и даже простейший «графический редактор»!

Поскольку все материалы доступны и открыты для доработки, мы решили немного поэкспериментировать и создать на базе этого шилда русифицированный вариант. Имя «TellyMate», подобно Arduino, является торговой маркой — поэтому пришлось назвать наш вариант Freeduino Teleсhat:

Все детали — PTH, поскольку шилд задумывался изначально в формате кита для самостоятельной сборки — и что может быть лучше, чем собрать всё самостоятельно? 😉 Пины RX/TX имеют перемычки под пайку с обратной стороны платы, так что при желании их можно перерезать и подпаять к любым другим пинам. Аналогичным способом отключается и кнопка сброса — если не хотите, чтобы МК шилда сбрасывался синхронно со скетчем Arduino.

Краткое руководство по сборке шилда:

Шутка, конечно 😉 просто там действительно все элементарно. На howtomakekit.blogspot.ru, как всегда, выложена подробная пошаговая инструкция.

Русифицированный шрифт мы разместили точно таким же способом, что и автор — в виде ссылки на документ в GDocs, копию которого при необходимости можно сохранить у себя. В открытом документе надо зайти на последнюю закладку, генерирующую hex, и скопировать ее содержимое в файл fontbank0.c , подменив его в исходниках (можно скачать со страницы проекта). После компиляции получите прошивку c поддержкой кодовой страницы 866. Именно она и зашивается в ATmega8, входящие в комплект наборов Freeduino TeleChat.

Для вывода русского текста потребуется еще кое-что сделать. Как известно, ArduinoIDE хранит все символы в кодировке UTF-8, и для нормальной работы потребуется их транслировать в кодировку 866. Делать это в оригинальной прошивке нам показалось святотатством — авторы очень скрупулезно рассчитали все задержки в коде. Предлагаем самый простой вариант перекодирующей функции:

byte c1 = 0; void tele_print_char(char cd) < byte c = cd; if ( c >= 0x80) < // UTF-8 handling if (!c1) < c1 = c; >else < if (c1 == 0xd0) < if (c == 0x81) Serial.print(char(0xf0)); // Ё else Serial.

Купить шилд в собранном виде или в виде комплекта деталей можно здесь.

Для тех, кто любит почитать оффлайн — про TellyMate упоминается в книге У. Соммера «Программирование микроконтроллерных плат Arduino/Freeduino».

Источник: mk90.blogspot.com

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