Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Веселая аркада с Печенькой для новогоднего настроения. Объезжайте препятствия, а подарки, варежки, конфеты и прочие приятности не объезжайте: они помогут набрать очки и установить новый рекорд.

Сноуборд

Спорт, Аркады, На ловкость

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Arduino + Телевидение

С этим тегом используют

Электроника Ardublock Самоделки YouTube Своими руками Вертикальное видео Видео ВК Юмор Политика Новости Реклама Телевизор Россия Все
2 поста сначала свежее
3
Anonimov
Anonimov
9 лет назад

TV-выход для Ардуино⁠⁠

Данная статья поможет вывести информацию с Ардуино на ТВ по НЧ-кабелю (в простонародии - тюльпаны). Правда изображение будет черно-белым, однако и это уже круто и будет полезно в будущих самоделках.

TV-выход для Ардуино Arduino, Телевидение, Самоделки, Juggalomemnoch

Итак, что необходимо:

- телевизор или монитор с соответствующим входом

- плата Arduino

- резистор 470 Ом

- резистор 1 кОм

- кабель, тюльпаны

Также, понадобится библиотека TVout для Arduino и клонов


Схема переходника

TV-выход для Ардуино Arduino, Телевидение, Самоделки, Juggalomemnoch

Работать с библиотекой просто:

#include

TVout TV;

unsigned char x, y;

void setup ( )

{

TV.start_render( _NTSC );

}

void loop ( )

{

TV.clear_screen ( );

TV.print_str ( 10, 10, "TVout FTW!!!" );

TV.delay ( 60 );

}

Оригинал статьи на английском языке

Показать полностью 2
Arduino Телевидение Самоделки Juggalomemnoch
10
13
Dionisnation
Dionisnation
9 лет назад

Терминал для Arduino⁠⁠

Микроконтроллерные модули семейства Arduino оснащены последовательным интерфейсом и могут через него в текстовом виде выдавать информацию о своей работе и получать команды. Но для отображения этой информации на экране и ввода команд необходимо подключить к последовательному порту модуля устройство, называемое терминалом. Как правило, им служит компьютер с запущенной на нём терминальной программой. Но это не всегда удобно, поскольку для компьютера может найтись много других дел. В статье описано несложное терминальное устройство, которое может получать и отображать поступающую по последовательному порту текстовую информацию на экране обычного телевизора и передавать обратно сообщения, вводи­мые с обычной компьютерной клавиатуры. Его можно использо­вать для отладки и контроля работы не только устройств на Arduino, но и самого разнообразного оборудования, имеющего последовательный интерфейс RS-232. Терминал собран на мик­роконтроллере ATmega88PA-AU.


При разработке микроконтроллер­ах устройств очень часто приме­няют в качестве отладочного средства вывод контрольных текстовых сообще­ний через последовательный порт. На­пример, в различных проектах на базе Arduino такой приём — основной, и ред­ко не встретишь в скетче (так среди фанатов Arduino называют исходный текст программы) строки


serial,begin(9600);

serial .pnntln(value);.


Обычно в качестве терминального устройства, "слушающего” по­следовательный порт и посы­лающего в него текстовые ко­манды, используют компью­тер с запущенной на нём тер­минальной программой. Но в практике автора однажды слу­чилось так, что все компьюте­ры были заняты, и для того чтобы поработать с Arduino, пришлось ждать, когда хотя бы один из них освободится. Тогда и появилась мысль соз­дать самостоятельное терми­нальное устройство. В качест­ве устройства ввода вполне подошла бы обычная компью­терная клавиатура, которая почти всегда есть под рукой, да и приобрести новую — не такое уж затратное дело. В качестве устройства отображения информации хотелось иметь небольшой "ЖК-экранчик”, но такового под рукой не оказа­лось, зато нашёлся никем не исполь­зуемый телевизор.


Сразу вспомнилась молодость и первые самодельные компьютеры на КР580ВМ80А, Z80A... Тогда бытовые те­левизоры применяли в качестве мо­ниторов повсеместно (ничего другого просто не было). Для сопряжения с ними делали специальные платы со своей экранной памятью, контроллерами отображения и формирователями видео­сигнала.


С тех пор минули десятилетия, и ны­нешние рядовые микроконтроллеры обладают достаточными ресурсами для формирования телевизионного сигнала без использования дополнительных мик­росхем. Почти все компоненты разраба­тываемого терминального модуля с вы­ходом на телевизор удалось разместить на отладочной плате SEM0010M-88PA [1] с уже установленным на ней микроконт­роллером ATmega88PA-AU.


Этот микроконтроллер должен вы­полнять три основные задачи:

получать информацию о нажатых клавишах от стандартной компьютер­ной клавиатуры;

принимать и отправлять сообще­ния по последовательному интерфейсу;

формировать видеосигнал, содер­жащий текст принятых и введённых с клавиатуры сообщений.


Телевизионный сигнал [2] представ­ляет последовательность строк, вре­менная диаграмма одной из которых показана на рис. 1. Для нашей цели можно считать, что сигнал изображения имеет три уровня (оттенки серого не нужны): уровень синхроимпульсов, уро­вень чёрного (практически совпадаю­щий с уровнем гасящих импульсов) и уровень белого. Следовательно, для формирования видеосигнала достаточ­но простого двухразрядного ЦАП: код 00 — уровень синхроимпульсов, код 11 — уровень белого, коды 01 или 10 — уро­вень чёрного.

Терминал для Arduino Терминал, Телевидение, Arduino, Своими руками, Интересное, Радиолюбители, Technobrother, Паяльник, Длиннопост

Чтобы сформировать временную диаграмму сигнала программным пу­тём, проще всего использовать запро­сы прерываний от таймера, следующие с периодом 64 мкс, равным длительно­сти строки телевизионного сигнала. Обработчик этого запроса сначала ус­тановит уровень синхроимпульса и выдержит паузу, равную стандартной длительности строчного синхроимпуль­са (4...5 мкс). Затем установит уровень чёрного (гасящий импульс) и подгото­вит к выводу информацию, которая должна быть отображена в текущей строке. По её готовности выведет 32 байта (по числу содержащихся в строке символов) через аппаратный интерфейс SPI микроконтроллера (ис­пользование аппаратного интерфейса существенно снижает нагрузку на про­цессор). По окончании вывода инфор­мации установит уровень чёрного, чем и завершит свою работу.


Использование SPI позволяет полу­чить элементы изображения минимальной длительностью 125 не (по­ловина тактовой частоты мик­роконтроллера 16 МГц). Чтобы вывести на экран 32 символа по горизонтали, в каждой теле­визионной строке приходится с учётом интервалов между сим­волами занять около 46 мкс, что хорошо укладывается в её видимую на экране часть.


Выводимые текстовые сим­волы формируются из матри­цы 8x8 элементов изображе­ния. Таблица знакогенератора находится в памяти микро­контроллера и содержит сим­волы ASCII только с кодами 0x20—0x7F (цифры 0—9, знаки препинания и некоторые мате­матические и специальные символы, прописные и строчные буквы ла­тинского алфавита). Из восьми разря­дов каждого байта, содержащегося в знакогенераторе, для формирования символов используются только пять. Время, в течение которого контроллер SPI передаёт остальные три разряда загруженного в него байта, а затем про­грамма загружает в него новый байт, образует интервал, разделяющий сим­волы на экране по горизонтали.


По вертикали между символами, на­ходящимися в соседних горизонталь­ных рядах, выводятся по четыре пустые телевизионные строки. Поэтому один ряд символов занимает 12 телевизион­ных строк.


Формируемый микроконтроллером видеосигнал имеет упрощённую форму. В частности, не формируется черес­строчная развёртка из 312,5 строк в каждом полукадре. Кадр образуют ровно 312 строк, причём вертикальная развёртка получается прогрессивной. Кадровый гасящий импульс занимает строки 250—312, кадровый синхроим­пульс — строки 290—292. Уровень гася­щих импульсов, как уже было сказано, считается совпадающим с уровнем чёрного. Такие упрощения не приводят к искажениям формируемого микро­контроллером изображения на экранах как старых, так и новых телевизоров.


Обмен информацией между ком­пьютером и его клавиатурой подробно рассмотрен в статьях [3, 4]. Исполь­зуемый для этого интерфейс PS/2 имеет двунаправленную линию данных и линию синхронизации, сигнал кото­рой формирует клавиатура. Приём ин­формации микроконтроллером про­исходит в процедуре обработки за­проса прерывания INTO, на вход кото­рого подан сигнал синхронизации от клавиатуры. Принятые от клавиатуры скан-коды клавиш преобразуются в коды ASCII соответствующих символов, которые программа выводит в самый нижний (двадцать первый) ряд симво­лов на экране телевизора. При нажатии на клавишу Enter программа отправ­ляет коды ранее введённых символов по последовательному интерфейсу и очищает ряд 21 на экране.


Приём сообщений по последова­тельному интерфейсу также организо­ван по прерываниям. Принятый байт (код символа), если его значение нахо­дится в интервале 0x20—0x7F, сразу помещается в буфер вывода на экран. В противном случае он предваритель­но заменяется 0х2Е (кодом символа "точка”). Исключение — байты 0х0А ("Перевод строки") и 0x0D ("Возврат каретки"). Вывод полученных вслед за ними символов продолжится соответ­ственно в следующем ряду либо с начала текущего ряда.


Схема терминального модуля по­казана на рис. 2. Он построен на мик­роконтроллере ATmega88PA-AU (DD1), тактовая частота которого стабили­зирована кварцевым резонатором ZQ1.

Терминал для Arduino Терминал, Телевидение, Arduino, Своими руками, Интересное, Радиолюбители, Technobrother, Паяльник, Длиннопост

Компьютерную клавиатуру с интер­фейсом PS/2 подключают к разъёму XS1.1 — сиреневой части сдвоенной ро­зетки MDD-6FR, хотя можно использо­вать и совсем уж старые АТ-клавиатуры с пятиконтактным разъёмом DN-5F1 (схема подключения такой клавиатуры приведена в [3]).


Для сопряжения с видеовходом те­левизора использован узел, аналогич­ный применённому в компьютере "Радио-86РК" [5]. Из нескольких опробо­ванных вариантов он оказался наибо­лее стабильным. На резисторах R1— R3 выполнен простейший ЦАП, для сопря­жения которого с низкоомной нагруз­кой служит эмиттерный повторитель на транзисторе VT1.


Питают модуль от не показанного на схеме зарядного устройства для сото­вого телефона через разъём XS2. Кон­денсаторы С2, СЗ — фильтр в цепи пи­тания. Зарядное устройство пригодно любое с напряжением холостого хода не выше 6 В, чтобы не повредить мик­роконтроллер. Если в телевизоре есть разъём USB, питать модуль можно и от него.


Внешние устройства с последова­тельным интерфейсом присоединяют к разъёму XS1.2 (зелёной части сдвоен­ной розетки MDD-6FR). Такое решение позволяет использовать для подключе­ния внешнего оборудования кабель от неисправной компьютерной мыши с ин­терфейсом PS/2. Поскольку защитных цепей в модуле не предусмотрено, подключать оборудование к этому разъему следует в отключённом от сети состоя­нии.


Разъём программирования микро­контроллера ХР1 на плате SEM0010M- 88РА уже имеется.


Печатная плата для терминального модуля не разрабатывалась. Большая часть его элементов смонтирована на отладочной плате SEM0010M-88PA раз­мерами 42x42 мм с уже установленны­ми на ней микроконтроллером DD1, разъёмом ХР1, кварцевым резонато­ром ZQ1 на 16 МГц и конденсаторами Cl, С4 Разъёмы XS1.1, XS1.2 и XS2 вы­несены на отдельную небольшую плату. Между собой платы соединены отрез- ком шестипроводного плоского кабе­ля, как показано на рис. 3. Платы помещены в пластмассовый корпус от электромонтажной коробки. Для дос­тупа к разъёмам использованы его технологические отверстия.

Терминал для Arduino Терминал, Телевидение, Arduino, Своими руками, Интересное, Радиолюбители, Technobrother, Паяльник, Длиннопост

Сдвоенную розетку MDD-6FR мож­но найти на старой компьютерной материнской плате. Разъём XW1 — гнездо RCA RP-8 ("тюльпан"), XS2 — розетка микро-USB USB/Mc-1J, в которой использованы только контак­ты питания.


Настройки цифровые устройства при правильном монтаже, как прави­ло, не требуют. Возможно, потребуется подобрать в небольших пределах номиналы резисторов R1—R3 для получения стабильного и контрастно­го изображения на экране телевизора.


Предназначенная для микроконт­роллера DD1 программа tvk9b.alp (за­грузочный файл tvk.9b.hex) подготов­лена в среде разработки Algorithm Builder for AVR. После подачи питания на микроконтроллер она настраивает таймер Т2 на формирование запросов прерывания с периодом 64 мкс, конт­роллер SPI — на передачу информации с тактовой частотой 8 МГц, последова­тельный интерфейс — на скорость 9600 Бод и восьмиразрядные посылки без контроля чётности с двумя стопо­выми разрядами. Затем программа очищает экранную память, выводит на экран телевизора надпись "Terminal v.9b", а на клавиатуру подаёт команду установки в исходное состояние.


Далее программа циклически проверяет готовность информации, принятой по последовательному интерфейсу и от клавиатуры.


Принятые по последовательному интерфейсу байты программа заносит в буфер экрана, определяя при этом позицию (ряд и колонку) символа на экране. В каждом ряду возможно ото­бражение до 32-х символов с кодами ASCII 0x20—0x7F. Символы с другими кодами отображаются в виде точек (символов с кодом 0х2Е). Символы "Перевод строки" (0х0А) и "Возврат каретки" (0x0D) вызывают соответст­вующую коррекцию места вывода на экран последующих принимаемых сим­волов. В отсутствие переводов строки и возвратов каретки символы, следую­щие за 32-м, затирают его на экране.


Всего на экране имеется место для 21-го ряда по 32 символа в каждом. Двадцать из них предназначены для информации, принимаемой по последовательному интерфейсу. Ес­ли приём идёт в ряду 20, то символ "Перевод строки" сдвигает весь при­нятый текст на один ряд вверх, осво­бождая ряд 20 для дальнейшего приёма.


Самый нижний ряд 21 предназначен для отображения символов, вводимых с клавиатуры. При нажатии на клавишу Enter содержимое этой строки отправ­ляется по последовательному интер­фейсу во внешнее устройство.


Как уже было отмечено, формиро­вание видеосигнала, взаимодействие с клавиатурой и внешним оборудова­нием происходит в процедурах обра­ботки запросов прерываний соответ­ственно от таймера по спадающему перепаду сигнала на линии INTO и от последовательного интерфейса.


Конфигурация микроконтроллера DD1 должна соответствовать показан­ной на рис. 4.

Терминал для Arduino Терминал, Телевидение, Arduino, Своими руками, Интересное, Радиолюбители, Technobrother, Паяльник, Длиннопост
Рассмотрим пример взаимодейст­вия терминального модуля с микро- контроллерным модулем Arduino Pro Mini [6], в который должна быть загружена програм­ма, скетч которой пред­ставлен в таблице.
Терминал для Arduino Терминал, Телевидение, Arduino, Своими руками, Интересное, Радиолюбители, Technobrother, Паяльник, Длиннопост

После подачи питания на модуль Arduino с этой про­граммой в памяти на нём включится светодиод, со­единённый с его выводом 13, а в последовательный порт будет выведено сообщение "START PROGRAM". Далее в последовательный порт станут периодически выво­дится сообщения о про­шедшем с момента запуска программы времени в мил­лисекундах, а также выпол­няться проверки, не принят ли из того же порта байт. Если принятый байт — ASCII-код латинской буквы А, то светодиод переклю­чится в режим одиночных вспышек, если это код ла­тинской буквы В, вспышки станут двойными, а если латинской буквы С — трой­ными.


Теперь подключим мо­дуль Arduino к терминалу. Для этого достаточно со­единить выход ТХ Arduino (вывод 0) с входом RXD (контакт 1 разъёма XS1.2) терминального модуля, вход RX Arduino (вывод 1) — с выходом TXD (контакт 5 разъёма XS1.2), а также общий провод (GND) Arduino — с кон­тактом 3 разъёма XS1.2. Разъём XW1 нужно соединить с видеовходом теле­визора, а к разъёму XS1.1 подключить клавиатуру. Все эти соединения видны на рис. 5. Цепь +5 В модуля Arduino соединена с одноимённой цепью тер­минального модуля. Теперь на модули можно подать питание.

Терминал для Arduino Терминал, Телевидение, Arduino, Своими руками, Интересное, Радиолюбители, Technobrother, Паяльник, Длиннопост
На экране телевизора должны по­явиться надписи "Terminal v.9b“ (это за­работал терминальный модуль), а затем "START PROGRAM" — первое принятое от Arduino сообщение. Далее, как пока­зано на рис. 6, на экране периодиче­ски станет появляться новая строка с числом прошедших с момента запуска программы Arduino миллисекунд.
Терминал для Arduino Терминал, Телевидение, Arduino, Своими руками, Интересное, Радиолюбители, Technobrother, Паяльник, Длиннопост

Переведём клавиатуру в режим за­главных букв коротким нажатием на клавишу Caps Lock. На клавиатуре должен включиться одноимённый индикатор.


Если теперь нажимать на клавиши латинских букв А, а, В, b, С, с и, нажав на клавишу Enter, отправлять код соот­ветствующей буквы в Arduino, то, со­гласно полученной команде, светодиод станет вспыхивать однократно, дважды или трижды, а сообщения о времени будут появляться на экране реже.


Некоторые клавиши выполняют управляющие функции.


Клавиша Caps Lock переключает на клавиатуре одноимённый индикатор и изменяет регистр передаваемых при нажатиях на клавиши букв. При вклю­чённом индикаторе они заглавные, а при погашенном — строчные.


При нажатой клавише Shift (как правой, так и левой) поднимается регистр цифровых и знаковых клавиш, а регистр букв становится противопо­ложным установленному клавишей Caps Lock.


Клавиша Scroll Lock управляет одноимённым индикатором клавиату­ры. Когда индикатор включён, к после­довательности символов из ряда 21, передаваемой по последовательному интерфейсу в результате нажатия на клавишу Enter, программа автоматиче­ски добавляет коды перевода строки и возврата каретки. При погашенном индикаторе происходит передача только символов из ряда 21.


Клавиша Esc — очистка строки 21 без передачи информации.


Клавиша Back Space — удаление из* строки 21 ранее введённого символа.


Терминальный модуль получился очень простым и компактным. Его удобно использовать не только при отладке микро­процессорных устройств, но и для отображения текс­товой информации от лю­бых приборов, оснащённых последовательным интер­фейсом. А немного изме­нив программу микроконт­роллера и добавив, напри­мер, датчики температуры, влажности и атмосферного давления, можно превра­тить сам модуль в метео­станцию, выдающую ин­формацию на экран теле­визора. Питать модуль це­лесообразно от разъёма USB того телевизора, с которым он работает. Такие разъёмы есть практически в каждом современном те­леприёмнике.


Нужно признать, что описанный модуль не ли­шён недостатков. Напри­мер, при нажатии на клави­шу Enter кратковременно нарушается синхронизация телевизионного изображе­ния. В это время микро­контроллер модуля выво­дит информацию в после­довательный порт, и прио­ритет в прерываниях отдан этому процессу в ущерб формированию видеосиг­нала.


Скачать архив к проекту


Автор: А. ПАХОМОВ, г. Владимир

Источник: журнал Радио №11, 2015

Показать полностью 7
Терминал Телевидение Arduino Своими руками Интересное Радиолюбители Technobrother Паяльник Длиннопост
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии