Introduction
The ESP32 S3 VGA board is a ESP32 S3 based microcontroller board with VGA output on board.
It’s an update of my former implementations of extension boards based of the ESP32 Mini Kit. The S3 microcontroller has some changed peripherals so the old implementation can’t be used with it.
The new board is a complete solution with refreshed hardware. It comes with the Microcontroller chip on board, two buttons and USB-C. On top of these changes the board supports upto 16 bit color instead of 14 bit before. The use of 16 bit modes is a little bit limited currently due to bugs on the S3 silicon.
With the built-in 8MB of PSRAM with an octal SPI interface the framebuffer can be stored in the extended memory and allow upto 1280x720p resolutions. The library is experimental at the moment and extended as we develop additional features.
Hardware
Specification
ESP32 S3 N8R8
8MB SPI RAM
8MB Flash
16 bit VGA DAC
Pins
pin | left | right side |
1 | VBUS (USB 5V) | GND |
2 | 5V after fuse | 3.3V |
3 | GND | TX |
4 | 0 (right button) | RX |
5 | 3 | 42 |
6 | EN (pulled up, left button) | 41 |
7 | GND | 40 |
8 | 3.3V | 39 |
9 | 38 | |
10 | 37 | |
11 | 36 | |
12 | 35 | |
13 | 46 (LED) | |
14 | 47 | |
15 | 48 | |
16 | 45 |
VGA DAC Pins
Function | Pin |
R0 (LSB) | 4 |
R1 | 5 |
R2 | 6 |
R3 | 7 |
R4 (MSB) | 8 |
G0 | 9 |
G1 | 10 |
G2 | 11 |
G3 | 12 |
G4 | 13 |
G5 | 14 |
B0 | 15 |
B1 | 16 |
B2 | 17 |
B3 | 18 |
B4 | 21 |
H-Sync | 1 |
V-Sync | 2 |
Schematic
Software
The current software support is limited to the Arduino development environment. Any other contribution is welcome.
Requirements
- ESP32 Microcontroller support needs to be installed
If not present yet go to File -> Preferences and add to Additinal Bards Manager URLs the urlhttps://espressif.github.io/arduino-esp32/package_esp32_dev_index.json
- Adafruit GFX Library is required for some of the examples. This can be installed using the Library Manager in Sketch -> Include Library ->Manage Libraries…
- Copy the ESP32 S3 VGA library into your Arduino library folder (details in section Library below)
Library
The alpha version of the Arduino Library can be found in the ESP32 S3 VGA Github repository it’s not registered with the library manager yet as the structure isn’t finalized yet. However it can be placed in the Arduino library folder. It provides simple examples that show how it can be used in combination with the Adafruit GFX library. Using Adafruit GFX allows to port existing code quite easily and provides a vast pool of existing projects.
The library can be used directly for maximum performance, but the it will be limited in functionality to keep it maintainable.
Examples
The examples will be listed in File -> examples -> bitluni ESP32 S3 VGA as soon the target board is set to ESP32 S3 Dev Module in Tools -> Board -> ESP32 Arduino
Upload configuration
In Tools the following options need to be selected to be able to use the VGA board properly:
Required:
Board: ESP32S3 Dev Module
CPU Frequency: “240MHz (WiFi)
Flash Size: “8MB (64Mb)”
PSRAM: “OPI PSRAM”
Recommended:
USB Mode: “CDC and JTAG” (for USB serial and upload)
USB CDC On Boot: “Enabled”
Pick the port that appears when plugging in the device. It should show “(ESP32S3 Dev Module)” or similar if another board library claimend the driver.
Uploading / Troubleshooting
After the first upload which will happen on testing the device in my lab the upload should work straight forward. However if the device is somehow bricked or in a boot loop it can be forced into programming mode by keeping button 0 (right from the USB) pressed while pressing reset (left button), then releasing botton 0. That might have changes to the port so make sure you check the selection there.
Possible causes of problems might be a wrong configuration (check above), bad USB cable, wrong port selection, problems with attached hardware.
The board is equipped with a poly fuse. If that is tripped please disconnect the board and give it a moment to recover.
Support
Please check out our Discord. There are plenty of helpful people even when I’m sleeping. You can ping me with @bitluni or writ me a driect message.