Output Full-HD Video to a Monitor From a Raspberry Pi Pico or ESP32 Over USB
This library lets you get full-HD video at 60Hz from a Raspberry Pi Pico or ESP32, using a simple USB display adapter.
Microcontrollers have no problem driving simple displays, like seven-segment LED displays and low-resolution OLEDs, but they really aren’t meant to output high-resolution video at a decent refresh rate, like a computer does. Even so, there are plenty of hacks out there to get composite, VGA, and DVI signals out of some microcontrollers. This solution from htlabnet is even better. It lets you get full-HD USB video at 60Hz from a Raspberry Pi Pico or ESP32.
This library, which is available both for the Arduino IDE and ESP-IDF, works with several different popular development boards: the Raspberry Pi Pico (or anything with an RP2040), the Raspberry Pi Pico 2 (or anything with an RP2350), an ESP32-S2 board, an ESP32-S3 board, an ESP32-P4 board, or a Teensy 4.x board. The ESP32 boards with require a USB OTG connector and the others will require a USB host connector. Wiring is easy, with only two data wires.
This works by configuring the microcontroller as a USB host for USB display adapters. Those adapters don’t receive a video signal for some kind of format conversion. Rather, they generate a video signal based on the data they receive from the USB host. Think of it as kind of like writing to a frame buffer. That distinction is important, because it means the microcontroller doesn’t have to do any of the heavy lifting or careful timing that video signals require.
But for that to work, you’ll need a compatible USB display adapter. To help you select one, htlabnet compiled a list of about 20 chips that are commonly used in those adapters. The list will tell you if the chip is supported. If it is, it will tell you which development boards it works with and what resolution you can get from it. There are also lists of different display adapters on the market, plus docking stations and even USB monitors.
The recommendation for maximum compatibility is to go with a DisplayLink DL-165. You can find that in a WAVLINK WL-UG17D1, which you should be able to source on eBay for about $20.
The Library Usage Guide will then walk you through how to take advantage of the hardware and library. It provides advice and code samples for different graphics libraries. With those, you’ll be able to output nice GUIs to monitors at high-resolution.
Please log in or sign up to comment.