3D Rendering and Video Composite Output on ESP32 Boards

A few years ago, we already saw it was possible to transmit color signals over NTSC using an ESP8266 board with the signal received on a TV with an analog tuner. CNLohr had to connect an antenna to the I2S pin of his ESP8266 module, and disable WiFi.

But surely we should be able to do the same with ESP32, and potentially even better thanks to the two cores. That’s exactly what Bitluni successfully managed by connecting his LoLin32 board to the composite input of his TV with one handling the TV signal output (in grayscale) and the other core rendering 3D objects in real-time.

But any ESP32 board could be use instead. The hardware connection is very easy. We just need two wires, one connected to the GND pin and outer part of the RCA connector, and the other connected to GPIO 25 (DAC1) and the inner part of the RCA connector.

The software is more complicated, and basically some Arduino code leverages I2S to push data at high speed to the DAC which then converts the digital signal into analog signal fed to the TV. The 3D rendering engine is able to draw 2k triangles at CGA (320×200) resolution, and if I understand correctly, he was memory limited in what he could do, so maybe high resolution 3D rendering is possible on boards with external PSRAM (TBC). The theory and full details about the implementation can be found on Bitluni website. Watch the video below for a demo, and a quick explanation of how it all works.

Thanks to Karl for the tip.

Support CNX Software - Donate via PayPal or become a Patron on Patreon
Advertisements
Subscribe
Notify of
guest
4 Comments
oldest
newest most voted
theguyuk
theguyuk
2 years ago

Slightly off topic but this reminds me the original Sinclair ZX Spectrum used some of the z80 CPU time for its display. The designer even received a patent on the design ” Hardware design was by Richard Altwasser of Sinclair Research, and the outward appearance was designed by Sinclair’s industrial designer Rick Dickinson.[6] Video output is through an RF modulator and was designed for use with contemporary television sets, for a simple colour graphic display. Text can be displayed using 32 columns × 24 rows of characters from the ZX Spectrum character set or from a set provided within an… Read more »

blu
blu
2 years ago

Video made my day. Respect!

Mark Birss
Mark Birss
2 years ago

Very nice!

willmore
willmore
2 years ago

From the performance values I’ve heard of for the PSRAM, don’t expect it to help this application at all. The BW to it is very low and the latency is pretty high. It’s not going to be of use in a racing-the-beam type of application like this.

I higher memory ESP chip would help if they ever make one of those. 😉

Advertisements