LILYGO TTGO T-Display: o ESP32 que mostra o resultado de imediato
Uma placa de desenvolvimento comum sabe fazer muita coisa, mas fala com quem a programa sobretudo através de linhas no Serial Monitor. A LILYGO TTGO T-Display tem uma forma mais convincente de o fazer: um ecrã a cores incorporado. Liga-se um sensor e vêem-se logo as leituras. Recebem-se dados por Wi‑Fi e mostra-se um gráfico ou um estado. Monta-se um aparelho autónomo e já não é preciso acrescentar um ecrã à parte, encaminhar-lhe a alimentação nem arranjar-lhe lugar dentro da caixa.
É precisamente por isso que a T-Display é mais interessante do que «mais uma placa com ESP32». É quase um painel frontal de aparelho já pronto: microcontrolador, ecrã, dois botões, USB‑C e carregamento de uma Li‑Po de um elemento, tudo numa única placa estreita.

De que placa se fala exatamente
O nome T-Display transformou-se numa família inteira, pelo que a primeira armadilha técnica é ir buscar as características do modelo errado. Aqui trata-se da LILYGO/TTGO T-Display clássica sobre o ESP32 original, com ecrã de 1,14 polegadas e resolução de 135 × 240 pontos. Não é a T-Display-S3: a S3 tem outro processador, ecrã de 1,9 polegadas, outra ligação de ecrã, outros GPIO e tem PSRAM.
A documentação atual da LILYGO indica para a placa clássica o SoC ESP32-D0WDQ6. O tamanho da Flash e o chip USB–UART podem variar de lote para lote, por isso a descrição do vendedor ou o exemplo de código de outra pessoa não substituem a verificação da placa que se tem na mão.
Características técnicas
| Elemento | Característica | O que significa na prática |
|---|---|---|
| Microcontrolador | ESP32-D0WDQ6 | O ESP32 clássico, não um S2/S3/C3 |
| Processador | 2 núcleos Xtensa LX6, até 240 MHz | Chega para Wi‑Fi, interface, sensores e lógica de fundo em simultâneo |
| Memória | 520 KB de SRAM interna, sem PSRAM | Imagens grandes e duplo buffer obrigam a contar bem a memória |
| Flash | Normalmente 4 MB; existe uma variante de 16 MB | O tamanho tem de ser verificado antes de escolher a tabela de partições |
| Ligação sem fios | Wi‑Fi 2,4 GHz 802.11 b/g/n; Bluetooth 4.2 BR/EDR e BLE | Serve para MQTT, HTTP, ESP‑NOW, balizas BLE e comunicação com o telemóvel |
| Ecrã | TFT IPS de 1,14″, controlador ST7789V | Ecrã a cores com bons ângulos de visão |
| Resolução | 135 × 240 na vertical; normalmente 240 × 135 na horizontal | Cómodo para um valor grande, alguns estados ou um gráfico pequeno |
| Interface do ecrã | SPI de 4 fios; o perfil de origem do TFT_eSPI usa 40 MHz | O ecrã é rápido, mas ocupa vários GPIO |
| Comandos | Dois botões: GPIO0 e GPIO35 | Chegam para um menu, folhear ecrãs, confirmar ou acordar o aparelho |
| Alimentação | USB‑C ou Li‑Po de um elemento; carregamento incorporado | A base de um aparelho portátil sem módulo de carga à parte |
| Controlo da bateria | ADC no GPIO34, circuito de medida ativado pelo GPIO14 | A carga pode ser mostrada na própria interface |
| USB | USB‑C através de uma ponte USB–UART | O ESP32 original não tem USB Device nativo; a porta serve para alimentar, gravar e para a ligação série |
| USB–UART | CH9102 no que se vende hoje; em revisões antigas apareciam CP210x | Perante um problema de controlador, ver o VID/PID real em vez de adivinhar pelo nome da placa |
| Níveis lógicos | 3,3 V; os GPIO não toleram 5 V | Um sinal de 5 V exige adaptação de níveis |
| Dimensões | Cerca de 51,5 × 25 mm | A placa é bastante mais estreita do que a maioria das montagens «DevKit + TFT à parte» |
| Ambientes de desenvolvimento | Arduino IDE, PlatformIO, ESP-IDF; MicroPython é possível | Arduino para começar depressa, ESP-IDF para um projeto mais rigoroso |
Um par de números ajuda a sentir a escala. Uma imagem completa em formato RGB565 ocupa 135 × 240 × 2 = 64 800 bytes, ou seja, cerca de 63,3 KiB. Dois buffers de imagem já são perto de 126,6 KiB, sem contar a pilha Wi‑Fi, as tarefas e os dados da aplicação. É por isso que nesta placa são especialmente úteis o redesenho parcial, os sprites de tamanho moderado e desenhar apenas as zonas que mudaram.
Porque é que o ecrã incorporado vale mesmo a pena
Aqui o ecrã é útil como ferramenta de desenvolvimento, não como enfeite. Encurta o caminho entre o protótipo e uma coisa que se pode usar sem computador.
- Resposta imediata. O próprio aparelho mostra se se ligou ao Wi‑Fi, que endereço IP recebeu, o que devolveu o sensor e porque é que o atuador não disparou.
- Interface local. Dois botões e um ecrã a cores chegam para um menu, várias páginas, avisos e definições simples, sem aplicação para telemóvel.
- Diagnóstico no local. Se o sensor está num quadro elétrico, numa estufa ou numa máquina, os parâmetros essenciais veem-se ao lado do equipamento e não apenas na nuvem.
- Protótipo compacto e acabado. Depois de acrescentar bateria e caixa, a T-Display já parece um aparelho de bolso, um comando ou um painel de monitorização em miniatura.
- Demonstração rápida da ideia. A um cliente ou a um colega é mais fácil avaliar um ecrã vivo com estados do que uma torrente de números num terminal.
Mas o ecrã também impõe limites. É pequeno e não é tátil, e seis sinais do ESP32 já estão tomados por ele. Uma retroiluminação sempre acesa pesa visivelmente na autonomia. Para gráficos complexos falta PSRAM, por isso a T-Display dá o seu melhor não como «microtelemóvel», mas como uma interface clara feita de alguns indicadores bem escolhidos.
O que já está ligado ao ESP32
| Função na placa | GPIO | O que importa saber |
|---|---|---|
| TFT MOSI | 19 | Dados para o ST7789V |
| TFT SCLK | 18 | Linha de relógio do ecrã |
| TFT CS | 5 | Seleção do ecrã; ao mesmo tempo pino de strapping de arranque do ESP32 |
| TFT DC | 16 | Alterna entre «comando» e «dados» |
| TFT RESET | 23 | Reposição por hardware do controlador do ecrã |
| Retroiluminação do TFT | 4 | Pode ser ligada, desligada e regulada por PWM |
| Botão no GPIO0 | 0 | Também BOOT/strapping: mantê-lo premido durante uma reposição deixa o ESP32 no bootloader |
| Segundo botão | 35 | Apenas entrada; o GPIO35 não tem resistências internas |
| Medição da Li‑Po | 34 | ADC1, apenas entrada |
| Ativação do circuito de medida | 14 | Antes de ler a bateria, o GPIO14 é normalmente colocado a nível alto |
É sensato considerar estes pinos como ocupados. O SPI permite em teoria que vários dispositivos partilhem as linhas MOSI/SCLK, mas para um primeiro projeto é mais seguro deixar o GPIO18 e o GPIO19 para o ecrã e levar o SPI externo para pinos livres.
Os conectores: os pinos um a um
A orientação das tabelas é com o ecrã virado para si e o USB‑C em baixo.
Fila esquerda, de cima para baixo
| Pino | Possibilidades | Limites e boas utilizações |
|---|---|---|
| GND | Massa | Dois pinos seguidos |
| GND | Massa | — |
| GPIO21 | Entrada/saída digital | O SDA recomendado para I²C |
| GPIO22 | Entrada/saída digital | O SCL recomendado para I²C |
| GPIO17 | Entrada/saída digital | Um dos GPIO livres menos problemáticos; serve para UART TX ou PWM |
| GPIO2 | ADC2, Touch2, E/S digital | Pino de strapping: o circuito externo não deve impor um nível errado no arranque |
| GPIO15 | ADC2, Touch3, E/S digital | Strapping e JTAG; usar com cuidado |
| GPIO13 | ADC2, Touch4, E/S digital | Cruza-se com o JTAG, mas costuma ser utilizável depois do arranque |
| GPIO12 | ADC2, Touch5, E/S digital | Strapping e JTAG; aqui uma carga externa ativa durante a reposição é especialmente indesejável |
| GND | Massa | Dois pinos seguidos |
| GND | Massa | — |
| 3V3 | Alimentação de 3,3 V | Não é um GPIO |
Fila direita, de cima para baixo
| Pino | Possibilidades | Limites e boas utilizações |
|---|---|---|
| 3V3 | Alimentação de 3,3 V | Não é um GPIO |
| GPIO36 / SVP | ADC1_CH0, entrada digital | Apenas entrada, sem resistência interna |
| GPIO37 | ADC1_CH1, entrada digital | Apenas entrada, sem resistência interna |
| GPIO38 | ADC1_CH2, entrada digital | Apenas entrada, sem resistência interna |
| GPIO39 / SVN | ADC1_CH3, entrada digital | Apenas entrada, sem resistência interna |
| GPIO32 | ADC1_CH4, Touch9, E/S digital | Excelente GPIO de uso geral e entrada analógica que continua a funcionar com o Wi‑Fi ativo |
| GPIO33 | ADC1_CH5, Touch8, E/S digital | Excelente GPIO de uso geral e entrada analógica que continua a funcionar com o Wi‑Fi ativo |
| GPIO25 | ADC2_CH8, DAC1, E/S digital | Um DAC de 8 bits a sério; jeitoso como saída, como PWM ou como SCK de um SPI externo |
| GPIO26 | ADC2_CH9, DAC2, E/S digital | O segundo DAC de 8 bits a sério; jeitoso como MOSI de um SPI externo |
| GPIO27 | ADC2_CH7, Touch7, E/S digital | GPIO de uso geral; jeitoso como MISO de um SPI externo |
| GND | Massa | — |
| 5V | Barramento de alimentação de 5 V | Não é um GPIO nem sinal de lógica de 5 V |
SVP e SVN são os nomes históricos das entradas analógicas SENSOR_VP e SENSOR_VN, ou seja, GPIO36 e GPIO39. Não são pinos de alimentação.
Como escolher os GPIO sem surpresas desagradáveis
Para entradas e saídas digitais correntes, os primeiros candidatos são GPIO17, 21, 22, 25, 26, 27, 32 e 33. Faz sentido guardar o GPIO21/22 para o I²C.
Para um segundo barramento SPI, o exemplo oficial de fábrica da LILYGO usa um grupo cómodo:
| Sinal do SPI externo | GPIO |
|---|---|
| SCK | 25 |
| MOSI | 26 |
| MISO | 27 |
| CS | 33 |
Para sensores analógicos com o Wi‑Fi ligado deve escolher-se o ADC1: GPIO32, 33, 36, 37, 38 ou 39. No ESP32 clássico o ADC2 partilha um recurso com o Wi‑Fi, pelo que ler GPIO2/12/13/15/25/26/27 como entradas analógicas enquanto o rádio trabalha pode simplesmente não resultar. Já os GPIO36–39 servem apenas como entrada e precisam de resistência externa se o sensor ou o botão dela precisarem.
Há ainda três regras que poupam especialmente muito tempo:
- GPIO0, 2, 5, 12 e 15 são lidos durante a reposição como pinos de strapping. Os periféricos ligados não devem forçar os seus níveis de arranque.
- GPIO34–39 são apenas entradas e não têm
pull-up/pull-downpor software. Na própria placa, o GPIO34 e o GPIO35 já estão ocupados pela bateria e por um botão. - Uma carga não pode ser alimentada diretamente a partir de um GPIO. Um relé, um motor, um solenoide ou uma fita LED potente comandam-se através de um transístor, um MOSFET ou um driver com as proteções necessárias.
Alimentação e autonomia
A placa aceita alimentação por USB‑C e suporta uma Li‑Po de um elemento através de um conector de 1,25 mm com dois contactos. A bateria pode ser carregada na placa e a sua tensão medida no GPIO34 depois de ativado o circuito de medida com o GPIO14. É cómodo para um indicador de carga próprio, mas a percentagem não se obtém de forma fiável com uma simples fórmula linear: a tensão de uma Li‑Po varia de maneira não linear e o ADC do ESP32 original precisa de calibração.
A T-Display não deve ser confundida com um sensor de consumo ultrabaixo só porque o ESP32 sabe entrar em deep sleep. Medições de amadores na placa clássica deram ordens de grandeza de cerca de 66 mA em funcionamento, 80–140 mA com o Wi‑Fi ativo e aproximadamente 9 mA em light sleep. Não são garantias de folha de características: o resultado depende do brilho, do firmware, da qualidade da alimentação e da revisão da placa. A principal conclusão prática é apagar ou baixar a retroiluminação, desligar o rádio entre sessões e acordar o aparelho com um botão ou um temporizador.
O que se constrói com uma T-Display: três casos elucidativos
1. Um ecrã local do Home Assistant
Uma das utilizações mais naturais é mostrar uma temperatura, o consumo de energia, o estado do aquecimento ou qualquer entidade do Home Assistant. Num projeto publicado, a placa mostra a temperatura do forno através do ESPHome, mas o mesmo modelo serve para a hora do próximo comboio, o nível de um depósito ou a velocidade da internet. O valor deste caso está no hardware mínimo: para um painel fixo bastam a própria T-Display e alimentação por USB.
2. Um painel de partidas junto à porta
O projeto aberto ttgo-departure-board transforma a placa num painel de transportes públicos. O repositório contém 33 variantes de firmware para redes de 17 países: o ESP32 liga-se ao Wi‑Fi, sincroniza a hora por NTP, consulta uma API sensivelmente de 30 em 30 segundos e atualiza a contagem decrescente a cada segundo. Os dois botões mudam de paragem e comandam o ecrã. É um bom exemplo de interface em que 240 × 135 pontos não são poucos: se só se mostrarem o sentido, a linha, a plataforma e os minutos, a informação é exatamente a necessária antes de sair de casa.
3. Um monitor sem fios minúsculo
Em 2025 destacou-se um projeto que envia por Wi‑Fi uma imagem reduzida do ambiente de trabalho para uma placa T-Display compatível. O computador compara os fotogramas e envia apenas os píxeis que mudaram, aplicando agrupamento e RLE. Com uma imagem quase estática o autor chegou aos 60 fotogramas por segundo, e a cerca de 5 fotogramas por segundo com movimento intenso, com latência abaixo de 100 ms numa rede boa. Não é um substituto prático de um monitor, mas é uma excelente demonstração de como um algoritmo de poupança de tráfego permite extrair inesperadamente muito de um ESP32 e de um pequeno ecrã SPI. Importante: no projeto foi usada uma TENSTAR compatível com 16 MB de Flash, pelo que esta característica não se pode transpor automaticamente para qualquer LILYGO.
Outro filão popular são os minijogos. Dois botões, um ecrã a cores e bibliotecas já feitas permitiram criar Space Shooter, Breakout e pequenas consolas portáteis com vários jogos. É ao mesmo tempo entretenimento e uma boa bancada de aprendizagem para sprites, taxa de fotogramas, tratamento de botões e gestão de memória.

Quatro montagens do canal com uma T-Display
O canal Build Mode fez até agora quatro montagens com uma T-Display. Num vídeo a placa torna-se uma coluna Bluetooth: o ESP32 recebe música por A2DP, um amplificador MAX98357A alimenta um pequeno altifalante e o ecrã mostra um analisador de espetro em tempo real. Noutro lê um sensor de movimento MPU-6500 por SPI, e uma página no navegador transforma as leituras num modelo 3D. No terceiro mantém uma estrutura em equilíbrio com o impulso de uma única hélice: um MPU-6500 mede a inclinação e um controlador PID no ESP32 comanda o motor através de um DRV8833. No quarto faz de nível e bússola numa caixa impressa em 3D, com um MPU-6500, um magnetómetro BMM150 e uma célula 18650.
O que se procura com mais frequência, e porquê
Nos primeiros resultados das pesquisas sobre a T-Display clássica repetem-se quatro temas: o primeiro arranque, a configuração do TFT_eSPI, a pinagem e os projetos já feitos — relógios, meteorologia, Home Assistant, painéis MQTT e jogos. Isso reflete com exatidão os pontos fortes e fracos da placa.
O que atrai as pessoas é conseguirem depressa um resultado bonito, mas onde mais tropeçam é na configuração deste ecrã em concreto. O TFT_eSPI precisa do perfil Setup25_TTGO_T_Display.h; nele ficam fixados o ST7789V, a geometria 135 × 240 e os GPIO corretos. Noutras pilhas é preciso ter em conta o desvio da área ativa da matriz, a ordem de cores BGR e o comando separado da retroiluminação. Uma avaria elucidativa: o programa e o próprio LCD podem estar a funcionar e mesmo assim o ecrã parecer preto, simplesmente porque o GPIO4 não ligou a retroiluminação.
O teste mínimo para Arduino, depois de escolhido o perfil do TFT_eSPI, é assim:
#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() {}
No IDE do Arduino o fabricante recomenda o perfil ESP32 Dev Module, frequência de CPU de 240 MHz, modo QIO, 4 MB de Flash para a versão comum, a PSRAM desativada e uma velocidade de carregamento de 921600. Se o firmware não arrancar ou o bootloader não responder, o GPIO0 serve de BOOT: manter o botão premido, carregar brevemente em Reset, largar o BOOT e repetir o carregamento.
Pontos fortes e fracos
| A favor | Contra |
|---|---|
| O painel IPS a cores já vem montado e validado pelo desenho da placa | O ecrã é pequeno e não tem camada tátil |
| Wi‑Fi, Bluetooth clássico e BLE | A geração do ESP32 é antiga: sem USB nativo nem as capacidades modernas do ESP32-S3 |
| Dois botões, USB‑C, carregamento de Li‑Po, controlo da bateria | Sem PSRAM; gráficos pesados devoram depressa a SRAM |
| Mais compacta do que um DevKit com um TFT à parte | O ecrã e os circuitos de serviço ocupam um número apreciável de GPIO |
| Existem exemplos de Arduino, PlatformIO, ESP-IDF, TFT_eSPI e LVGL | O ADC2 entra em conflito com o Wi‑Fi e os GPIO36–39 só funcionam como entrada |
| Boa para painéis e medidores autónomos | A retroiluminação e o Wi‑Fi limitam o tempo de funcionamento com bateria |
| Dois DAC a sério nos GPIO25/26 e muitas entradas do ADC1 | As revisões diferem na Flash e no USB–UART, por isso a especificação de cada exemplar tem de ser verificada |
Conclusão
A LILYGO TTGO T-Display não vale por características de recorde, mas por um arranjo bem pensado. Transforma o trabalho invisível de um microcontrolador numa interface legível: o aparelho comunica de imediato o seu estado, mostra medições, aceita comandos com dois botões e pode funcionar com bateria.
Para um relógio de secretária, um indicador do Home Assistant, um medidor portátil, um comando MQTT, um minijogo ou um painel de partidas em rede, a T-Display clássica continua a ser uma base muito sensata. O essencial é lembrar a sua idade e os seus limites: não a confundir com a T-Display-S3, não contar com PSRAM, poupar os GPIO de arranque, usar o ADC1 com o Wi‑Fi ativo e verificar o tamanho da Flash da placa concreta. Se ao projeto chegarem 240 × 135 pontos e dois botões, o ecrã incorporado poupa não só componentes, mas o recurso mais caro da prototipagem: o tempo que separa a ideia do primeiro resultado que se pode ver.
Tudo o que ficou dito acima, condensado numa referência de hardware independente da plataforma que um agente de programação pode seguir: classes de atribuição de pinos, regras elétricas, a matriz GPIO canónica e um perfil de placa legível por máquina.



