LILYGO TTGO T-Display: el ESP32 que muestra el resultado al instante
Una placa de desarrollo corriente sabe hacer muchas cosas, pero habla con quien la programa sobre todo mediante líneas en el Serial Monitor. La LILYGO TTGO T-Display tiene una forma más convincente de hacerlo: una pantalla en color integrada. Conectas un sensor y ves las lecturas al momento. Recibes datos por Wi‑Fi y muestras una gráfica o un estado. Montas un instrumento autónomo y ya no hace falta añadir una pantalla aparte, llevarle la alimentación ni buscarle sitio dentro de la caja.
Justo por eso la T-Display resulta más interesante que «una placa ESP32 más». Es casi un frontal de aparato terminado: microcontrolador, pantalla, dos botones, USB‑C y carga de una Li‑Po de un elemento en una sola placa estrecha.

De qué placa se habla exactamente
El nombre T-Display se ha convertido en toda una familia, así que la primera trampa técnica es tomar las características del modelo equivocado. Aquí se trata de la LILYGO/TTGO T-Display clásica sobre el ESP32 original, con pantalla de 1,14 pulgadas y resolución de 135 × 240 puntos. No es la T-Display-S3: la S3 lleva otro procesador, pantalla de 1,9 pulgadas, otra conexión de pantalla, otros GPIO y sí tiene PSRAM.
La documentación actual de LILYGO indica para la placa clásica el SoC ESP32-D0WDQ6. El tamaño de la Flash y el chip USB–UART pueden variar entre lotes, de modo que la descripción del vendedor o el código de ejemplo de otra persona no sustituyen a comprobar la placa que tienes delante.
Características técnicas
| Elemento | Característica | Qué significa en la práctica |
|---|---|---|
| Microcontrolador | ESP32-D0WDQ6 | El ESP32 clásico, no un S2/S3/C3 |
| Procesador | 2 núcleos Xtensa LX6, hasta 240 MHz | Suficiente para Wi‑Fi, interfaz, sensores y lógica de fondo a la vez |
| Memoria | 520 KB de SRAM interna, sin PSRAM | Las imágenes grandes y el doble búfer exigen medir bien la memoria |
| Flash | Normalmente 4 MB; existe una variante de 16 MB | Hay que comprobar el tamaño antes de elegir la tabla de particiones |
| Conectividad inalámbrica | Wi‑Fi 2,4 GHz 802.11 b/g/n; Bluetooth 4.2 BR/EDR y BLE | Sirve para MQTT, HTTP, ESP‑NOW, balizas BLE y comunicación con el móvil |
| Pantalla | TFT IPS de 1,14″, controlador ST7789V | Pantalla en color con buenos ángulos de visión |
| Resolución | 135 × 240 en vertical; normalmente 240 × 135 en horizontal | Cómoda para una magnitud grande, varios estados o una gráfica pequeña |
| Interfaz de la pantalla | SPI de 4 hilos; el perfil de fábrica de TFT_eSPI la mueve a 40 MHz | La pantalla es rápida, pero ocupa varios GPIO |
| Control | Dos botones: GPIO0 y GPIO35 | Bastan para un menú, pasar pantallas, confirmar o despertar el equipo |
| Alimentación | USB‑C o Li‑Po de un elemento; carga integrada | La base de un instrumento portátil sin módulo de carga aparte |
| Control de la batería | ADC en GPIO34, circuito de medida habilitado por GPIO14 | La carga se puede mostrar en la propia interfaz |
| USB | USB‑C a través de un puente USB–UART | El ESP32 original no tiene USB Device nativo; el puerto sirve para alimentar, programar y la comunicación serie |
| USB–UART | CH9102 en lo que se vende hoy; en revisiones antiguas aparecían CP210x | Ante un problema de controlador hay que mirar el VID/PID real y no adivinar por el nombre de la placa |
| Niveles lógicos | 3,3 V; los GPIO no toleran 5 V | Una señal de 5 V necesita adaptación de niveles |
| Dimensiones | Unos 51,5 × 25 mm | La placa es bastante más estrecha que la mayoría de montajes «DevKit + TFT aparte» |
| Entornos de desarrollo | Arduino IDE, PlatformIO, ESP-IDF; MicroPython es posible | Arduino para empezar rápido, ESP-IDF para un proyecto más riguroso |
Un par de cifras ayudan a captar la escala. Un fotograma completo en formato RGB565 ocupa 135 × 240 × 2 = 64 800 bytes, es decir, unos 63,3 KiB. Dos búferes de fotograma ya son cerca de 126,6 KiB, sin contar la pila Wi‑Fi, las tareas y los datos de la aplicación. Por eso en esta placa resultan especialmente útiles el redibujado parcial, los sprites de tamaño moderado y pintar solo las zonas que han cambiado.
Por qué la pantalla integrada vale de verdad
Aquí la pantalla es útil como herramienta de desarrollo, no como adorno. Acorta el camino que va del prototipo a algo que se puede usar sin ordenador.
- Respuesta inmediata. El propio aparato muestra si se ha conectado al Wi‑Fi, qué dirección IP ha recibido, qué ha devuelto el sensor y por qué no ha actuado el elemento de salida.
- Interfaz local. Dos botones y una pantalla en color bastan para un menú, varias páginas, avisos y ajustes sencillos sin aplicación móvil.
- Diagnóstico in situ. Si el sensor está en un cuadro eléctrico, un invernadero o una máquina, los parámetros clave se ven junto al equipo y no solo en la nube.
- Prototipo compacto y terminado. Añadiendo batería y caja, la T-Display ya parece un aparato de bolsillo, un mando o un panel de monitorización en miniatura.
- Demostración rápida de la idea. A un cliente o a un compañero le resulta más fácil valorar una pantalla viva con estados que un chorro de números en un terminal.
Pero la pantalla también impone límites. Es pequeña y no es táctil, y seis señales del ESP32 ya están ocupadas por ella. Una retroiluminación siempre encendida afecta de forma notable a la autonomía. Para gráficos complejos falta PSRAM, así que la T-Display luce mejor no como un «microteléfono», sino como una interfaz clara hecha de unos pocos indicadores bien elegidos.
Qué hay ya conectado al ESP32
| Función en la placa | GPIO | Qué conviene saber |
|---|---|---|
| TFT MOSI | 19 | Datos hacia el ST7789V |
| TFT SCLK | 18 | Línea de reloj de la pantalla |
| TFT CS | 5 | Selección de la pantalla; a la vez pin de strapping de arranque del ESP32 |
| TFT DC | 16 | Conmuta entre «comando» y «datos» |
| TFT RESET | 23 | Reinicio por hardware del controlador de la pantalla |
| Retroiluminación TFT | 4 | Se puede encender, apagar y regular por PWM |
| Botón en GPIO0 | 0 | También BOOT/strapping: mantenerlo durante un reinicio deja el ESP32 en el gestor de arranque |
| Segundo botón | 35 | Solo entrada; GPIO35 no tiene resistencias internas |
| Medida de la Li‑Po | 34 | ADC1, solo entrada |
| Habilitación del circuito de medida | 14 | Antes de leer la batería, GPIO14 suele ponerse a nivel alto |
Es razonable dar estos pines por ocupados. El SPI admite en teoría que varios dispositivos compartan las líneas MOSI/SCLK, pero para un primer proyecto es más seguro dejar GPIO18 y GPIO19 a la pantalla y sacar el SPI externo a pines libres.
Los conectores: repaso completo de los pines
La orientación de las tablas es con la pantalla hacia ti y el USB‑C abajo.
Tira izquierda, de arriba abajo
| Pin | Posibilidades | Límites y buenos usos |
|---|---|---|
| GND | Masa | Dos pines seguidos |
| GND | Masa | — |
| GPIO21 | Entrada/salida digital | El SDA recomendado para I²C |
| GPIO22 | Entrada/salida digital | El SCL recomendado para I²C |
| GPIO17 | Entrada/salida digital | Uno de los GPIO libres menos problemáticos; sirve para UART TX o PWM |
| GPIO2 | ADC2, Touch2, E/S digital | Pin de strapping: el circuito externo no debe imponer un nivel erróneo al arrancar |
| GPIO15 | ADC2, Touch3, E/S digital | Strapping y JTAG; usar con cuidado |
| GPIO13 | ADC2, Touch4, E/S digital | Se cruza con el JTAG, pero suele ser utilizable después del arranque |
| GPIO12 | ADC2, Touch5, E/S digital | Strapping y JTAG; aquí una carga externa activa durante el reinicio es especialmente inconveniente |
| GND | Masa | Dos pines seguidos |
| GND | Masa | — |
| 3V3 | Alimentación de 3,3 V | No es un GPIO |
Tira derecha, de arriba abajo
| Pin | Posibilidades | Límites y buenos usos |
|---|---|---|
| 3V3 | Alimentación de 3,3 V | No es un GPIO |
| GPIO36 / SVP | ADC1_CH0, entrada digital | Solo entrada, sin resistencia interna |
| GPIO37 | ADC1_CH1, entrada digital | Solo entrada, sin resistencia interna |
| GPIO38 | ADC1_CH2, entrada digital | Solo entrada, sin resistencia interna |
| GPIO39 / SVN | ADC1_CH3, entrada digital | Solo entrada, sin resistencia interna |
| GPIO32 | ADC1_CH4, Touch9, E/S digital | Excelente GPIO de propósito general y entrada analógica que sigue funcionando con el Wi‑Fi activo |
| GPIO33 | ADC1_CH5, Touch8, E/S digital | Excelente GPIO de propósito general y entrada analógica que sigue funcionando con el Wi‑Fi activo |
| GPIO25 | ADC2_CH8, DAC1, E/S digital | Un DAC de 8 bits de verdad; cómodo como salida, como PWM o como SCK de un SPI externo |
| GPIO26 | ADC2_CH9, DAC2, E/S digital | El segundo DAC de 8 bits de verdad; cómodo como MOSI de un SPI externo |
| GPIO27 | ADC2_CH7, Touch7, E/S digital | GPIO de propósito general; cómodo como MISO de un SPI externo |
| GND | Masa | — |
| 5V | Raíl de alimentación de 5 V | No es un GPIO ni señal de lógica de 5 V |
SVP y SVN son los nombres históricos de las entradas analógicas SENSOR_VP y SENSOR_VN, es decir, GPIO36 y GPIO39. No son pines de alimentación.
Cómo elegir los GPIO sin sorpresas desagradables
Para entradas y salidas digitales corrientes, los primeros candidatos son GPIO17, 21, 22, 25, 26, 27, 32 y 33. Tiene sentido reservar GPIO21/22 para el I²C.
Para un segundo bus SPI, el ejemplo oficial de fábrica de LILYGO usa un grupo cómodo:
| Señal del SPI externo | GPIO |
|---|---|
| SCK | 25 |
| MOSI | 26 |
| MISO | 27 |
| CS | 33 |
Para sensores analógicos con el Wi‑Fi encendido hay que elegir el ADC1: GPIO32, 33, 36, 37, 38 o 39. En el ESP32 clásico el ADC2 comparte un recurso con el Wi‑Fi, así que leer GPIO2/12/13/15/25/26/27 como entradas analógicas mientras la radio funciona puede sencillamente no salir bien. Los GPIO36–39, además, solo sirven como entrada y necesitan una resistencia externa si el sensor o el botón la requieren.
Hay tres reglas más que ahorran especialmente mucho tiempo:
- GPIO0, 2, 5, 12 y 15 se leen durante el reinicio como pines de strapping. Los periféricos conectados no deben forzar sus niveles de arranque.
- GPIO34–39 son solo entradas y no tienen
pull-up/pull-downpor software. En la propia placa, GPIO34 y GPIO35 ya están ocupados por la batería y por un botón. - Una carga no se puede alimentar directamente desde un GPIO. Un relé, un motor, un solenoide o una tira de LED potente se gobiernan mediante un transistor, un MOSFET o un driver con las protecciones necesarias.
Alimentación y autonomía
La placa se alimenta por USB‑C y admite una Li‑Po de un elemento a través de un conector de 1,25 mm y dos contactos. La batería se puede cargar en la placa, y su tensión medirse en GPIO34 una vez habilitado el circuito de medida con GPIO14. Es cómodo para un indicador de carga propio, pero el porcentaje no se obtiene de forma fiable con una simple fórmula lineal: la tensión de una Li‑Po varía de manera no lineal y el ADC del ESP32 original necesita calibración.
No conviene confundir la T-Display con un sensor de consumo ultrabajo solo porque el ESP32 sepa entrar en deep sleep. Medidas de aficionados sobre la placa clásica dan órdenes de magnitud de unos 66 mA en funcionamiento, 80–140 mA con el Wi‑Fi activo y alrededor de 9 mA en light sleep. No son garantías de hoja de características: el resultado depende del brillo, del firmware, de la calidad de la alimentación y de la revisión de la placa. La conclusión práctica principal es apagar o atenuar la retroiluminación, desconectar la radio entre sesiones y despertar el aparato con un botón o un temporizador.
Qué se construye con una T-Display: tres casos ilustrativos
1. Una pantalla local de Home Assistant
Uno de los usos más naturales es mostrar una temperatura, el consumo eléctrico, el estado de la calefacción o cualquier entidad de Home Assistant. En un proyecto publicado, la placa muestra la temperatura del horno mediante ESPHome, pero la misma plantilla sirve para la hora del próximo tren, el nivel de un depósito o la velocidad de internet. El valor del caso está en el hardware mínimo: para un panel fijo bastan la propia T-Display y alimentación USB.
2. Un panel de salidas junto a la puerta
El proyecto abierto ttgo-departure-board convierte la placa en un panel de transporte público. El repositorio contiene 33 variantes de firmware para redes de 17 países: el ESP32 se conecta al Wi‑Fi, sincroniza la hora por NTP, consulta una API aproximadamente cada 30 segundos y actualiza la cuenta atrás cada segundo. Los dos botones cambian de parada y controlan la pantalla. Es un buen ejemplo de interfaz en la que 240 × 135 puntos no son pocos: si solo se muestran el sentido, la línea, el andén y los minutos, la información es exactamente la que hace falta antes de salir de casa.
3. Un monitor inalámbrico diminuto
En 2025 llamó la atención un proyecto que envía por Wi‑Fi una imagen reducida del escritorio a una placa T-Display compatible. El ordenador compara los fotogramas y manda solo los píxeles que han cambiado, aplicando agrupación y RLE. Con una imagen casi estática su autor llegó a 60 fotogramas por segundo, y a unos 5 fotogramas por segundo con movimiento intenso, con una latencia por debajo de 100 ms en una red buena. No es un sustituto práctico de un monitor, pero sí una espléndida demostración de cómo un algoritmo de ahorro de tráfico permite exprimir sorprendentemente mucho de un ESP32 y una pantalla SPI pequeña. Importante: en el proyecto se usó una TENSTAR compatible con 16 MB de Flash, así que esa característica no se puede trasladar automáticamente a cualquier LILYGO.
Otro filón popular son los minijuegos. Dos botones, una pantalla en color y bibliotecas ya hechas han permitido crear Space Shooter, Breakout y pequeñas consolas portátiles con varios juegos. Es a la vez entretenimiento y un buen banco de pruebas para aprender sobre sprites, tasa de fotogramas, gestión de botones y manejo de la memoria.

Cuatro montajes del canal con una T-Display
El canal Build Mode ha hecho hasta ahora cuatro montajes con una T-Display. En un vídeo la placa se convierte en un altavoz Bluetooth: el ESP32 recibe música por A2DP, un amplificador MAX98357A mueve un altavoz pequeño y la pantalla muestra un analizador de espectro en tiempo real. En otro lee un sensor de movimiento MPU-6500 por SPI, y una página en el navegador convierte sus lecturas en un modelo 3D. En el tercero mantiene una estructura en equilibrio con el empuje de una sola hélice: un MPU-6500 mide la inclinación y un controlador PID en el ESP32 gobierna el motor a través de un DRV8833. En el cuarto hace de nivel y brújula en una carcasa impresa en 3D, con un MPU-6500, un magnetómetro BMM150 y una celda 18650.
Qué se busca con más frecuencia, y por qué
En los primeros resultados de las búsquedas sobre la T-Display clásica se repiten cuatro temas: el primer arranque, la configuración de TFT_eSPI, el patillaje y los proyectos ya hechos — relojes, meteorología, Home Assistant, paneles MQTT y juegos. Eso refleja con precisión los puntos fuertes y débiles de la placa.
A la gente le atrae poder obtener rápido un resultado vistoso, pero lo que más a menudo la frena es la configuración de esta pantalla concreta. TFT_eSPI necesita el perfil Setup25_TTGO_T_Display.h; en él quedan fijados el ST7789V, la geometría 135 × 240 y los GPIO correctos. En otras pilas hay que tener en cuenta el desplazamiento del área activa de la matriz, el orden de colores BGR y el control separado de la retroiluminación. Un fallo muy ilustrativo: el programa y el propio LCD pueden funcionar, y aun así la pantalla parece negra sencillamente porque GPIO4 no encendió la retroiluminación.
La prueba mínima para Arduino, una vez elegido el perfil de TFT_eSPI, tiene este aspecto:
#include <TFT_eSPI.h>
TFT_eSPI tft;
void setup() {
pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
tft.init();
tft.setRotation(1); // 240 × 135
tft.fillScreen(TFT_BLACK);
tft.setTextColor(TFT_CYAN, TFT_BLACK);
tft.drawString("Wi-Fi: OK", 12, 12, 4);
}
void loop() {}
En el IDE de Arduino el fabricante recomienda el perfil ESP32 Dev Module, una frecuencia de CPU de 240 MHz, modo QIO, 4 MB de Flash para la versión corriente, la PSRAM desactivada y una velocidad de subida de 921600. Si el firmware no arranca o el gestor de arranque no responde, GPIO0 se usa como BOOT: mantener el botón, pulsar brevemente Reset, soltar BOOT y repetir la carga.
Puntos fuertes y débiles
| A favor | En contra |
|---|---|
| El panel IPS en color ya viene montado y validado por el diseño de la placa | La pantalla es pequeña y sin capa táctil |
| Wi‑Fi, Bluetooth clásico y BLE | La generación del ESP32 es antigua: sin USB nativo ni las capacidades modernas del ESP32-S3 |
| Dos botones, USB‑C, carga de Li‑Po, control de la batería | Sin PSRAM; los gráficos pesados se comen la SRAM enseguida |
| Más compacta que un DevKit con un TFT aparte | La pantalla y los circuitos de servicio ocupan un número notable de GPIO |
| Hay ejemplos de Arduino, PlatformIO, ESP-IDF, TFT_eSPI y LVGL | El ADC2 choca con el Wi‑Fi y los GPIO36–39 solo funcionan como entrada |
| Va bien para paneles y medidores autónomos | La retroiluminación y el Wi‑Fi limitan el tiempo de trabajo con batería |
| Dos DAC de verdad en GPIO25/26 y muchas entradas del ADC1 | Las revisiones difieren en Flash y USB–UART, así que hay que comprobar la especificación de cada unidad |
Conclusión
La LILYGO TTGO T-Display no vale por unas características de récord, sino por una disposición bien pensada. Convierte el trabajo invisible de un microcontrolador en una interfaz legible: el aparato comunica su estado de inmediato, muestra medidas, acepta órdenes con dos botones y puede funcionar con batería.
Para un reloj de mesa, un indicador de Home Assistant, un medidor portátil, un mando MQTT, un minijuego o un panel de salidas en red, la T-Display clásica sigue siendo una base muy sensata. Lo importante es tener presentes su edad y sus límites: no confundirla con la T-Display-S3, no contar con PSRAM, cuidar los GPIO de arranque, usar el ADC1 con el Wi‑Fi activo y comprobar el tamaño de la Flash de la placa concreta. Si al proyecto le bastan 240 × 135 puntos y dos botones, la pantalla integrada ahorra no solo componentes, sino el recurso más caro del prototipado: el tiempo que va de la idea al primer resultado que se puede ver.
Todo lo anterior, condensado en una referencia de hardware independiente de la plataforma que puede seguir un agente programador: clases de asignación de pines, reglas eléctricas, la matriz GPIO canónica y un perfil de placa legible por máquina.



