Project · 2.4″ Mini-TV · parallel TFT

2.4″ Mini-TV — wiring

A handheld mini television — an ESP32-S3 plays MJPEG video clips off a microSD card onto a 2.4″ parallel TFT, with resistive-touch controls (channels, play/pause, a volume/EQ screen) and clean I2S sound through a MAX98357A amp. Below is the full build wiring (MAX98357A replaces the old PAM8302A + RC filter); tap a row to tick it off and pick the colour of the wire you actually used from the middle dropdown.

ESP32-S3
N16R8
MAX98357A
I2S Class-D amp
Pins verified0 / 0

Tap a row to toggle · pick each wire's colour in the middle · colours saved on the server

Data bus · 8 lines

D0GPIO 4
D1GPIO 5
D2GPIO 6
D3GPIO 7
D4GPIO 8
D5GPIO 9
D6GPIO 10
D7GPIO 15

Control · 5 lines

RS / DCGPIO 1
CSGPIO 2
WRGPIO 42
RDGPIO 41
RSTGPIO 40

Power · both required

5V5V
3V33V3

Power input · external USB-C socket (optional)

USB-C + 5V VBUS5V
USB-C −GND
Use this instead of the onboard USB to power the build: + → 5V pin, − → GND (feeds the onboard regulator just like the USB port). ⚠️ 5V only — never the 3V3 pin (that bypasses the regulator and damages the 3.3V parts & display). Check polarity before powering. Don't run external power AND the onboard USB at the same time — the 5V/VBUS pin is shared and can back-feed. A bare USB-C breakout needs the CC pull-downs (5.1k to GND on CC1/CC2) or a USB-C charger won't switch on its 5V.

Ground · the priority

GNDGND
Use 3+ short ground wires — connect every GND the shield has to a GND on the S3, shortest leads you've got, ideally one running alongside the data bundle.

microSD · shield's onboard slot · labels SS / DO / DI / SCK

SCKGPIO 12
SS = CSGPIO 14
DI = MOSIGPIO 11
DO = MISOGPIO 13
⚠️ DO and DI are named from the CARD's side, so they cross over: DO → MISO (GPIO 13), DI → MOSI (GPIO 11). Just these 4 signal wires; power + ground come from the shield.

Audio · MAX98357A I2S amp · no PAM, no filter

DIN dataGPIO 38
BCLK bit clkGPIO 16
LRC word selGPIO 17
VIN5V
GNDGND
Speaker ± bothMAX out
Clean digital audio: just the 3 I2S wires (DIN/BCLK/LRC) + power + ground, speaker straight onto the amp's two output pads. Remove the PAM8302A, the 1.6k resistor and the 100nF cap — none are used now. SD/MODE and GAIN can be left as-is (default = (L+R)÷2, 9 dB). The firmware build for this is mini_tv_av_max98357 (standard I2S).

Firmware · mini_tv_av_max98357.ino

The full Arduino sketch — MJPEG video player + resistive touch + per-channel audio through the MAX98357A. Board: ESP32S3 Dev Module · PSRAM OPI PSRAM · Flash 16MB · USB CDC On Boot. Libraries: LovyanGFX · JPEGDEC · ESP8266Audio · SD · Preferences.

2.4″ Mini-TV — visual wiring mock-up (every connection)

WIRING DIAGRAM · 2.4″ MINI-TV ESP32-S3 · 8-bit PARALLEL ILI9341 · onboard SD · MAX98357A · resistive touch shares RS/D0/D1/CS 5V / 3V3 GND Data bus D0–D7 Control (RS/CS/WR/RD/RST) microSD SPI Audio I2S speaker greyed = unused pin ESP32-S3-WROOM ESP32-S3 N16R8 3V33V3RST 4567 151617188 346 91011121314 5VGND GND4344 12424140 3938373635 045484721 2019GND5V 2.4″ ILI9341 · 8-bit parallel + touch VCCGNDLED D0D1D2D3D4D5D6D7 RS/DCCSWRRDRST microSD (shield onboard · HSPI) VCCGNDSCKMISO(DO)MOSI(DI)CS(SS) MAX98357A · I2S amp LRCBCLKDIN GAIN (n/c)SD (n/c)GNDVin SPEAKER