HDMI From Your Arduino

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.

28 thoughts on “HDMI From Your Arduino

  1. 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…

    1. 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

    2. In my lab, which includes some pretty fancy time-deterministic data acquisition, I often use arduinos for the front ends. Why? Because if you know how to code, you can get hard realtime determinism out of one, which you cannot do with a raspi or any other high level SBC with a video output – pre-emptive opererating systems pre-empt. Doh.

      Further, in high EMI or radiation environments, you’ll quickly find that the bigger the lithograpy features and the more dependence on flash for code – the harder to crash it is. Intel and dram – super easy to crash. Pi next, arduino, well, we haven’t crashed any here yet, and the odd billion watt EMP from an accidental arc on a 2500 joule Maxwell cap doesn’t manage it. Of course, all machines are in shielded boxes and have filtered inputs, often using fiber converters so as not to even allow common mode on ethernet to sneak in…but no shielding is perfect, neutrons are also hard to stop, and sometimes, doggone it, you really really really want realtime display for an operator who is the last, best, safety feature, the person with the big red kill switch.

      Just a little “found this out the hard way” wisdom for ya. Might not be what most need, but when you need it, you need it.

    3. “Given price (!), comfort of development, processing power, power consumption…”

      Wait, why would power consumption be a reason to choose an SBC with HDMI out? They all consume ~watt scale power, whereas a microcontroller is sub-watt scale. The HDMI shield itself will obviously draw a fair bit of power (and the display obviously would draw quite a bit!) but you can imagine having the HDMI out for debugging or display purposes, infrequently used, and powered up only when needed. You could likely hack together something similar other ways, but if this exists already, it’s not a bad option for those use cases.

      What I find a bit weird is that there’s no info on power consumption anywhere, given that that’s the most likely use case.

    4. Because Arduino is a development board, not an SBC. Arduino’s intended use is to make prototypes that can later be built with microcontrollers, or as a tool to interact with prototype circuitry. For example, if you’re trying to build a circuit that can replace a composite outputting chip for some old hardware, and you want the output to be HDMI instead of composite on the new design, a tool like this will prove quite valuable.

    5. I need 12 individual displays only displaying two statistics and a little data for milk production and cow monitoring. An raspberry pi alone costs more than an esp32 in vga mode and a cheap 10 inch lcd.

    1. quite disappointed here too, not only is this using a purpose built graphics chip to… display graphics… it is a thinly veiled ad for a $50 commercial arduino shield that does not have any schematics or other information needed to reproduce it. It is especially frustrating in this case, because the project clearly tries to appear to be open source and hacker friendly (github for the firmware, even some decoy schematics on the project page of the arduino compatible boards they sell to plug it into) but when it comes to brass tax there is no schematic of the actual video generation parts, just a link to webstore.

    1. As much from the Arduino as from my Wii with an HDMI adapter. You’re literally using the chip as intended to produce an HDMI signal. Good write-up on how to interface though. Could be useful for displaying simple data.

    2. It’s a cool board but the headline is somewhat misleading.

      It’s an entire HDMI graphic board with its own RAM and graphics accelerator that features:

      Block Transfer Engine
      Geometric Speed-up Engine
      Virtual Display
      Dual Pages Mode
      Horizontal Scroll
      Vertical Scroll
      Graphic/Font Rotation
      Programmable Text Cursor
      Support Graphic Cursor
      User-defined Characters

      And “Surely creating them from a simple microcontroller will be impossible!” … yeah, it’s still impossible, it’s not a “simple microcontroller” generating the signals. Sorry.

      I could send data to a PC and have the PC output HDMI, that’s not the Arduino generating the HDMI signal.

      It’s kind of taking away from how cool this board is.

  2. Those RA8876 chips are all over in the aftermarket TFT driver boards, and the firmware ecosystem around them is arcane and weird. Having open firmware that simply drives that chip, and a toolchain to build same, opens the potential for a lot of cool hacks with very cheap boards.

  3. This is exactly the kind of chip I’ve been looking for. Sure, it doesn’t look like it’ll do sprites but making a system that requires VGA-graphics hacks for quick update is better than having to -invent- a sprite graphics controller on FPGA.

    1. I think it has 1 sprite: intended to do a hardware mouse cursor :)

      Apparently the chip can also do double-buffer & alpha blending so software sprites & tiles should be possible with little transfers from the Arduino board.

  4. Wondering why the guys who made this shield cannot put an atmega chip and a USB to serial chip on it ?

    Even many major semiconductor manufactories especially microcontroller manufacturers are making their development kits with arduino shield compatible headers. I feel sad about it, Is anyone using this very old bulky arduino shields ? I too used arduino for quick prototyping but never used anything bigger than nano.

    Also is arduino ruling the professional embedded microcontroller world ? If not, why major players are making their dev kit by following arduino shield compatibility?

    1. These development systems are “reference platforms” where the demo programs are guaranteed to work, so developers of demo software can use popular Arduino shields as reference peripherals. So for example for mbed or nutty you can get some of their more complex demos working very easily. Also, you can get blank prototyping Arduino shields for super duper cheap on aliexpress, with either 2mm or 0.1″ hole spacing.

      You can’t actually use any of these dev boards in real products (read the fine print) so who really cares anyway? Make your own hardware!

  5. There are lots of cool ARM microcontrollers out there like STM32F7 that already have built-in MIPI controllers, why not just use one of those? With STM32Duino you can port your Arduino programs to STM32.

  6. One thing that I think is a bit sad about these products: They’re using hardware that is tens of times more capable than an arduino to interface to an arduino.

    If you really want to be smart and out-of-the-box, try to use the hardware on the controller chip to do the arduino stuff as well :)

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.