Render 3D Models with an ESP32 Microcontroller That Uses VGA
VGA, as old as it is (produced since 1987), can still be found on some modern monitors and TVs alongside HDMI, Display Port, and DVI. As…
VGA, as old as it is (produced since 1987), can still be found on some modern monitors and TVs alongside HDMI, Display Port, and DVI. As new video standards have rolled out over the years that are far superior, VGA for some reason is still clinging to life. It seems almost archaic that we used to play games at 768×576 or 704×528 in 16 colors, pumped through a video card jammed into a PCI (pre-AGP) slot with DB15 cable connected to that 15-inch CRT.
It’s remarkable that we can still use VGA with modern PC hardware, even more so when it can be used with a tiny ESP32 microcontroller as well. Bitluni’s Lab was able to coax a VGA signal through an ESP32 using a bunch of resistors, external DACs, and some slick programming. To get EPS32 to output VGA in 14-bit color, Bitluni had to produce three separate signals — red, green, and blue. Unfortunately, the ESP32 only features two onboard DACs to process the data, so Bitluni chose to offload them to external DACs with R-2R resistor ladder networks, and pushed the signals over an I2S Bus in LED mode.
In order to get the RGB signals to fit the horizontal and vertical sync, Bitluni tweaked the pixel clock settings a bit, which lowered the resolution but still managed to produce several resolutions- including 320 X 240, 360 X 400, and 460 X 480. Bitluni was kind enough to upload his schematic and the code needed to run VGA on his project page, for those looking to recreate his build.