Hdmi to vga arduino

Могу ли я вывести сигнал HDMI с Arduino?

В Интернете есть различные статьи, в которых подробно рассказывается, как использовать Arduino для вывода сигнала VGA, но можно ли использовать его для вывода сигнала HDMI или он просто недостаточно быстр? Он будет использоваться только для отображения некоторого базового текста, ничего необычного в виде графики.

Нет, не сразу. У Arduinos просто нет сил, чтобы выполнить такую ​​задачу. Для этого проекта я бы рекомендовал использовать Raspberry Pi. Взгляните на этот потрясающий пост в блоге Joonas Pihlajamaa об использовании Raspberry Pi в качестве экрана Arduino HDMI .

Пожалуйста, ознакомьтесь с продукцией Chrontel на сайте www.chrontel.com :

  • CH7035 — выход TTL на HDMI.
  • CH7026 — TTL в CVBS.
  • CH7033 — TTL для VGA и HDMI.
  • CH7034 — TTL для VGA.
  • CH7322 — HDMI CEC.

Их вход TTL поддерживает RGB 8-8-8. 5-6-5, YCrCb 4: 2: 2, ITU656 и т. Д. Я думаю, что Arduino может использовать свой интерфейс MCU для прямой записи графических данных в свой кадровый буфер. Встроенная программа масштабирования может масштабировать содержимое кадрового буфера до всех выходных разрешений HDMI, таких как 1080P.

Аппаратная комбинация Arduino + RA8876 + CH7033B доказала, что может выводить прогрессивное сканирование 1920×1080 при 60 Гц на телевизор, монитор 1080p и даже мини-проектор 1080p. Графическая часть играет красиво. Там остается аудио часть.

Для дисплеев с низким разрешением можно напрямую генерировать сигналы HDMI с помощью низкоуровневых ПЛИС. Чтобы генерировать сигнал HDMI, необходимо иметь возможность переключать 3 вывода GPIO с частотой 250 МГц, что находится в пределах возможностей, скажем, диапазона FPGA Spartan 6 или Cyclone IV. Этого будет достаточно для отображения изображения 640×480 с глубиной цвета 24 бита. Затем ваш Arduino может взаимодействовать с FPGA для предоставления инструкций по отображению, а FPGA может обновлять свой дисплей по мере необходимости. Посмотрите этот проект, чтобы узнать, как это будет работать.

Вот Arduino Shield для HDMI от TechToys.com от Джона Люнга.

Он использует TFT-контроллер RA8876 для генерации RGB-видео в формате 8: 8: 8.

Это довольно дорого в 69 долларов. По состоянию на 5/2019.

Источник

Hackaday

Creating a video signal from a computer, a job that once required significant extra hardware, is now a done deal with a typical modern microcontroller. We’ve shown you more NTSC, PAL, and VGA projects than you can shake a stick at over the years. Creating an HDMI video signal however is not so straightforward. It’s not a loosely defined analogue standard but a tightly controlled digital one upon which the clever hacks that eke full colour composite video from a single digital I/O pin will have little effect. Surely creating them from a simple microcontroller will be impossible! Not according to [techtoys], who has created an Arduino shield that creates an HDMI output from an SPI control input.

At its heart are two interesting integrated circuits that give us a little bit of insight into creating graphics at this level. First up is an RA8876 MIPI TFT controller which is a full graphics engine that produces a digital RGB output, followed by a CH7035B HDMI encoder that produces an HDMI output from the RGB. This combination of chips is particularly interesting one, because the RA8876 supports a variety of different interfaces that between them should be able to talk to most microcontrollers. In the Arduino world the only other HDMI options come via the use of an FPGA.

This is a project that seems to have been around for a couple of years, but which is still an active one. The classic Arduino shield form factor may now seem a little past its zenith, but as this board shows it’s still capable of being used for interesting new applications.

Thanks [th_in_gs] for the tip.

27 thoughts on “ HDMI From Your Arduino ”

Not to take away from the technical side of this, but… why?

When it would make sense to use an Arduino and a HDMI shield instead of using any of the single-board computers with HDMI outputs? Given price (!), comfort of development, processing power, power consumption…

I can see one interesting use for this, lets say you have a small fpga board that doesn’t have the interface circuitry needed for hdmi, this might be useful for that purpose, such as the retro gaming
the Mister fpga setup uses a DE10 nano which already has hdmi, but this might allow the use of smaller boards like the DE0-nano or ice lattice fpga’s without needing to worry about the video side of things

Источник

Подключение Arduino к телевизорам и мониторам

Возможно ли подключать Ардуино к телевизорам и мониторам и получать при этом цветное изображение? Какое максимальное разрешение она может выводить? Возможно отрисовывать графику сравнимую с приставкой NES (при этом корректно выглядящую на современных мониторах с большим разрешением)?

Какой аналог на ARM способен обеспечить выполнение этих условий?

  • Вопрос задан более трёх лет назад
  • 27060 просмотров

На офсайте есть библиотеки для разных видеоустройств, там подробности описаны:
arduino.cc/playground/Main/InterfacingWithHardware#Video

Gameduino is a game adapter for Arduino (or anything else with an SPI interface) built as a single shield that stacks up on top of the Arduino and has plugs for a VGA monitor and stereo speakers.

Когда я столкнулся с задачей вывода цветной графики с Arduino, то пришел к тому, что 100% нужен внешний шилд. Остановился на двух вариантах:

  1. Serial VGA Monitor Driver, занимает UART последовательный порт (вернее всего одну его передающую ногу). Я даже обрадовался, что всего по одной ноге можно передать всё, что угодно, и не занимать SPI-порт, который в моем проекте использовался для 2,4GHz радио-модуля. Но первая печаль в том, что эту шилду в Россию не доставляют, а вторая — нет настройки размера текста. Весь текст идет одним размером.
  2. NovaVGA — крутая штука и есть доставка в Россию, но занимает весь SPI порт. Если дорог SPI, то придется использовать две платы Arduino и потом связывать обмен. Аналогичная печаль: нет настройки текста, нет русских символов, требуется допиливание вручную библиотеки символов в HEX.

Я даже посмотрел в сторону Raspberry.

продолжаю искать. Это дороговато и нет цвета

Источник

Can I output a HDMI signal with an Arduino?

There’s various articles online detailing how to use an Arduino to output a VGA signal, but can I use it to output a HDMI signal or is it simply not fast enough? It would only be used to display some basic text, nothing in the way of fancy graphics.

5 Answers 5

No, not directly. Arduinos just don’t have the horsepower to do such a task. For this project, I would recommend using a Raspberry Pi. Take a look at this awesome blog post by Joonas Pihlajamaa on using a Raspberry Pi as a Arduino HDMI shield.

Please see Chrontel’s products at www.chrontel.com:

  • CH7035 — TTL to HDMI output.
  • CH7026 — TTL to CVBS.
  • CH7033 — TTL to VGA and HDMI.
  • CH7034 — TTL to VGA.
  • CH7322 — HDMI CEC.

Their TTL input supports RGB 8-8-8. 5-6-5, YCrCb 4:2:2, ITU656, etc. I think the Arduino can use their MCU interface to write graphics data to their frame buffer directly. On-chip scaler can scale frame buffer content to all HDMI output resolutions like 1080P.

For low resolution displays, it’s possible to directly generate HDMI signals using low-end FPGAs. In order to generate an HDMI signal, you need to be able to toggle 3 GPIO pins at a rate of 250MHz, which is within the capabilities of, say, the Spartan 6 or Cyclone IV range of FPGAs. This would be enough to display a 640×480 image with 24-bit colour depth. Your Arduino could then interface with the FPGA to provide instructions on what to display, and the FPGA could update its display as required. See this project for the basics of how this would work.

Источник

VGA на Arduino

VGA это сокращение от Video Graphics Array, протокола отображения видео, который часто встречается в мире электроники. В VGA используется одна «частота следования пикселей» и установленная частота вывода видео данных горизонтально, строка за строкой, пока весь кадр не будет отображен, а потом всё начинается снова.

В прошлом я построил много проектов основанных на VGA, но никогда не использовал его с Arduino, поэтому в этом проекте мы будем использовать платформу Arduino UNO для имитации VGA сигнала при помощи непосредственно С кода. Это абсолютно не похоже на то, как это реализовано в видеокартах, но это интересная задача, чтобы увидеть, на сколько хорошо мы знаем и понимаем Arduino и AVR микроконтроллеры, а также VGA протокол. Работа устройства показана на видео.

Цель и обзор этого проекта

Целью данного проекта является использование Arduino UNO для вывода стандартного изображения с красным, зеленым и синим цветом на компьютерный VGA монитор. Кроме Arduino UNO я использовал небольшую плату с VGA разъемом, которую я сделал для своего предыдущего проекта «Видеокарта для мазохиста», чтобы легче подключать монитор.

Для того, чтобы вывести красный, зеленый и синий цвета на компьютерный VGA монитор, мы должны договориться о разрешении, которое мы будем пытаться имитировать. Например, 800×600 удобно, т.к. используются целые круглые числа, и частота следования пикселей составляет 40МГц. И можно имитировать VGA разрешение 800×600 и выводить 200 линий красного, 200 линий зеленого и 200 линий синего цветов. Поскольку Arduino UNO работает на частоте 16МГц, невозможно получить доступ к каждому пикселю, поэтому мы будем выводить целиком линии.

Элементы:
Arduino UNO
Плата с VGA разъемом
Перемычки (провода)
Компьютерный VGA монитор
Разъем для батареи +9В
Разъем для батарей

Подробный список элементов

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

Arduino UNO
Arduino Uno это микроконтроллер, который делает всю работу в этом проекте, выполняет наш код и выдает VGA сигналы, соответствующие тому, что мы хотим вывести на монитор без особых проблем.

Плата с VGA разъемом
Эта плата изначально была сделана для моего проекта Видеокарта для мазохиста, чтобы легко подключать монитор, но я пишу всё больше и больше статьей на тему VGA, поэтому он чрезвычайно полезен.

Перемычки
Обычные перемычки. Мы будем использовать их для подключения Arduino к VGA монитор. Также можно использовать провода со штырьками или крокодильчиками.

Обзор схемы

Это один из тех случаев, когда схема проекта очень мала, потому что большая часть работы происходит в программе. Несколько необходимых соединений показаны на схеме.

Особенности схемы

RGB соединения
В VGA используется смешивание красного зеленого и синего цветов для получения всех цветов радуги. Параметры на каждом из этих контактов показывают монитору, насколько интенсивно должен гореть этот цвет. Мы не регулируем интенсивность цвета, поэтому у нас всегда для каждого из цветов 100% красного, 100% зеленого или 100% синего.

Hsync и Vsync соединения
Для того чтобы знать, какая линия сейчас отображается и завершен ли кадр, используется два сигнала синхронизации: ​​горизонтальная синхронизация H-SYNC и вертикальная синхронизация V-SYNC. Это самые важные сигналы, и если их тайминги будут нарушены, то VGA выход не будет работать как надо.

GND соединения
В VGA разъеме есть много GND выводов для разработчиков, чтобы сделать профессиональный VGA контроллер. Но для того, что мы делаем, нужно всего лишь подключить GND к 5 контакту. Всё!

Основы теории VGA

В спецификации VGA описывается отображение цветовых данных, горизонтальной и вертикальной синхронизации, и об определенном времени на каждое действие, которое нельзя пропускать.
Arduino UNO тактируется кварцевым генератором 16МГц и одна инструкция выполняться за один цикл, что означает, что каждая инструкция в нашей программе будет выполняться точно за (1/16000000) секунды или примерно 62,5 наносекунды.

Так как каждая инструкция выполняется 62,5 наносекунды, и мы должны проводить синхронизацию в определенное время, важно, что каждое время с картинки выше делиться на 62,5 наносекунды, а это значит, что мы можем использовать инструкции с задержкой, чтобы получить идеальное время для синхронизации.

При использовании 800x600VGA, каждая строка заканчивается горизонтальным импульсом синхронизации, который сообщает монитору данные следующей строки. После синхронизации 601 линии, монитор ожидает импульс вертикальной синхронизации продолжительностью 4 линии. В этот момент есть пауза в 23 линии. Благодаря вертикальной синхронизации и задней площадки строчного гасящего импульса, линии отображаются, но информация о цвете не используется.

Аппаратная часть

Это наверно одна из самых простых собранных схем, о которых я писал. Берите Arduino UNO, перемычки и VGA разъем и начинайте сборку!

Сборка схемы
На фотографии вы можете видеть все детали, необходимые для сборки схемы, приведенной ранее. Сначала подключите GND к 5 контакту VGA разъема. Потом подключите контакты красного, зеленого и синего цветов. Наконец, соединения Hsync и Vsync выполнены, и монитор может понять, в каком разрешении и в какой момент вы хотите отобразить что то на нём. Я использую плату от своего предыдущего проекта. О её изготовлении можно узнать здесь.

Аппаратная часть готова. Давайте перейдем к программной части и посмотрим, как всё это реализовано.

Программная часть

Есть две основных части кода, которые вы увидите, объяснить и подробно описаны ниже:
— Цвет для циклов + Hsync
— Вертикальная синхронизация

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

В следующем отрывке кода видно, что вертикальная синхронизация выглядит почти так же, как вывод обычных горизонтальных линий. Разница в том, что вместо того, что бы считаться в пикселях, как Hsync (128 пикселей), вертикальная синхронизация считается в линиях (4 линии).

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

Результат работы и примечания

На видео показан вывод VGA сигнала с Arduino UNO на компьютерный VGA монитор. Никаких уловок и трюков, просто работа программы, и сигналы синхронизации.

Красный, зеленый и синий цвета появляются на мониторе сразу после включения питания без искажений. Надеюсь, этого достаточно, чтобы убедить вас, что эта система действительно работает, и мы выводим VGA 800×600 @ 60 Гц.

Обзор VGA на основе Arduino

Как вы уже поняли, VGA довольно трудно выводить при помощи Arduino в разрешении 800×600, а получение полноценной картинки используя только Arduino в принципе невозможно, но мы используем гибкость VGA в нашу пользу и выводим упрощенные вещи. На экран выводятся красный, зеленый и синий цвета, доказывая, что мы можем выводить упрощенный VGA.

Что теперь делать?
Я не рекомендовал бы тратить слишком много времени на вывод VGA сигналов при помощи Arduino, так как это получается намного сложнее из-за требований к таймингам. В конечном счете вы, вероятно, разочаруетесь в этом методе. Есть много VGA контроллеров, с которыми Arduino может взаимодействовать, что сильно упрощает вывод вещей на VGA монитор. Я уверен, что есть Arduino shield, дающий такую возможность.

Заключение
Если мы перечитаем цели данной статьи, то мы поймем, что у нас всё получилось. Три цвета на экране, как и ожидалось. Программа была довольно сложной, но реализуемой. Однако, динамический VGA выход намного интереснее.

Источник

Adblock
detector