MakerLab
ESP32LilyGO TTGO T-Display

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.

LilyGO TTGO T-Display

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 / SoCESP32-WROOM-32
ArchitectureDual-core Tensilica LX6
Clock speedUp to 240 MHz
Flash / Storage4 MB (typically)
RAM / SRAM520 KB SRAM
Operating voltage3.3V
Digital I/O pins26 (exposed via headers)
Analog / ADC12-bit ADC (multiple channels available)
PWMYes (multiple channels)
ConnectivityWi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR and BLE
USBUSB-C (for power and programming)
Power input5V via USB-C or VIN pin, 3.3V regulator on board
DimensionsApprox. 52mm x 25mm (PCB)

Pinout & pin functions

PinFunction
3V33.3V Power Output
GNDGround
ENEnable (Reset)
VP / GPIO34Analog Input (ADC1_CH6)
VN / GPIO35Analog Input (ADC1_CH7)
G36 / GPIO36Analog Input (ADC1_CH0)
G39 / GPIO39Analog Input (ADC1_CH3)
G34 / GPIO34Analog Input (ADC1_CH6)
G35 / GPIO35Analog Input (ADC1_CH7)
G32 / GPIO32GPIO, Touch, ADC1_CH4
G33 / GPIO33GPIO, Touch, ADC1_CH5
G25 / GPIO25GPIO, DAC1, ADC1_CH8
G26 / GPIO26GPIO, DAC2, ADC1_CH9
G27 / GPIO27GPIO, Touch, ADC1_CH7
G14 / GPIO14GPIO, SPI_HSCK
G12 / GPIO12GPIO, SPI_MISO
G13 / GPIO13GPIO, SPI_MOSI
G15 / GPIO15GPIO, SPI_CS, UART2_RX
G0 / GPIO0Boot Button Input, GPIO
G2 / GPIO2GPIO, Touch
G4 / GPIO4GPIO, Touch
G16 / GPIO16GPIO, I2S RX
G17 / GPIO17GPIO, I2S TX
G5 / GPIO5GPIO, SPI_CS
G18 / GPIO18GPIO, PWM
G19 / GPIO19GPIO, UART0_RX, I2S BCK
G21 / GPIO21GPIO, I2C SDA
G22 / GPIO22GPIO, I2C SCL
G23 / GPIO23GPIO, UART0_TX, I2S MCK
G1 / GPIO1UART0_TX
G3 / GPIO3UART0_RX
SCKSPI Clock (Shared with GPIO14)
MISOSPI Master In Slave Out (Shared with GPIO12)
MOSISPI Master Out Slave In (Shared with GPIO13)
CSSPI Chip Select (Shared with GPIO15 or GPIO5)
SDAI2C Data (Shared with GPIO21)
SCLI2C Clock (Shared with GPIO22)
TXUART TX (Shared with GPIO1 or GPIO23)
RXUART RX (Shared with GPIO3 or GPIO15)
TFT_DCTFT Display Command/Data Pin
TFT_RSTTFT Display Reset Pin
TFT_BLTFT Display Backlight Control (PWM)
TFT_CSTFT Display Chip Select
TFT_MOSITFT Display MOSI
TFT_SCKTFT Display SCK
TFT_LEDTFT 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.

Project ideas

Mini Weather StationDisplay current temperature, humidity, and forecast on the TFT screen using sensors like the BME280 and Wi-Fi for online data retrieval. Uses I2C for sensors and Wi-Fi for network connectivity.
Customizable Clock/AlarmBuild a smart clock that displays time, date, and alarms, with options to set alarms via buttons or a web interface. Leverages the display, GPIOs for buttons, and Wi-Fi for NTP time synchronization.
ESP32 Game ConsoleCreate a simple retro-style game (like Tetris or Snake) playable on the TFT screen, controlled by the onboard buttons or external ones. Uses the display, GPIOs for controls, and the ESP32's processing power.
IoT Sensor HubConnect multiple sensors (e.g., soil moisture, light, motion) and display their readings on the screen. Transmit data wirelessly to a cloud platform or local server. Uses various GPIOs, ADC, I2C/SPI, and Wi-Fi/Bluetooth.
Visual Control PanelDesign a dashboard to monitor and control smart home devices (e.g., lights, thermostats) via Wi-Fi or Bluetooth. The display provides a user interface, and GPIOs can be used for physical controls.
Data Logger with DisplayRecord data from sensors over time and visualize trends directly on the TFT screen. Stores data internally or sends it to a remote server. Utilizes display, various sensor interfaces, and storage/networking capabilities.

Buying tips & gotchas

When purchasing the LilyGO TTGO T-Display, be aware of potential clones or variants that might have slightly different display drivers or pinouts, though the core ESP32 functionality usually remains the same. Always check the product description carefully. For powering, a standard 5V USB power supply or power bank is sufficient. For more demanding applications or driving multiple external components, ensure your power source can provide at least 1A. Accessories like jumper wires, breadboards, and compatible sensors (I2C, SPI) are essential for expanding its capabilities. Be mindful of the 3.3V logic level; use level shifters when interfacing with 5V systems.