Waveshare · ESP32-S3 · 2.8" · 240×320
Waveshare ESP32-S3 Touch LCD 2.8" specifications
The Waveshare ESP32-S3-Touch-LCD-2.8 is a compact 2.8-inch SPI display board that doubles as a small audio device. Next to the 240×320 ST7789 panel and a 5-point CST328 capacitive touch controller, it has a PCM5101 audio decoder with a power amplifier and a speaker connector — Waveshare suggests an 8 Ω 2 W speaker.
The ESP32-S3R8 brings 8 MB of PSRAM and 16 MB of flash, and the board adds a PCF85063 real-time clock with a backup battery header, a QMI8658 6-axis IMU, a microSD slot and a lithium battery charger with a power button and a volume button.
Its touch controller sits on its own I2C bus, separate from the RTC and IMU — a small design detail that leaves the main I2C bus calmer for your own sensors.
- Screen
- 2.8" · 240×320
- Chip
- ESP32-S3
- Memory
- 16 MB flash, 8 MB PSRAM
- Input
- capacitive touch
Key features
- 2.8-inch 240×320 TFT, ST7789, 260 cd/m²
- 5-point capacitive touch (CST328)
- PCM5101 audio with amplifier and speaker connector
- ESP32-S3R8: 8 MB PSRAM, 16 MB flash
- PCF85063 RTC, QMI8658 IMU, microSD
- LiPo charging, power and volume buttons
Specifications
| Manufacturer | Waveshare |
|---|---|
| Screen size | 2.8" |
| Resolution | 240×320 px |
| Colour depth | 16-bit |
| Display controller | ST7789 (SPI) |
| Display interface | SPI |
| Touch | CST328 (I2C, on its own separate bus) |
| Microcontroller | ESP32-S3 |
| Module | ESP32-S3R8 |
| CPU clock | 240 MHz |
| Internal SRAM | 512 KB |
| PSRAM | 8 MB |
| Flash | 16 MB |
| Wi-Fi | Yes |
| Bluetooth | Yes |
| Display type | TFT, 262K colours, max 260 cd/m² |
| Touch | Capacitive 5-point, CST328 (own I2C bus) |
| Audio | PCM5101 decoder, amplifier, speaker connector (8 Ω 2 W suggested) |
| RTC | PCF85063 with backup battery header |
| IMU | QMI8658 6-axis |
| Battery | 3.7 V lithium via MX1.25, charge manager |
| Antenna | On-board ceramic, IPEX Gen 1 option |
| Dimensions | 73.06 × 50.54 mm |
| Development platforms (manufacturer) | Arduino IDE, ESP-IDF (VS Code plugin) |
GPIO pinout
The GPIOs the board itself uses — display, touch and on-board peripherals — as published in the manufacturer’s documentation.
| GPIO | Function |
|---|---|
| GPIO 1 | I2C_SDA (CST328 touch, separate bus) |
| GPIO 2 | TOUCH_RST (CST328) |
| GPIO 3 | I2C_SCL (CST328 touch, separate bus) |
| GPIO 4 | TOUCH_INT (CST328) |
| GPIO 5 | Backlight (LCD_Backlight_PIN) |
| GPIO 6 | PWR_KEY input |
| GPIO 7 | PWR_Control (power control) |
| GPIO 9 | RTC_INT (PCF85063) |
| GPIO 10 | I2C_SCL (RTC/IMU main bus) |
| GPIO 11 | I2C_SDA (RTC/IMU main bus) |
| GPIO 12 | IMU_INT2 (QMI8658) |
| GPIO 13 | IMU_INT1 (QMI8658) |
| GPIO 14 | SD_SCK (microSD) |
| GPIO 16 | SD_MISO (microSD) |
| GPIO 17 | SD_MOSI (microSD) |
| GPIO 19 | USB D- (on the header) |
| GPIO 20 | USB D+ (on the header) |
| GPIO 21 | SD_CS (microSD) |
| GPIO 38 | I2S_LRCK (PCM5101 audio) |
| GPIO 39 | TFT_RST |
| GPIO 40 | TFT_SCLK |
| GPIO 41 | TFT_DC |
| GPIO 42 | TFT_CS |
| GPIO 45 | TFT_MOSI |
| GPIO 47 | I2S_DIN (PCM5101 audio) |
| GPIO 48 | I2S_BCK (PCM5101 audio) |
Source: www.waveshare.com. Always check against your board revision before wiring.
Free GPIOs and connectors
These GPIOs are not used by the display, touch or on-board peripherals, so you can wire your own sensors, buttons or relays to them.
| Pin | Capabilities | Note |
|---|---|---|
| GPIO 0 | GPIO, BOOT | Boot button |
| GPIO 8 | GPIO, PWM | Free / possibly BAT_ADC, needs verification |
| GPIO 15 | GPIO, PWM | On the 12-pin header (spare IO15) — ADC2, not usable as analog input while WiFi is on |
| GPIO 18 | GPIO, PWM | On the 12-pin header (spare IO18) |
| GPIO 43/TX | GPIO, UART_TX | UART0 TX — on the UART connector and the 12-pin header (only when the USB-to-UART Type-C port is not connected) |
| GPIO 44/RX | GPIO, UART_RX | UART0 RX — on the UART connector and the 12-pin header (only when the USB-to-UART Type-C port is not connected) |
- 12-pin header — GPIO 15, 18, 43, 44 (IO15, IO18, TX, RX)
The header also carries USB D- / D+ (GPIO 19 / 20) and the I2C bus (GPIO 11 / 10)
- UART connector — GPIO 43, 44 (TX, RX)
Only when the USB-to-UART Type-C port is not connected
- I2C connector — GPIO 11, 10 (SDA, SCL)
Same I2C bus as the RTC and the IMU (0x51, 0x6B, 0x7E taken) — the touch has its own bus
Good to know before you start
- Free pins on the 12-pin header are GPIO 15 and 18. GPIO 15 is ADC2 and cannot read analog values while Wi-Fi is on.
- The main I2C bus (GPIO 11/10) is shared with the RTC and IMU (0x51, 0x6B, 0x7E taken); touch has its own bus.
- UART0 on the header only works when the USB-to-UART port is not connected.
- The battery power button needs software support to switch the board off.
What it is good for
- •Internet radio and audio players with a touch UI
- •Alarm clocks using the RTC and speaker
- •Handheld controllers
- •Compact smart home panels
LVGL support in LCD Ultra Pro
| Driver status | Matched to the manufacturer’s official demo, compile-tested |
|---|---|
| Arduino export | Complete LVGL 8.4 project with the display driver |
| USB Live preview | No |
| Orientations | 0°, 90° |
| Brightness control | Hardware backlight dimming |
Pick this board in the editor and the canvas matches its exact resolution and shape. Build the interface with widgets, add events without code, try it in Live Preview, then export it as a ready-to-compile Arduino project. See the documentation for the workflow.
Frequently asked questions
Does the ESP32-S3-Touch-LCD-2.8 have a speaker output?
Yes. A PCM5101 decoder with a power amplifier drives a speaker connector; Waveshare suggests an 8 Ω 2 W speaker.
Which touch controller does it use?
A 5-point CST328 capacitive controller on its own I2C bus.
Which pins are free?
GPIO 15 and 18 on the 12-pin header, plus GPIO 0 (BOOT) and UART0 when the USB-to-UART port is unplugged.
How big is the board?
73.06 × 50.54 mm according to Waveshare.
Sources
Specifications cross-checked against the manufacturer’s documentation (last checked 2026-10-27):
Last updated: