iiOTESP32 Brasil
Modo de contingência: páginas públicas e downloads seguem disponíveis; login, comunidade e dados do servidor podem ficar indisponíveis.
Voltar para catálogo de tutoriais
Ilustração: laptop com o VS Code aberto e ícones de arquivo de configuração, bibliotecas e ferramentas ligados às etapas de compilação e envio, com uma placa ESP32 conectada por cabo USB
Imagem ilustrativa gerada por IA
IniciantePlatformIOLeitura: 11 min

O que é o PlatformIO (PIO) e por que ele virou padrão no ESP32

PlatformIO não é editor nem compilador: é quem monta o ambiente inteiro a partir de um arquivo de texto. As quatro camadas e o que faz o platformio.ini.

Tecnologias:#PlatformIO#ESP32#VS Code#Arduino Core#ESP-IDF

A pergunta que todo mundo faz errado

A dúvida costuma vir assim: "PlatformIO é um editor melhor que o Arduino IDE?". Não é — e essa comparação atrapalha o entendimento.

O PlatformIO não é editor, não é compilador e não é gravador. Ele é um gerenciador: o programa que descobre o que o seu projeto precisa, baixa cada peça na versão certa, chama o compilador certo com os parâmetros certos e depois grava na placa. O editor você escolhe; o compilador quem instala é ele.

Uma comparação que funciona: pense num maestro. Ele não toca nenhum instrumento, mas sem ele os instrumentos não tocam juntos.

Por que a busca é "pio" e não "platformio"

PIO é o próprio comando. Depois de instalado, o programa se chama pio no terminal — e platformio também funciona, é o mesmo executável com dois nomes.

Por isso você encontra as duas formas na internet. Quando um tutorial escreve pio run, é exatamente o mesmo que platformio run. E quando o comando não está no PATH do sistema, ainda dá para chamar por dentro do Python:

code.cpp
cpp
1pio run
2platformio run
3python -m platformio run

As três linhas fazem a mesma coisa.

Duas peças com o mesmo nome

Aqui mora boa parte da confusão. "PlatformIO" são dois produtos diferentes:

O PlatformIO Core é o programa de linha de comando, o pio. É ele que faz todo o trabalho de verdade. Funciona sozinho, sem editor nenhum.

O PlatformIO IDE é uma extensão do VS Code. Ela não substitui o Core: ela o instala por baixo e coloca botões na tela para chamar os mesmos comandos. Quando você clica no botão de compilar, o que acontece por trás é um pio run.

Isso explica por que tanto tutorial de linha de comando quanto tutorial de interface gráfica são válidos: os dois estão dirigindo o mesmo motor.

O problema que ele resolve

Imagine que você monta um projeto no Arduino IDE. Para funcionar, foi preciso adicionar a URL do gerenciador de placas, instalar o core do ESP32, instalar três bibliotecas pelo gerenciador e ajustar duas opções no menu Ferramentas.

Agora você manda o projeto para alguém. O que essa pessoa recebe é só o código — as escolhas ficaram na sua máquina, dentro de menus. Ela precisa repetir tudo na mão, adivinhando quais bibliotecas e quais versões você usou. Se ela instalar uma versão diferente de uma biblioteca, o programa pode compilar e se comportar de outro jeito.

O PlatformIO resolve isso movendo todas essas escolhas para um arquivo de texto dentro do projeto: o platformio.ini. Quem receber a pasta roda um comando, e o próprio PlatformIO baixa o que faltar, nas versões que você fixou.

É a diferença entre "funciona na minha máquina" e "funciona em qualquer máquina".

As quatro camadas que ele gerencia

Quando você manda compilar pela primeira vez, o PlatformIO baixa quatro tipos de coisa. Vale conhecer os nomes, porque as mensagens de erro usam esse vocabulário.

1. Plataforma

É o pacote que ensina o PlatformIO a lidar com uma família de chips. Para o ESP32, a plataforma se chama espressif32. Ela sabe quanta memória cada modelo tem, como colocar o chip em modo de gravação e qual gravador usar.

2. Framework

É a API com que você escreve o programa. No ESP32 há duas opções principais: arduino, com setup() e loop(), e espidf, o framework oficial da Espressif, mais verboso e com mais controle. O mesmo chip, duas formas de programar.

3. Ferramentas

Compilador, montador, gravador e utilitários. No caso do ESP32, entram pacotes como o tool-esptoolpy — o gravador oficial da Espressif — e o tool-cmake. Você não instala nada disso manualmente; é o motivo de a primeira compilação demorar alguns minutos.

4. Bibliotecas

Declaradas em lib_deps, baixadas do registro do PlatformIO ou direto de um repositório Git.

Onde tudo isso é guardado

As quatro camadas não ficam dentro do seu projeto. Elas vivem numa pasta única do usuário, a .platformio, com subpastas platforms, packages e um Python próprio.

Isso tem duas consequências práticas boas. A primeira é que dez projetos que usam ESP32 compartilham o mesmo compilador, baixado uma vez só. A segunda é que a sua pasta de projeto continua pequena e fácil de enviar.

Dentro do projeto, o PlatformIO cria a pasta .pio, com os arquivos temporários da compilação e o binário gerado. Essa pasta é descartável: pode apagar sem medo, e ela é recriada na próxima compilação. Por isso ela nunca entra no ZIP nem no Git.

Lendo o platformio.ini

Este é o arquivo que descreve o projeto inteiro. Um exemplo mínimo para ESP32:

code.cpp
cpp
1[env:esp32dev]
2platform = espressif32
3framework = arduino
4board = esp32dev
5monitor_speed = 115200

Linha por linha: [env:esp32dev] abre um ambiente chamado esp32dev; platform diz a família de chips; framework diz a API; board diz o modelo exato da placa; monitor_speed fixa a velocidade do monitor serial, para você não precisar digitá-la toda vez.

O campo board é o que mais economiza trabalho. Ao escrever board = esp32dev, o PlatformIO já sabe que aquele modelo é um ESP32 de 240 MHz, com 4 MB de flash e 320 KB de RAM, e monta o mapa de memória de acordo. Hoje ele reconhece mais de mil e cem modelos de placa — dá para listar com pio boards.

Vários ambientes no mesmo projeto

Um projeto pode declarar quantos ambientes quiser, e é assim que o mesmo código atende placas diferentes:

code.cpp
cpp
1[env:esp32dev]
2board = esp32dev
3build_flags = -D LED_PIN=2
4;
5[env:esp32-c3-lcd-144]
6board = esp32-c3-devkitm-1
7build_flags = -D DISPLAY_ST7735=1

O build_flags passa definições para o compilador antes de compilar. No exemplo, o mesmo main.cpp liga o trecho do display só no ambiente da placa que tem display — sem duplicar arquivo, sem comentar linha na mão.

Travando versões de biblioteca

code.cpp
cpp
1lib_deps =
2 adafruit/Adafruit GFX Library@^1.11.11

O ^1.11.11 significa "esta versão ou uma correção posterior compatível, mas nada de mudança que quebre". É o que garante que o projeto compilado hoje continue compilando daqui a seis meses.

Os comandos que resolvem 90% do uso

code.cpp
cpp
1pio run
2pio run -t upload
3pio device list
4pio device monitor
5pio run -t clean

O primeiro compila. O segundo compila e grava. O terceiro lista as portas seriais. O quarto abre o monitor. O quinto limpa a pasta .pio quando alguma coisa fica estranha — o famoso "apagar e compilar de novo", que aqui tem comando próprio.

No VS Code, esses mesmos comandos estão nos ícones da barra do rodapé: visto para compilar, seta para gravar, tomada para o monitor.

PlatformIO ou Arduino IDE?

Nenhum dos dois é melhor em tudo. A escolha depende do que você está fazendo.

O Arduino IDE ganha na primeira hora de uso: instala rápido, tem menos conceitos e você compila sem entender nada de estrutura de projeto. Para acender um LED e aprender lógica, ele basta.

O PlatformIO ganha quando o projeto cresce ou sai da sua máquina: configuração versionada junto do código, várias placas no mesmo projeto, versões de biblioteca travadas, testes automatizados e integração com sistemas de build. É por isso que ele domina em projeto profissional e em firmware industrial.

Uma coisa que costuma surpreender: os dois não brigam. O PlatformIO usa o mesmo Arduino Core por baixo quando você escolhe framework = arduino. O código que você escreveu no Arduino IDE compila igual, só muda quem organiza a construção.

Três mal-entendidos comuns

"Preciso instalar o compilador antes." Não. O PlatformIO baixa o compilador sozinho na primeira compilação. Instalar toolchain à mão costuma criar conflito, não resolver.

"Apaguei a pasta .pio e perdi o projeto." Não perdeu. O seu código está em src, e o .pio é só resultado de compilação.

"O PlatformIO é pago." O Core e a extensão do VS Code são gratuitos e de código aberto. Existem serviços pagos opcionais para times e desenvolvimento remoto, mas nada disso é necessário para compilar e gravar.

Por onde começar

Se você chegou aqui procurando entender o que é o PIO antes de instalar, o próximo passo é escolher um dos dois caminhos práticos: o tutorial de primeiros passos pelo VS Code, todo por botões, ou o de linha de comando com a placa que tem display. Os dois usam o mesmo projeto e o mesmo platformio.ini descrito aqui — agora com o vocabulário fazendo sentido.

Configuração platformio.ini:

platformio.ini
ini
1[env:esp32dev]
2platform = espressif32
3framework = arduino
4board = esp32dev
5monitor_speed = 115200
6lib_deps =
7 adafruit/Adafruit GFX Library@^1.11.11
Ver mais tutoriais técnicosIIoT ESP32 Brasil — Documentação Prática