Instalando a ESP IDF no Windows – ESP32
Neste tutorial, vamos aprender a instalar a Toolchain juntamente com a ESP IDF, que é um ambiente completo de desenvolvimento pro ESP32, onde é suportado todas features, opções e configurações sobre o microcontrolador, permitindo que o ESP32 se encaixe perfeitamente nos mais variados projetos, desde simples até industriais!
[toc]
O que é a ESP IDF e quais são os pontos fortes?
Normalmente chamada apenas de IDF, podemos dizer que esta engloba todos os conjuntos de API’s e configurações do ESP32. Já a Toolchain (mingw32) consiste em uma ferramenta que compila e constrói o código que escrevemos juntamente com as configurações escolhidas no “menuconfig”. Por fim, ESP IDF é o conjunto de bibliotecas feitas pro ESP32.
Os principais pontos a serem levados em consideração para você trocar a Arduino IDE ou outra, pela IDF são:
- Suporte a todas features, incluindo Bluetooth, Flash Encryption e Secure Boot (itens importantes para quem pretende criar e vender produtos).
- Configuração total do sistema, como por exemplo eFuses, clock, watchdog’s, timer’s, memória dinâmica para WiFi e até tempo de Wake-UP após Deep sleep.
Mãos a obra – Testando a ESP IDF
Instalando a Toolchain e ESP IDF
Usaremos alguns diretórios padrões para instalação, você pode optar por escolher qualquer nome e local, mas tome cuidado ao seguir o tutorial “ao pé da letra”.
1-) Faça o download da Toolchain em: http://esp-idf.readthedocs.io/en/latest/get-started/windows-setup.html
2-) Abra o .ZIP e copie a pasta “msys32” para a raiz do seu HD “C:\”.
3-) Faça o download do .ZIP da ultima release que encontrar, nesse caso é a 3.0-rc1: https://github.com/espressif/esp-idf/releases
Nota: há outras maneiras de baixar a IDF, como pelo próprio Toolchain. Caso precise de outros métodos, veja as referencias.
4-) Crie uma pasta chamada “ESP32” na raiz da “msys32” que você copiou no passo 2. Logo em seguida, abra o .ZIP do passo 3, copie a pasta dentro desse novo diretório “ESP32” e renomeie para “esp-idf”. Ficara parecido com: “C:\msys32\ESP32\esp-idf”
5-) Precisamos adicionar uma variável à Toolchain que guardará o diretório da pasta “esp-idf”, sem isso não funcionará corretamente.
Vá no diretório “C:\msys32\etc\profile.d” copie e cole qualquer script (extensão .SH), fazendo com que o arquivo fique duplicado.
Renomeie este script duplicado para “export_idf_path” e abra-o com algum editor de texto como bloco de notas e apague tudo o que estiver escrito. Escreva essa nova e única linha que indica ao Toolchain o diretório da esp-idf que instalamos:
export IDF_PATH=”C:\msys32\ESP32\esp-idf”
Finalmente instalamos todo o ambiente de programação e desenvolvimento do ESP32 no Windows, agora vamos copiar a pasta de algum exemplo da IDF para que seja nosso local de trabalho.
Vamos copiar a pasta do projeto “hello world” que se encontra em “C:\msys32\ESP32\esp-idf\examples\get-started\” no mesmo local que nossa pasta “esp-idf” e renomeá-la “esp32”.
Pronto! Podemos usufruir de todas features e configurações do ESP32. Se você não souber usar o painel da IDF, logo abaixo em “Entendendo a fundo”, explicaremos como usar a IDF para compilar e configurar seus projetos.
Componentes necessários
- 1x – ESP32 (Usaremos o NodeMCU32).
Código do projeto
Não iremos programar nada! Apenas dar upload do antigo “hello world” que copiamos logo acima, veja abaixo em “Entendendo a fundo” como dar upload do código ao ESP32 pelo painel da IDF.
Colocando para funcionar
Após o upload do código e ver o monitor, já temos algumas informações sobre o nosso microcontrolador.
Entendendo a fundo
IDF
Para dar upload dos códigos, ver o “Serial monitor”, editar configurações do Bootloader e etc, precisamos usar o painel (CMD) da IDF.
Antes de mostrarmos alguns comandos da IDF, vamos configurar o nosso projeto ESP32 (antigo hello world) para que o upload seja feito e vejamos funcionando.
1-) Abra o programa “mingw32” que se encontra em “C:\msys32\”, abra a pasta do projeto com “cd /esp32/esp32” e abra o menu de configurações com “make menuconfig”
Aqui é o paraíso do ESP32, onde conseguimos configurar praticamente tudo desse microcontrolador, desde clock até alocação de memórias dinâmicas e Watchdog.
Precisamos escolher a porta COM em que seu ESP32 está plugado no computador, você encontra isso em “Gerenciador de dispositivos” no Windows, o nosso está na porta COM8.
2-) Vá em “Serial flasher config” e altere a “Default serial port” para sua porta COM, o nosso será COM8. Você também pode alterar a velocidade de upload caso seu conversor suporte, normalmente é o CP2102 que suporta até a opção “921600”.
Aconselhamos fortemente que se você pretende usar o ESP32 para algo comercial ou projeto sério, leia e configure todas as opções do ESP32 corretamente para seu projeto, você pode ver a ajuda de cada configuração apertando “H” e nas referencias.
Agora que configuramos a porta COM correta para upload, salve e saia do menuconfig.
3-) Digite “make flash monitor” para que comece a compilação do seu código, isso pode demorar MUITO toda vez que você altera o menuconfig, pois o Toolchain recompila todos os componentes, entretanto, após a primeira compilação depois da alteração do menuconfig, não demora mais que 60 segundos.
A dica para acelerar essa primeira compilação é usar todos os núcleos do seu processador. É indicado usar o numero de núcleos + 1. Nosso computador tem 4 núcleos, então vamos usar o seguinte comando: “make flash monitor -j5”, isso deixa a compilação extremamente mais rápida.
Nosso código será finalmente enviado ao ESP32 e automaticamente após o termino, será aberto o “Serial monitor” que mostrará algumas informações sobre seu microcontrolador.
A partir daqui você já pode aproveitar a IDF, também existem alguns comandos interessantes e únicos:
- make help: mostra todos os comandos da IDF e o que fazem.
- make: mostra alguns comandos de compilação e endereços dos binários.
- make flash: da upload do código ao ESP32.
- make monitor: abre o “Serial monitor”.
- make clean: apaga a pasta BUILD do projeto.
- make erase_flash: apaga toda a FLASH do ESP32, incluindo seções de memória não volátil como NVS, FAT e EEPROM.
- make size: mostra o tamanho dos binários como o uso da FLASH e RAM.
Considerações finais
A ESP-IDF é um prato cheio pra quem pretende se aprofundar no ESP32 desde motivos profissionais ou educacionais, uma vez que este é barato e confiável até para aplicações industriais, diferente do ESP8266.
Você ainda pode usar bibliotecas do Arduino como a WiFi, Serial e WiFiClient em vez das originais da IDF, isso é chamado de “Arduino component”, onde podemos usar tanto as bibliotecas e funções do Arduino, quanto da IDF. Para isso, precisará alterar algumas coisas da pasta do seu projeto que são ensinadas aqui: https://github.com/espressif/arduino-esp32/blob/master/docs/esp-idf_component.md
Referencias
http://esp-idf.readthedocs.io/en/latest/get-started/windows-setup.html
http://esp-idf.readthedocs.io/en/latest/get-started/index.html
http://esp-idf.readthedocs.io/en/latest/get-started/add-idf_path-to-profile.html
https://github.com/espressif/arduino-esp32/blob/master/docs/esp-idf_component.md
Olá pessoal. Será que alguém poderia me ajudar ? estou tentando compilar e gravar um projeto de exemplo no esp32. Mesmo já tendo feito todas as configurações, quando executo o comando MAKE FLASH aparece o seguinte erro. “The following Python requirements are not satisfied:
pyelftools>=0.22”, já verifiquei várias vezes e tenho certeza que pacote está instalado, porém sempre ocorre este erro. Alguém aí sabe como resolver este problema ?
Uma pergunta: alguém tem alguma experiência com o ESP32 para recepção de áudio via Bluetooth?? Caso sim, poderia indicar alguma fonte de informação?? Grato pela atenção.
… excelente artigo … porém estou com um pequeno problema, quando tento executar “make menuconfig” no diretório “/esp32/esp32” obtenho a seguinte mensagem: “Makefile:8: ”C:msys32ESP32esp-idf”/make/project.mk: No such file or directory
make: *** No rule to make target ‘”C:msys32ESP32esp-idf”/make/project.mk’. Pare” …. e não consigo ir adiante.
Ficaria muito grato com alguma ajuda
Estou com o mesmo problema.
editou o path la no profile.d? fecha e reabre o mingw32.
Olá pessoal, também tive o mesmo problema e analisando um pouco descobri.
no arquivo.sh, que está na pasta profile.d vocês copiaram e colaram o comando que está aqui no site ” export IDF_PATH=”C:\msys32\ESP32\esp-idf” ”
Porém as aspas deste comando acima são caracteres especiais diferentes da aspas usadas.
aconselho vocês digitarem o comando na mão, ou substituir as aspas que especificam o caminho.
Muito obrigado Muriel!