🛠️ Modificação de Hardware – Correção de Travamento do GPIO0 em Placas ESP32 TTGO T-Display (CH9102F)
Placas TTGO T-Display (ESP32) equipadas com o chip CH9102F (USB–Serial) podem apresentar travamento do pino GPIO0 e do botão de Boot ao se conectar com certos aplicativos modernos, como Blockstream Green ou SideSwap.
- O ESP32 inicia normalmente o bootloader e o firmware.
- Porém, ao abrir conexão serial (ex: Blockstream, SideSwap), o sistema trava.
- O GPIO0 fica permanentemente em nível baixo (LOW).
- O botão de Boot deixa de funcionar até que seja fechado o programa ou a placa seja desconectada da USB.
- O bug não é corrigido apenas com o ajuste de “Disable Modem Handshake” na porta COM do Windows, pois alguns apps reconfiguram o driver diretamente.
O circuito de auto-programação da TTGO T-Display usa as linhas DTR e RTS do CH9102F para manipular os pinos de controle do ESP32:
EN(Reset)IO0(Boot)
RTS → R19 (10 kΩ) → base de Q2 (PMBT3904 NPN)
coletor de Q2 → GPIO0 do ESP32
emissor → GND
O driver “moderno” do Windows e de alguns aplicativos mantém o sinal RTS em nível DC constante.
Isso satura a base do transistor Q2, que então conduz permanentemente.
Resultado: o GPIO0 é aterrado (LOW) e o botão físico deixa de responder.
A solução é substituir o resistor R19 (10 kΩ) por um capacitor cerâmico de 0,1 µF (100 nF).
Converter o acoplamento DC → AC, bloqueando o nível fixo de RTS, mas mantendo a capacidade de passar os pulsos rápidos usados para reset e entrada no modo de gravação.
| Componente | Função | Localização |
|---|---|---|
| Q2 | Transistor que controla o GPIO0 (modo Boot) | À esquerda do conector USB-C |
| Q1 | Transistor do Reset (EN) | À direita do conector USB-C |
| R19 | Entre RTS (CH9102F pino 19) e base de Q2 | Lado traseiro da placa, logo atrás do Q2 |
- Ferro de solda com ponta fina (≤ 1 mm)
- Fluxo de solda e pinça de precisão
- Capacitor cerâmico 100 nF / 6,3 V ou mais / dielétrico X7R ou X5R / tamanho SMD 0603
- Multímetro (modo continuidade)
- Desconecte a placa da USB e da bateria.
- Localize o R19 na parte traseira da placa (atrás do transistor Q2).
- Remova o resistor cuidadosamente com ferro e pinça.
- Solde o capacitor de 100 nF nos mesmos pads.
- Opcional: teste continuidade entre o pino 19 (RTS) do CH9102F e um dos lados do capacitor para confirmar a ligação.
- Reconecte via USB e teste o comportamento no SideSwap/Blockstream.
Após a modificação:
- O ESP32 mantém boot normal e não sofre interferência do driver moderno.
- O GPIO0 e o botão de Boot permanecem funcionais.
- Softwares como Blockstream Green e SideSwap podem abrir a porta serial sem causar travamento.
- O circuito de gravação automática continua operacional.
Para confirmar o sucesso:
- Conecte a TTGO ao PC.
- Abra o SideSwap/Blockstream.
- Verifique que o botão de voltar responde normalmente.
- A comunicação serial funciona sem o ESP32 travar o GPIO0.
Para fazer o flash precisa segurar o botão GPIO0 até iniciar o processo de gravação, depois pode soltar.
Pode ser usado sem o capacitor. O bug é corrigido removendo o resistor R19, mas por precaução foi adicionado o capacitor. Caso não tenha acesso ao capacitor de forma fácil, remova apenas o resistor R19 e faça os testes de conexão via USB nos programas Blockstream e SideSwap.
| Antes (R19 = 10 kΩ) | Depois (C = 100 nF) |
|---|---|
| Acoplamento DC, transistor conduz com RTS constante | Acoplamento AC, transistor só conduz em pulsos |
| GPIO0 e botão travam | GPIO0 e botão operam normalmente |
| Driver moderno interfere | Isolado de sinais DC indesejados |
Documento técnico e modificação prática por Cateim.


