| Product (PinMap) | SOC | Flash | PSRAM | Resolution | Size |
|---|---|---|---|---|---|
| T-Display-S3 | ESP32-S3R8 | 16MB | 8MB(OPI) | 170x320 | 1.9 Inch |
| T-Display-S3-Touch | ESP32-S3R8 | 16MB | 8MB(OPI) | 170x320 | 1.9 Inch |
| T-Display-S3-MIDI |
./examples/
βββ Arduino_GFXDemo # Arduino_GFX example
βββ Arduino_GFX_PDQgraphicstest # Arduino_GFX example
βββ GetBatteryVoltage # Get battery voltage example
βββ I2CScan # Scan for external devices using I2C
βββ ImageScroll # Image scrolling example by @Rudi Ackermann
βββ MPR121TouchSensor # Example of using MPR121 capacitive touch
βββ PCBClock # TFT_eSPI PCBClock example by @VolosR
βββ PokerS3 # TFT_eSPI PokerS3 example by @VolosR
βββ SerialExample # Example of using serial communication
βββ T-Display-S3-MIDI # T-Display-S3-MIDI Shield example
βββ T-Display-S3-BLE-Receiver # Wireless BLE MIDI receiver with piano display (ESP32_Host_MIDI) by @sauloverissimo
βββ T-Display-S3-BLE-Sender # BLE MIDI sender with auto-play sequences (ESP32_Host_MIDI) @sauloverissimo
βββ T-Display-S3-Piano # USB MIDI Piano visualizer with chord detection (ESP32_Host_MIDI + Gingoduino) @sauloverissimo
βββ T-Display-S3-Piano-Debug # MIDI event monitor with raw packet inspector (ESP32_Host_MIDI) @sauloverissimo
βββ T-Display-S3-Gingoduino # Real-time chord detection and harmonic analysis (ESP32_Host_MIDI + Gingoduino) @sauloverissimo
βββ T-Display-S3-Queue # MIDI event queue visualizer for debugging (ESP32_Host_MIDI) @sauloverissimo
βββ T-Display-S3-USB-Device # BLE-to-USB MIDI bridge β T-Display-S3 as USB MIDI interface (ESP32_Host_MIDI) @sauloverissimo
βββ T-Display-S3-Music-Explorer # Interactive music theory explorer with audio synthesis (Gingoduino) @sauloverissimo
βββ TFT_Rainbow # TFT_eSPI example
βββ factory # Factory example
βββ lv_demos # LVGL demo
βββ nes # NES game emulator
βββ ota # Over-the-air upgrade example
βββ sd # T-Display-TF Shield example
βββ tft # TFT_eSPI example
βββ touch_test # Capacitive touch test example
βββ usb_hid_pad # Capacitive Touch Screen Simulation USB HID Example
βββ ULP_ADC # ADC detection for ULP-FSM (arduino_esp32 version: 3.0.0-rc3)
βββ ULP_Count # Register counting for ULP-FSM (arduino_esp32 version: 3.0.0-rc3)- Install Visual Studio Code and Python.
- Search for the
PlatformIOplugin in the VS Code extension marketplace and install it. - After installation, restart VS Code.
- In VS Code, select
File>Open Folder> choose theT-Display-S3directory. - Wait for third-party dependent libraries to finish installing.
- Open the
platformio.inifile. - Uncomment one of the lines
default_envs = xxxxβ make sure only one line is active. - Click the (checkmark) icon in the lower left corner to compile.
- Connect the board to your computer via USB.
- Click (arrow) to upload firmware.
- Click (plug icon) to monitor serial output.
- If upload fails or the USB device keeps flashing, check the FAQ below.
Tip
If you encounter unexpected build errors, try re-cloning (or re-downloading) this repository first. Before compiling, click the Clean button in the PlatformIO toolbar to remove stale build artifacts, then try building again.
-
Install Arduino IDE.
-
In Arduino Preferences, on the Settings tab, enter the following URL in the
Additional boards manager URLsinput box:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.jsonNote: The test phase uses version 2.0.14. Versions above 2.0.14 may not work correctly β please downgrade if you encounter issues. As of 2024/08/02, TFT_eSPI does not work on versions higher than 2.0.14 (see TFT_eSPI#3329).
-
Download
T-Display-S3and move it to your Arduino library folder (e.g.C:\Users\YourName\Documents\Arduino\libraries). -
Copy all folders in the lib folder to your Arduino library folder.
-
Navigate to the
T-Display-S3/examplesdirectory. -
Select any example and double-click the
.inofile to open it. -
In Arduino IDE, go to
Toolsand configure the following:Arduino IDE Setting Value Board ESP32S3 Dev Module Port Your port USB CDC On Boot Enable CPU Frequency 240MHz (WiFi) Core Debug Level None USB DFU On Boot Disable Erase All Flash Before Sketch Upload Disable Events Run On Core1 Flash Mode QIO 80MHz Flash Size 16MB (128Mb) Arduino Runs On Core1 USB Firmware MSC On Boot Disable Partition Scheme 16M Flash (3M APP/9.9MB FATFS) PSRAM OPI PSRAM Upload Mode UART0/Hardware CDC Upload Speed 921600 USB Mode CDC and JTAG Options in bold are required. Others should be selected based on your actual conditions.
-
Click
Uploadand wait for compilation and writing to complete. -
If upload fails or the USB device keeps flashing, check the FAQ below.
- You can also choose
LilyGo T-Display-S3as the board, but the partition table is fixed to 16M Flash (3M APP/9.9MB FATFS). - T-Display-S3 Arduino IDE Record
For the ESP-IDF version of T-Display-S3 examples, see LilyGo-Display-IDF.
| Name | GPIO | Note |
|---|---|---|
| LCD BL | 38 | Backlight |
| LCD D0 | 39 | |
| LCD D1 | 40 | |
| LCD D2 | 41 | |
| LCD D3 | 42 | |
| LCD D4 | 45 | |
| LCD D5 | 46 | |
| LCD D6 | 47 | |
| LCD D7 | 48 | |
| LCD RST | 5 | Reset |
| LCD CS | 6 | Chip Select |
| LCD DC | 7 | Data/Command |
| LCD WR | 8 | Write |
| LCD RD | 9 | Read |
| Power On | 15 | LCD power control |
| Button 1 | 0 | BOOT button |
| Button 2 | 14 | |
| Battery Volt | 4 | ADC |
| IIC SCL | 17 | |
| IIC SDA | 18 | |
| Touch INT | 16 | Touch interrupt |
| Touch RES | 21 | Touch reset |
| SD CMD | 13 | SD card |
| SD CLK | 11 | SD card |
| SD D0 | 12 | SD card |
Important
Note: GPIO15 is the peripheral power control pin. You must set it HIGH before using the board, otherwise the LCD and other peripherals will not work. For battery-powered usage:
pinMode(15, OUTPUT);
digitalWrite(15, HIGH);SD card pins (SD CMD/CLK/D0) are only available on boards with the SD Shield add-on. The standard T-Display-S3 board does not have an onboard SD card slot.
The battery ADC pin can only read the battery voltage when the USB-C port is not plugged in; it cannot read the battery voltage after the USB-C port is plugged in.
- BLE Examples
- WiFi Examples
- SPIFFS Examples
- FFat Examples
- For more ESP32 chip function examples, see arduino-esp32-libraries
| Product (PinMap) | Schematic | Dimensions | PCB 3D | PinMap |
|---|---|---|---|---|
| T-Display-S3 | schematic | DWG | STP | PinMap |
| T-Display-S3-Touch | schematic | DWG | STP | PinMap |
| T-Display-S3-MIDI | schematic | N.A | N.A | N.A |
-
The screen does not light up when using battery.
- When T-Display-S3 is powered by battery, GPIO15 must be set to HIGH to turn on the backlight.
- Add the following at the beginning of
setup():void setup() { // Turn on display power pinMode(15, OUTPUT); digitalWrite(15, HIGH); }
-
The program uploads successfully, but nothing is displayed on the screen.
- If you are using TFT_eSPI, try running
Arduino_GFXDemofirst. If nothing is displayed, the issue is likely with the hardware. - If
Arduino_GFXDemoworks but TFT_eSPI does not, theUser_Setup_Selectconfiguration may have been overwritten. See FAQ #3 to reconfigure TFT_eSPI.
- If you are using TFT_eSPI, try running
-
How to update TFT_eSPI or verify the pin configuration is correct?
- Search for TFT_eSPI in the Arduino IDE Library Manager and click Update.
- Navigate to the TFT_eSPI installation folder (e.g.
C:\Users\YourName\Documents\Arduino\libraries\TFT_eSPI). - Open
User_Setup_Select.h, comment out (or delete) the default#include <User_Setup.h>line. - Find
Setup206_LilyGo_T_Display_S3.h, uncomment it, save, and close:#include <User_Setups/Setup206_LilyGo_T_Display_S3.h> // LilyGo T-Display S3 (ESP32S3 + ST7789 170x320 TFT)
-
Cannot upload any sketch β please enter upload mode manually.
- Connect the board via USB cable.
- Press and hold the BOOT button.
- While holding BOOT, press the RST button.
- Release RST.
- Release BOOT
- Upload the sketch.
- Press RST to exit download mode.
-
If you use an external power supply instead of USB-C, please disable the CDC option. The board waits for USB access on startup when CDC is enabled.
- Arduino IDE:
Tools>USB CDC On Boot>DisableDisabling USB CDC turns off Serial redirection to USB-C. Serial output will come from GPIO43 and GPIO44 instead.
- PlatformIO: add the following to
platformio.ini:build_flags = ; -DARDUINO_USB_CDC_ON_BOOT=1 ; Enable: prints and waits for terminal on startup -UARDUINO_USB_CDC_ON_BOOT ; Disable: no blocking on startup
- Arduino IDE:
-
If none of the above works, flash the factory firmware for quick verification. See here.
-
Can I use an external 5V pin for power? See issues/205.
-
How to adjust the charging current? The default charging current is 500mA. See issues/230.
| Function | Color |
|---|---|
| Charge LED | Red |
| V3V Indicator | Green |
- Flashes or dimly lights when no battery is connected.
- Remains on while charging.
- Turns off when fully charged.
- In USB mode, the green indicator stays on.
- In battery power mode, GPIO15 lights up when high and turns off when low.
- V3V controls the V3V output of the header pins and provides power to the screen.
