The bigger 2.8" ILI9341 240×320 SPI touch panel (V1.1) driven by the ESP32-S3, with a
dedicated external microSD reader on its own SPI bus and the MAX98357A I2S amp for audio. Tap a row
to tick it off as you wire; pick the colour of the wire you actually used from the middle dropdown. Ticks &
colours are saved on this device.
ESP32-S3
N16R8
⇄
2.8" ILI9341
SPI · 240×320 · XPT2046 touch
+
microSD
external SPI reader
+
MAX98357A
I2S amp
Pins verified0 / 0
Tap a row to toggle · pick each wire's colour in the middle · saved on this device
Big change from the 2.4" build: that panel was 8-bit parallel; this one is
SPI (far fewer wires). The display + touch share one SPI bus (SCK/MOSI/MISO, separate chip-selects); the
microSD gets its own SPI bus on the external reader for reliability. All 3.3 V logic; the boards' onboard
regulators accept 5 V on VCC.
Display · power & backlight
VCC5V
GNDGND
LEDbacklight — 3V3 = always on (or a GPIO to dim)3V3
Display · SPI (ILI9341)
CSLCD chip-selectGPIO 10
DCdata / command (a.k.a. RS)GPIO 9
RESETGPIO 14
SCKSPI clock (shared)GPIO 12
SDI (MOSI)data in (shared)GPIO 11
SDO (MISO)data out (shared)GPIO 13
Touch · XPT2046 (own dedicated pins — no wire sharing)
The XPT2046 is slow, so it runs on its own software-SPI — every touch pin goes to its own ESP32-S3 GPIO. No splitting wires with the display bus.
T_CLKGPIO 15
T_DINGPIO 16
T_DOGPIO 17
T_CStouch chip-selectGPIO 18
T_IRQoptional — pen interruptGPIO 8
External microSD reader · own SPI bus
Use the external reader (its own regulator + level-shifter = reliable). Leave the 2.8" board's onboard SD pads (SD_SCK/SD_MISO/SD_MOSI/SD_CS) unconnected.
USB-C breakout · power + PC card access (S3 native USB)
Wire the data lines to the S3's native USB (GPIO 20 = D+, GPIO 19 = D−) so the ESP can present the microSD to a PC as a USB drive (mass-storage mode) — load/manage shows without pulling the card. VBUS powers the whole build.
VBUS (+)5 V power in5V
GNDGND
D+USB data +GPIO 20
D−USB data −GPIO 19
USB-C notes. The D+/D− go to the S3's fixed native-USB pins (D+ = GPIO 20, D− = GPIO 19) — this becomes a case-mounted USB port that both powers the build and lets a PC read/write the SD in a firmware "USB drive" mode (the player pauses; the card can't be shared with playback at the same time). Power: this 4-pad breakout has no CC resistors, so VBUS gives 5 V reliably from a USB-A→C cable; for a C→C charger add 2× 5.1 kΩ from CC1/CC2 to GND. Don't plug this and the dev-board's own USB port in together (both are the same native USB).
Don't use GPIO 35 / 36 / 37 (octal PSRAM). GPIO 16/17/38 stay on audio. These
display/touch/SD pins are a suggested clean layout — any free GPIO works on the S3 (flexible SPI), just match the
firmware's pin defines.
Firmware · mini_tv_28_manual.ino
The 2.8″ player built on a hand-written ILI9341 SPI driver (it bypasses LovyanGFX's broken SPI
pushImage) — plays MJPEG clips from the external microSD. Board: ESP32S3 Dev Module ·
PSRAM disabled · Flash 16MB · USB CDC On Boot. Libraries: SD · JPEGDEC (SPI is built in).