LilyGO TTGO T-Display: Your ESP32 Gateway to Visual Projects
A compact ESP32 development board featuring a vibrant TFT color display and integrated controls, perfect for interactive visual projects.

The LilyGO TTGO T-Display is a highly integrated development board based on the popular ESP32 microcontroller. Released around 2019, it quickly gained traction among makers for its unique combination of a powerful ESP32 chip and an embedded TFT color display, making it ideal for projects that require a visual interface without the need for external screens. This board bridges the gap between simple microcontrollers and more complex single-board computers, offering Wi-Fi and Bluetooth connectivity alongside a user-friendly display.
At its heart is the Espressif Systems ESP32-WROOM-32 module, a versatile SoC that includes a dual-core Tensilica LX6 microprocessor, Wi-Fi, and Bluetooth capabilities. This makes the TTGO T-Display suitable for a wide range of IoT applications, from weather stations and smart home controllers to data loggers and simple gaming devices. The inclusion of the ST7789V driver for the 1.14-inch color display is a key feature, allowing for graphical output directly from the microcontroller.
The board's design prioritizes ease of use for rapid prototyping. It includes a USB-C connector for power and programming, a reset button, and a boot button, simplifying the development workflow. The pin headers are well-labeled, exposing most of the ESP32's GPIOs for connecting external sensors and actuators. This makes it a compelling choice for students learning embedded systems, hobbyists looking to create visually appealing projects, and engineers prototyping IoT solutions.
Watch
Related video, embedded from YouTube.
Specifications
| Microcontroller / SoC | ESP32-WROOM-32 |
| Architecture | Dual-core Tensilica LX6 |
| Clock speed | Up to 240 MHz |
| Flash / Storage | 4 MB (typically) |
| RAM / SRAM | 520 KB SRAM |
| Operating voltage | 3.3V |
| Digital I/O pins | 26 (exposed via headers) |
| Analog / ADC | 12-bit ADC (multiple channels available) |
| PWM | Yes (multiple channels) |
| Connectivity | Wi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR and BLE |
| USB | USB-C (for power and programming) |
| Power input | 5V via USB-C or VIN pin, 3.3V regulator on board |
| Dimensions | Approx. 52mm x 25mm (PCB) |
Pinout & pin functions
| Pin | Function |
|---|---|
| 3V3 | 3.3V Power Output |
| GND | Ground |
| EN | Enable (Reset) |
| VP / GPIO34 | Analog Input (ADC1_CH6) |
| VN / GPIO35 | Analog Input (ADC1_CH7) |
| G36 / GPIO36 | Analog Input (ADC1_CH0) |
| G39 / GPIO39 | Analog Input (ADC1_CH3) |
| G34 / GPIO34 | Analog Input (ADC1_CH6) |
| G35 / GPIO35 | Analog Input (ADC1_CH7) |
| G32 / GPIO32 | GPIO, Touch, ADC1_CH4 |
| G33 / GPIO33 | GPIO, Touch, ADC1_CH5 |
| G25 / GPIO25 | GPIO, DAC1, ADC1_CH8 |
| G26 / GPIO26 | GPIO, DAC2, ADC1_CH9 |
| G27 / GPIO27 | GPIO, Touch, ADC1_CH7 |
| G14 / GPIO14 | GPIO, SPI_HSCK |
| G12 / GPIO12 | GPIO, SPI_MISO |
| G13 / GPIO13 | GPIO, SPI_MOSI |
| G15 / GPIO15 | GPIO, SPI_CS, UART2_RX |
| G0 / GPIO0 | Boot Button Input, GPIO |
| G2 / GPIO2 | GPIO, Touch |
| G4 / GPIO4 | GPIO, Touch |
| G16 / GPIO16 | GPIO, I2S RX |
| G17 / GPIO17 | GPIO, I2S TX |
| G5 / GPIO5 | GPIO, SPI_CS |
| G18 / GPIO18 | GPIO, PWM |
| G19 / GPIO19 | GPIO, UART0_RX, I2S BCK |
| G21 / GPIO21 | GPIO, I2C SDA |
| G22 / GPIO22 | GPIO, I2C SCL |
| G23 / GPIO23 | GPIO, UART0_TX, I2S MCK |
| G1 / GPIO1 | UART0_TX |
| G3 / GPIO3 | UART0_RX |
| SCK | SPI Clock (Shared with GPIO14) |
| MISO | SPI Master In Slave Out (Shared with GPIO12) |
| MOSI | SPI Master Out Slave In (Shared with GPIO13) |
| CS | SPI Chip Select (Shared with GPIO15 or GPIO5) |
| SDA | I2C Data (Shared with GPIO21) |
| SCL | I2C Clock (Shared with GPIO22) |
| TX | UART TX (Shared with GPIO1 or GPIO23) |
| RX | UART RX (Shared with GPIO3 or GPIO15) |
| TFT_DC | TFT Display Command/Data Pin |
| TFT_RST | TFT Display Reset Pin |
| TFT_BL | TFT Display Backlight Control (PWM) |
| TFT_CS | TFT Display Chip Select |
| TFT_MOSI | TFT Display MOSI |
| TFT_SCK | TFT Display SCK |
| TFT_LED | TFT Display LED Anode (Backlight) |
Wiring & circuit basics
Powering the LilyGO TTGO T-Display is straightforward via its USB-C port, which supplies 5V. The board has an onboard 3.3V regulator to power the ESP32 and its peripherals. If powering via the VIN pin, ensure you supply a regulated 5V. Avoid connecting higher voltages directly to the 3.3V pin, as this can damage the ESP32. The board's GPIO pins operate at 3.3V logic levels. When interfacing with 5V components (like some sensors or older modules), always use a logic level shifter to prevent damage to the ESP32.
Connecting an LED is a common beginner project. To do this, connect a current-limiting resistor (e.g., 220-330 Ohm) to a digital GPIO pin (like GPIO2) and then connect the other end of the resistor to the anode (longer leg) of an LED. Connect the cathode (shorter leg) of the LED to a GND pin. When the GPIO pin is set HIGH (3.3V), current flows through the resistor and LED, illuminating it. When set LOW (0V), the LED turns off.
For I2C communication, the TTGO T-Display uses GPIO21 for SDA (Serial Data) and GPIO22 for SCL (Serial Clock). Connect these pins directly to the SDA and SCL pins of your I2C sensor. Remember that I2C devices often require pull-up resistors on both SDA and SCL lines to the 3.3V supply. Many breakout boards include these, but if you're connecting a bare sensor, you might need to add them externally (typically 4.7k Ohm).
Programming & getting started
The LilyGO TTGO T-Display can be programmed using a variety of tools. The most popular is the Arduino IDE, which offers extensive libraries and community support. You'll need to add the ESP32 board support to your Arduino IDE via the Board Manager. For more advanced users, ESP-IDF (Espressif IoT Development Framework) provides direct access to the ESP32's features. MicroPython and CircuitPython are also excellent choices for rapid prototyping, offering a Python-based environment that's easy to learn and use.
To upload your first sketch using the Arduino IDE: 1. Install the ESP32 board support package. 2. Select the 'TTGO T-Display' or a similar ESP32 Dev Module from the Board menu. 3. Connect the board to your computer via USB-C. 4. Select the correct COM port. 5. Write or load a sketch (e.g., a simple 'Blink' example, but adapted for the display). 6. Click the Upload button. The board will typically enter bootloader mode automatically, or you may need to press the BOOT button while clicking Upload.