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.

Pinagem da LILYGO TTGO T-Display V1.1 clássica. Fila esquerda: GND, GND, 21, 22, 17, 2, 15, 13, 12, GND, GND, 3V3; fila direita: 3V3, 36, 37, 38, 39, 32, 33, 25, 26, 27, GND, 5V. O ecrã ST7789V está ligado por MOSI 19, SCLK 18, CS 5, DC 16, RST 23 e BL 4, e os dois botões estão em GPIO0 e GPIO35.
A T-Display clássica, V1.1: as duas filas de pinos, os seis sinais do ecrã e os dois botões. Clique para ver a versão em tamanho real.

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

ElementoCaracterísticaO que significa na prática
MicrocontroladorESP32-D0WDQ6O ESP32 clássico, não um S2/S3/C3
Processador2 núcleos Xtensa LX6, até 240 MHzChega para Wi‑Fi, interface, sensores e lógica de fundo em simultâneo
Memória520 KB de SRAM interna, sem PSRAMImagens grandes e duplo buffer obrigam a contar bem a memória
FlashNormalmente 4 MB; existe uma variante de 16 MBO tamanho tem de ser verificado antes de escolher a tabela de partições
Ligação sem fiosWi‑Fi 2,4 GHz 802.11 b/g/n; Bluetooth 4.2 BR/EDR e BLEServe para MQTT, HTTP, ESP‑NOW, balizas BLE e comunicação com o telemóvel
EcrãTFT IPS de 1,14″, controlador ST7789VEcrã a cores com bons ângulos de visão
Resolução135 × 240 na vertical; normalmente 240 × 135 na horizontalCó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 MHzO ecrã é rápido, mas ocupa vários GPIO
ComandosDois botões: GPIO0 e GPIO35Chegam para um menu, folhear ecrãs, confirmar ou acordar o aparelho
AlimentaçãoUSB‑C ou Li‑Po de um elemento; carregamento incorporadoA base de um aparelho portátil sem módulo de carga à parte
Controlo da bateriaADC no GPIO34, circuito de medida ativado pelo GPIO14A carga pode ser mostrada na própria interface
USBUSB‑C através de uma ponte USB–UARTO ESP32 original não tem USB Device nativo; a porta serve para alimentar, gravar e para a ligação série
USB–UARTCH9102 no que se vende hoje; em revisões antigas apareciam CP210xPerante um problema de controlador, ver o VID/PID real em vez de adivinhar pelo nome da placa
Níveis lógicos3,3 V; os GPIO não toleram 5 VUm sinal de 5 V exige adaptação de níveis
DimensõesCerca de 51,5 × 25 mmA placa é bastante mais estreita do que a maioria das montagens «DevKit + TFT à parte»
Ambientes de desenvolvimentoArduino IDE, PlatformIO, ESP-IDF; MicroPython é possívelArduino 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.

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 placaGPIOO que importa saber
TFT MOSI19Dados para o ST7789V
TFT SCLK18Linha de relógio do ecrã
TFT CS5Seleção do ecrã; ao mesmo tempo pino de strapping de arranque do ESP32
TFT DC16Alterna entre «comando» e «dados»
TFT RESET23Reposição por hardware do controlador do ecrã
Retroiluminação do TFT4Pode ser ligada, desligada e regulada por PWM
Botão no GPIO00Também BOOT/strapping: mantê-lo premido durante uma reposição deixa o ESP32 no bootloader
Segundo botão35Apenas entrada; o GPIO35 não tem resistências internas
Medição da Li‑Po34ADC1, apenas entrada
Ativação do circuito de medida14Antes 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

PinoPossibilidadesLimites e boas utilizações
GNDMassaDois pinos seguidos
GNDMassa—
GPIO21Entrada/saída digitalO SDA recomendado para I²C
GPIO22Entrada/saída digitalO SCL recomendado para I²C
GPIO17Entrada/saída digitalUm dos GPIO livres menos problemáticos; serve para UART TX ou PWM
GPIO2ADC2, Touch2, E/S digitalPino de strapping: o circuito externo não deve impor um nível errado no arranque
GPIO15ADC2, Touch3, E/S digitalStrapping e JTAG; usar com cuidado
GPIO13ADC2, Touch4, E/S digitalCruza-se com o JTAG, mas costuma ser utilizável depois do arranque
GPIO12ADC2, Touch5, E/S digitalStrapping e JTAG; aqui uma carga externa ativa durante a reposição é especialmente indesejável
GNDMassaDois pinos seguidos
GNDMassa—
3V3Alimentação de 3,3 VNão é um GPIO

Fila direita, de cima para baixo

PinoPossibilidadesLimites e boas utilizações
3V3Alimentação de 3,3 VNão é um GPIO
GPIO36 / SVPADC1_CH0, entrada digitalApenas entrada, sem resistência interna
GPIO37ADC1_CH1, entrada digitalApenas entrada, sem resistência interna
GPIO38ADC1_CH2, entrada digitalApenas entrada, sem resistência interna
GPIO39 / SVNADC1_CH3, entrada digitalApenas entrada, sem resistência interna
GPIO32ADC1_CH4, Touch9, E/S digitalExcelente GPIO de uso geral e entrada analógica que continua a funcionar com o Wi‑Fi ativo
GPIO33ADC1_CH5, Touch8, E/S digitalExcelente GPIO de uso geral e entrada analógica que continua a funcionar com o Wi‑Fi ativo
GPIO25ADC2_CH8, DAC1, E/S digitalUm DAC de 8 bits a sério; jeitoso como saída, como PWM ou como SCK de um SPI externo
GPIO26ADC2_CH9, DAC2, E/S digitalO segundo DAC de 8 bits a sério; jeitoso como MOSI de um SPI externo
GPIO27ADC2_CH7, Touch7, E/S digitalGPIO de uso geral; jeitoso como MISO de um SPI externo
GNDMassa—
5VBarramento de alimentação de 5 VNã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 externoGPIO
SCK25
MOSI26
MISO27
CS33

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:

  1. 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.
  2. GPIO34–39 são apenas entradas e não têm pull-up/pull-down por software. Na própria placa, o GPIO34 e o GPIO35 já estão ocupados pela bateria e por um botão.
  3. 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.

A mesma T-Display em três papéis: ligada a um sensor de temperatura e a mostrar 22,6 °C, a servir de painel de casa inteligente com 428 W e 22,6 graus, e a correr um jogo com uma célula Li‑Po ligada ao seu conector de bateria.
Uma placa, três papéis: medidor portátil, painel de secretária e consola de bolso.

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 favorContra
O painel IPS a cores já vem montado e validado pelo desenho da placaO ecrã é pequeno e não tem camada tátil
Wi‑Fi, Bluetooth clássico e BLEA 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 bateriaSem PSRAM; gráficos pesados devoram depressa a SRAM
Mais compacta do que um DevKit com um TFT à parteO 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 LVGLO ADC2 entra em conflito com o Wi‑Fi e os GPIO36–39 só funcionam como entrada
Boa para painéis e medidores autónomosA 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 ADC1As 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.