Waveshare ESP32-S3-Touch-LCD-2.1 is a round 2.1″ (480 × 480) touch display with an ESP32-S3 chip right on the back. It runs projects such as MeteoPlaneRadar or a smart clock for Home Assistant.
Most of the chip’s pins are taken by the display, the TF card and the onboard sensors. For your own expansions, three connectors remain on the back: 12-pin SH1.0, I2C and UART.
Specifications
- ESP32-S3R8: 2 Xtensa LX7 cores up to 240 MHz, 8 MB PSRAM, 16 MB flash
- round 2.1″ IPS display 480 × 480 (ST7701, parallel RGB), CST820 capacitive touch
- QMI8658 IMU, PCF85063 RTC, TCA9554 expander, buzzer, TF card slot
- Wi-Fi + Bluetooth LE, IPEX connector for an external antenna
- SH1.0 connectors: 12-pin (USB, I2C, UART, GPIO0), I2C and UART
- 2× USB-C (native USB and USB-UART converter), Li-Po charger, power switch
- 75 mm diameter (display bezel)
The diagram shows the back of the board as you see it when it is flipped display-side down. The connector pins are numbered the way Waveshare numbers them: on the 12-pin connector, pin 1 (GND) is next to the battery connector and the buttons.
GPIO7 and GPIO15 (I2C) are on both the 12-pin connector and the I2C connector – it is the same bus that the board’s touch controller, IMU, RTC and expander are on. The same goes for GPIO43 and GPIO44 (UART0) on the 12-pin connector and the UART connector.
Pinout and pin table
Hover over a pin in the diagram or a table row; use the filter to highlight a bus. You can download the pinout as PNG or SVG.
| Pin | Name | Direction | UART | I2C | SPI | ADC | Touch | Note |
|---|---|---|---|---|---|---|---|---|
| 12-pin connector 1 | GND | – | ||||||
| 12-pin connector 2 | VBUS | input/output | 5 V from the USB connector (or 5 V board power) | |||||
| 12-pin connector 3 | GPIO19 | input/output | ADC2_CH8 | USB D− (native USB, second USB-C connector) | ||||
| 12-pin connector 4 | GPIO20 | input/output | ADC2_CH9 | USB D+ (native USB, second USB-C connector) | ||||
| 12-pin connector 5 | GND | – | ||||||
| 12-pin connector 6 | 3V3 | output | 3.3 V output from the board's regulator | |||||
| 12-pin connector 7 | GPIO7 | input/output | SCL | ADC1_CH6 | T7 | I2C SCL. The same bus on the board carries the CST820 touch (0x15), TCA9554 expander (0x20), PCF85063 RTC (0x51) and QMI8658 IMU (0x6B) – choose your own sensors with a different address. Cannot be used as general-purpose pin GPIO7. | ||
| 12-pin connector 8 | GPIO15 | input/output | SDA | ADC2_CH4 | I2C SDA, bus shared with the onboard touch, expander, RTC and IMU (addresses 0x15, 0x20, 0x51, 0x6B, 0x7E). Cannot be used as general-purpose pin GPIO15. | |||
| 12-pin connector 9 | GPIO43 | input/output | TX | UART0 TX. The UART connector is connected to the chip via the FSUSB42 switch only when there is no cable in the USB-UART (USB-C UART) connector – otherwise UART0 goes to the CH343 converter. | ||||
| 12-pin connector 10 | GPIO44 | input/output | RX | UART0 RX – via the FSUSB42 switch, only with no cable in the USB-UART connector. | ||||
| 12-pin connector 11 | GND | – | ||||||
| 12-pin connector 12 | GPIO0 | input/output | BOOT button. Strapping pin – logic 0 at boot = download mode | |||||
| I2C 1 | GPIO7 | input/output | SCL | ADC1_CH6 | T7 | I2C SCL. The same bus on the board carries the CST820 touch (0x15), TCA9554 expander (0x20), PCF85063 RTC (0x51) and QMI8658 IMU (0x6B) – choose your own sensors with a different address. Cannot be used as general-purpose pin GPIO7. | ||
| I2C 2 | GPIO15 | input/output | SDA | ADC2_CH4 | I2C SDA, bus shared with the onboard touch, expander, RTC and IMU (addresses 0x15, 0x20, 0x51, 0x6B, 0x7E). Cannot be used as general-purpose pin GPIO15. | |||
| I2C 3 | 3V3 | output | 3.3 V output from the board's regulator | |||||
| I2C 4 | GND | – | ||||||
| UART 1 | GPIO44 | input/output | RX | UART0 RX – via the FSUSB42 switch, only with no cable in the USB-UART connector. | ||||
| UART 2 | GPIO43 | input/output | TX | UART0 TX. The UART connector is connected to the chip via the FSUSB42 switch only when there is no cable in the USB-UART (USB-C UART) connector – otherwise UART0 goes to the CH343 converter. | ||||
| UART 3 | 3V3 | output | 3.3 V output from the board's regulator | |||||
| UART 4 | GND | – |
Pins used on the board
These chip pins are used by parts on the board and are not broken out:
| Pin | Function on the board |
|---|---|
| GPIO1 | LCD – SPI data for controller setup (SDA) and TF card (MOSI) |
| GPIO2 | LCD – SPI clock for controller setup (SCK) and TF card (SCLK) |
| GPIO42 | Karta TF (MISO) |
| GPIO4 | Battery voltage via 200k/100k divider (BAT_ADC) |
| GPIO6 | Display backlight (PWM) |
| GPIO16 | CST820 touch – interrupt (TP_INT) |
| GPIO38–41 | LCD RGB – HSYNC (38), VSYNC (39), DE (40), PCLK (41) |
| GPIO3, 8, 17, 18, 46 | LCD RGB – red R2, R3, R5, R4, R1 |
| GPIO9–14 | LCD RGB – green G5–G0 |
| GPIO5, 21, 45, 47, 48 | LCD RGB – blue B1, B5, B2, B4, B3 |
| GPIO33–37 | PSRAM (ESP32-S3R8) |
| EXIO1–8 | TCA9554 expander: LCD reset, touch reset, LCD CS, TF card CS, IMU interrupt (2×), RTC interrupt, buzzer |
What to watch out for
- The GPIO are not 5V tolerant.
- The onboard I2C bus uses addresses 0x15, 0x20, 0x51, 0x6B and 0x7E – your own sensor must have a different address.
- UART0 (GPIO43/44) is on the connectors only when no cable is plugged into the USB-C UART connector – otherwise a switch routes it to the converter.
- GPIO19 and GPIO20 are native USB – use them as GPIO only with no cable in the USB connector.
- GPIO0 is the BOOT button and a strapping pin – logic 0 at boot starts download mode.
- Pin 11 of the 12-pin connector is GND (the Waveshare wiki lists it as unconnected, but the schematic and the board have it on ground).
Projects with this display
Projects and guides on chiptron.eu/:
- MeteoPlaneRadar – aircraft radar and weather radar on a round display, firmware flashed from the browser
- ESP32 Plane Radar – aircraft radar on your desk, with a variant for this display too
More pinouts
See all pinouts on the Pinouts page.