A friend who is really into custom LED controllers recommended this SoC recently, can do 200 fps LED control. He said it should be capable of 1080p video. Curious if anyone has looked into it for video synth projects?
While the ESP32 is a quite powerful microcontroller, 1080p video would be pushing it past it’s capabilities. There are some EE youtubers who have been experimenting with it for video purposes, notably Bitluni, usually for making things like basic game consoles. Their arduino projects are open source so you should try it out!
Here’s his video on using it to generate composite video:
He’s also done a few projects with using the ESP32 to output VGA video at different resolutions, framerates, and color depths:
The biggest challenges for 1080p video are RAM and clock speed, the 2MB of RAM on the ESP32 isn’t big enough to hold an entire from of 1080p video in full color (~6MB at 8 bits per color channel), and the 240 MHz clock speed isn’t fast enough to keep up with the ~148.5 MHz pixel clock of 1080p @ 60 Hz.
Just because it can’t do 1080p doesn’t mean that it isn’t an interesting microcontroller for other kinds of video projects though!
I’ve played around with it a little bit, using other people’s code. The two most interesting projects I found were this:
and this:
The former is a pretty cool color(!) NES emulator with composite output and the latter is the video core from that emulator extracted to be more like an Arduino TVout kind of library.
I haven’t done a lot with the ESP32 composite libraries because while all of their composite outputs work fine on my main CRT and on a cheap LCD, I can’t get my LZX Cadet system to sync with any of them. I want to look into it again sometime, though… And I’d love to fiddle with the code and see if there’s a way to get the ESP32 to lock on to a sync signal itself.
at this point just use a raspberry pi honestly, why bother
ESP32 and Raspberry Pi are completely different devices for different purposes. For me personally, since my interest in them is how to integrate them into cool LZX-compatible eurorack modules, there are four main reasons not to use a Raspberry Pi:
-
Raspberry Pi is more expensive.
-
Raspberry Pi draws more current.
-
Raspberry Pi is bigger.
-
There’s no way to sync the Raspberry Pi’s video to another video signal. While I haven’t yet found a video generation library for the ESP32 that does this (or edited one myself to do so), it’s at least possible specifically because we have access to the video generation code. Raspberry Pi is a complete black box when it comes to video generation.
Thanks for all the feedback everyone, cool to know this can be used for video projects at least in SD. Thanks @joem for breaking down the advantages over an rpi.
Following up that my friend actually meant one could use it to pixel map 1080 video to a led light system. Not sure about how, but someone here maybe into that.
Talking of capable ICs and Raspberry Pi, the RP2040 has a lot of unlocked potential.
Whilst only coretex M0+ it has been optimised for data throughput, has relatively large amount of RAM (not enough for a full RGB frame buffer though) and the PIO peripheral is so powerful. I have used it to generate LCD signals, moving onto video next!