Waveshare · ESP32-S3 · 2.8" · 480×640
Waveshare ESP32-S3 Touch LCD 2.8" Type B specifications
The ESP32-S3-Touch-LCD-2.8B is the high-resolution sibling of Waveshare's 2.8-inch SPI board: instead of 240×320 it packs 480×640 pixels into the same diagonal and drives them over a 16-bit RGB interface with an ST7701 controller. Text and icons look noticeably crisper, and full-screen animations are smoother than on SPI.
Touch is handled by a GT911 capacitive controller. The ESP32-S3R8 provides 8 MB of PSRAM and 16 MB of flash, and Waveshare adds a PCF85063 RTC, a QMI8658 6-axis IMU, a buzzer, a TCA9554 I/O expander and a microSD slot on the back.
Power comes from USB-C or a lithium cell with on-board charging, through an MP1605 module rated for 2 A. A 2×12-pin 2.54 mm header plus separate UART and I2C connectors carry the remaining signals.
- Screen
- 2.8" · 480×640
- Chip
- ESP32-S3
- Memory
- 16 MB flash, 8 MB PSRAM
- Input
- capacitive touch
Key features
- 2.8-inch 480×640, ST7701 over RGB
- Capacitive touch (GT911)
- ESP32-S3R8: 8 MB PSRAM, 16 MB flash
- PCF85063 RTC, QMI8658 IMU, buzzer
- LiPo charging, 2 A power module
- 2×12-pin header, UART and I2C connectors, microSD
Specifications
| Manufacturer | Waveshare |
|---|---|
| Screen size | 2.8" |
| Resolution | 480×640 px |
| Colour depth | 16-bit |
| Display controller | ST7701 (RGB Parallel + 3-wire SPI init) |
| Display interface | RGB565 Parallel (DPI) + SPI init sequence |
| Touch | GT911 (I2C) |
| 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, RGB interface (RGB565, 65K colours in practice) |
| Touch | Capacitive, GT911 (I2C) |
| RTC | PCF85063A with backup battery header |
| IMU | QMI8658 6-axis |
| Audio | On-board buzzer |
| Power | MP1605GTF-Z module, 2 A max; lithium charge manager |
| Expansion | 2×12-pin 2.54 mm header, UART and I2C connectors |
| Dimensions | 52.9 × 71.3 mm with touch |
| Development platforms (manufacturer) | Arduino IDE, ESP-IDF 5.3.1+, LVGL, SquareLine Studio |
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 | LCD_MOSI (init SPI) |
| GPIO 2 | LCD_CLK (init SPI) |
| GPIO 3 | LCD_DATA12 (RGB) |
| GPIO 4 | BAT_ADC (battery voltage) |
| GPIO 5 | LCD_DATA0 (RGB) |
| GPIO 6 | Backlight (LCD_Backlight_PIN) |
| GPIO 7 | I2C_SCL (Touch/RTC/IMU) |
| GPIO 8 | LCD_DATA13 (RGB) |
| GPIO 9 | LCD_DATA10 (RGB) |
| GPIO 10 | LCD_DATA9 (RGB) |
| GPIO 11 | LCD_DATA8 (RGB) |
| GPIO 12 | LCD_DATA7 (RGB) |
| GPIO 13 | LCD_DATA6 (RGB) |
| GPIO 14 | LCD_DATA5 (RGB) |
| GPIO 15 | I2C_SDA (Touch/RTC/IMU) |
| GPIO 16 | TOUCH_INT (GT911) |
| GPIO 17 | LCD_DATA15 (RGB) |
| GPIO 18 | LCD_DATA14 (RGB) |
| GPIO 19 | USB D- (on the header, usable as GPIO only without native USB) |
| GPIO 20 | USB D+ (on the header, usable as GPIO only without native USB) |
| GPIO 21 | LCD_DATA4 (RGB) |
| GPIO 38 | LCD_HSYNC |
| GPIO 39 | LCD_VSYNC |
| GPIO 40 | LCD_DE |
| GPIO 41 | LCD_PCLK |
| GPIO 42 | SD_MISO (microSD; MOSI / SCK share GPIO 1 / 2 with the LCD init bus, CS on EXIO4) |
| GPIO 45 | LCD_DATA1 (RGB) |
| GPIO 46 | LCD_DATA11 (RGB) |
| GPIO 47 | LCD_DATA3 (RGB) |
| GPIO 48 | LCD_DATA2 (RGB) |
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 — also on the 2x12 pin header |
| GPIO 43/TX | GPIO, UART_TX | UART0 TX — on the UART connector and the 2x12 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 2x12 pin header (only when the USB-to-UART Type-C port is not connected) |
- 2x12 pin header — GPIO 0, 43, 44 (IO0, TX, RX)
The header also carries USB D- / D+ (GPIO 19 / 20) and the I2C bus (GPIO 15 / 7) — GPIO 0 is the BOOT button (keep it high at power-up)
- UART connector — GPIO 43, 44 (TX, RX)
Only when the USB-to-UART Type-C port is not connected
- I2C connector — GPIO 15, 7 (SDA, SCL)
Same I2C bus as the touch controller, the IO expander, the RTC and the IMU (addresses 0x15/0x5D, 0x20, 0x51, 0x6B, 0x7E taken)
Good to know before you start
- The I2C bus (GPIO 15/7) is shared by touch, I/O expander, RTC and IMU — 0x15/0x5D, 0x20, 0x51, 0x6B and 0x7E are taken, and Waveshare notes these pins cannot be used as general GPIO.
- Practically all ESP32-S3 pins are used by the RGB display; expand over I2C.
- Waveshare's Arduino examples need a special board package (esp32-XIP); the LCD Ultra Pro export README lists the settings it was compiled with.
- The microSD slot is on the rear side.
What it is good for
- •Detailed dashboards in a small format
- •Smooth animated interfaces
- •Portable instruments with a clock
- •Smart home panels with sharp text
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° |
| 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
What is the difference between the Waveshare 2.8-inch and 2.8B?
The 2.8B uses a 480×640 RGB display (ST7701) and GT911 touch, while the standard 2.8-inch is a 240×320 SPI display (ST7789) with CST328 touch and audio.
Which I2C addresses are used on the 2.8B?
0x15/0x5D (touch), 0x20 (I/O expander), 0x51 (RTC), 0x6B and 0x7E (IMU).
Does it have a battery charger?
Yes, an MX1.25 header for a 3.7 V lithium cell with an on-board charge manager.
Sources
Specifications cross-checked against the manufacturer’s documentation (last checked 2026-10-27):
Last updated: