Blog
ESP-IDF: SDK, build e comparação com Arduino
O que é o ESP32 IDF, como instalá-lo e como montar um primeiro projeto — o ESP-IDF é o SDK oficial em C/C++ da Espressif, e ele desce mais fundo que o invólucro do Arduino. Respostas curtas para as perguntas que surgem quando o board manager deixa de ser suficiente.
O que é o ESP32 IDF?
O ESP-IDF (Espressif IoT Development Framework) é o SDK oficial em C/C++ da Espressif — a empresa que fabrica o chip. Você ganha FreeRTOS, drivers de hardware e o sistema de build idf.py em vez do invólucro amigável do Arduino. Não é uma linguagem e não é uma IDE; é a toolchain com a qual a própria documentação do chip conversa.
Como instalar o ESP32 IDF?
No Windows, a Espressif IDE ou o instalador do esp-idf prepara Python, Git e toolchains numa tacada só. No Linux: git clone –recursive do repositório, depois source install.sh e export.sh. Reserve 4–6 GB de disco e 10–20 minutos; minha instalação v5.3 num notebook de 2022 levou 14 minutos.
Como colocar um projeto no ESP32 IDF?
Um projeto é uma pasta só: um diretório main/ com seus arquivos C mais um CMakeLists.txt no topo. Copie um dos exemplos em examples/get-started, rode idf.py set-target esp32s3 uma vez e depois idf.py build. Código estilo Arduino não entra sem mudanças — o ESP-IDF quer app_main(), não setup() e loop(). O FAQ de primeiros passos cobre o caminho do Arduino se é de lá que você vem.
Como rodar o boot.py no ESP32?
boot.py é o script de inicialização do MicroPython, não um conceito do ESP-IDF. Grave o MicroPython primeiro (esptool.py write_flash 0x1000 micropython.bin), depois envie boot.py para o filesystem e ele roda em todo boot. Esperando boot.py no ESP-IDF? Firmware errado para o trabalho.
ESP-IDF ou Arduino — qual devo usar?
Os dois funcionam; a resposta depende da sua placa e da sua paciência. Arduino é um invólucro que esconde o sdkconfig e o sistema de build. O ESP-IDF te dá controle e combina com a documentação oficial — que é boa, mas assume experiência em C. Para qualquer coisa com deep sleep mais Wi-Fi, ou para um produto, o ESP-IDF é a aposta mais segura; para um protótipo de hobby, o Arduino chega lá mais rápido.
O que é app_main() e por que meu build quer ele?
Todo projeto ESP-IDF define exatamente um app_main() — o ponto de entrada, sem a divisão setup()/loop(). Crie uma tarefa FreeRTOS dentro dele e mantenha-a viva. Se o seu build termina em ‘undefined reference to app_main’, essa função é a peça que falta.
O que é sdkconfig, e devo editá-lo?
sdkconfig é a config gerada do seu projeto, regenerada a cada build limpo. Não edite na mão: o idf.py menuconfig escreve por você. sdkconfig.defaults é o arquivo para commitar. O FAQ por baixo do capô explica como a config se propaga para o build.
O que significa “fatal error: driver/gpio.h: No such file or directory”?
Dependência de componente faltando. O header existe no SDK — o seu CMakeLists.txt só não o declara em REQUIRES. Uma linha resolve, e é o erro de compilação ESP-IDF mais comum que já ajudei a debuggar em fóruns. Eu mesmo tropecei nele no meu primeiro projeto às 2h da manhã; a correção levou 20 segundos depois que parei de entrar em pânico.
Como definir o baud rate de um ESP32 usando ESP-IDF?
Rode idf.py menuconfig → Serial flasher config → Default flash baud rate. Essa é a resposta direta para “how to set baud rate of a ESP32 using ESP-IDF”: é a velocidade de gravação, não a velocidade UART do seu app. A velocidade do seu aplicativo é um parâmetro do driver UART que você define no código, separadamente.
Dá para rodar código Arduino dentro do ESP-IDF?
Sim, cores recentes trazem o Arduino como componente opcional — o idf.py add-dependency espressif/arduino-esp32 puxa. Na maioria funciona, embora misturar os dois mundos confunda: dois sistemas de config, duas APIs de timer. Escolha um por projeto. Debuggar projeto misto é onde o FAQ de debug se paga.