Programando o ESP32 "Raiz": Do Chip Puro ao Firmware com VS Code e PlatformIO

Como economizar espaço e custo programando apenas o chip via FTDI e ESP-IDF.

VS Code e ESP32

Quando começamos com microcontroladores, é normal usar aquelas placas de desenvolvimento prontas (como o NodeMCU ou ESP32 DevKit) conectadas via USB. Elas são ótimas, mas têm um problema: ocupam muito espaço e custam mais caro para um produto final.

No post de hoje, vou mostrar meu fluxo de trabalho profissional: programar diretamente o chip ESP32 (standalone) usando um conversor FTDI e o ambiente de desenvolvimento mais robusto do mercado: VS Code + PlatformIO com framework ESP-IDF em C/C++.


1. O Ambiente: VS Code + PlatformIO 💻

Esqueça a IDE do Arduino. Para ter controle total sobre o hardware, uso o Visual Studio Code com a extensão PlatformIO.

Essa combinação permite:

2. O Segredo: Conversor FTDI 🔌

Como o chip ESP32 puro não tem porta USB, precisamos de uma "ponte" para conversar com o computador. É aqui que entra o Módulo FTDI (USB para Serial).

O FTDI traduz os dados da USB do computador para os pinos TX e RX que o microcontrolador entende. A conexão básica é cruzada:

Módulo FTDI

3. O Circuito de Programação (O "Pulo do Gato") 🐱‍👤

Não basta ligar os fios. Para o ESP32 aceitar um novo código, ele precisa entrar no Modo de Boot (Download Mode). Nas placas prontas, um chip faz isso sozinho. No nosso caso, precisamos forçar isso via hardware.

Preparei esse circuito de gravação que uso nas minhas bancadas. Ele garante que o chip entre no modo correto:

Esquemático ou Foto do Circuito de Gravação

A Lógica do Boot:

  1. Pino GPIO 0 deve estar ligado ao GND (nível baixo).
  2. Pino EN (Enable/Reset) recebe um pulso de GND para reiniciar o chip.
  3. Quando o chip acorda e vê o GPIO 0 no GND, ele aguarda o código novo vindo do FTDI.

Com esse setup, consigo desenhar minhas próprias PCBs colocando apenas o chip ESP32, o que deixa a placa mais barata e compacta, plugando meu gravador externo apenas na hora de atualizar.


Quer ver o código em C rodando nesse setup? Fique ligado nos próximos posts ou confira meu GitHub!