Manual

do

Maker

.

com

Como instalar o firmware MicroPython no ESP32

Como instalar o firmware MicroPython no ESP32

Até um dia anterior à publicação desse artigo eu não havia conseguido instalar ainda o firmware MicroPython no ESP32, mas por acaso dei uma "passeada" pelo repositório e vi que em pleno domingo fizeram a atualização do repositório e, adivinha? MicroPython funcionando no ESP32! Fiquei bastante feliz, porque o o esp-idf não é lá uma API muito interessante e agora as coisas ficaram bem mais fáceis com o MicroPython  que - digo assim de passagem - chegou primeiro que o Sming (meu framework preferido).

Onde comprar o ESP32?

Em nossos parceiros aí do carrossel acima, claro. São parceiros de longa data, leais, reconhecidos e contam com o suporte do blog para manter conteúdo sempre atualizado.

Quais as vantagens de instalar MicroPython no ESP32?

Prompt de comandos

Primeiro, a excelente opção de ter acesso a um prompt onde você pode testar toda a lógica que deseja implementar antes de subir seu programa.

Enviar seu programa para o ESP32

Outra vantagem é que "subir o programa" significa realmente criá-lo em seu notebook/desktop e posteriormente enviá-lo para a raiz do sistema, para o sistema de arquivos do MicroPython no ESP32. Não conhece o sistema de arquivos SPIFFS? Tranquilize-se, logo mais vou passar uns links de referência para cada um dos recursos que eu citar aqui.

WEBREPL

Com MicroPython no ESP32 você tem a opção de acessá-lo pelo browser através do protocolo WEBREPL. Além disso, ainda poderá utilizar esse mesmo recurso para enviar arquivos para o sistema de arquivos dele. Também será referenciado em um link mais adiante, apenas empolgue-se!

Recursos do Python

Entre as demais características estão ativos por padrão o unicode, inteiros de precisão arbitrária, floats, números complexos, bytecode e montes de módulos internos!

Sistema de arquivos

Utilizando-se da flash, você conta com o sistema de arquivos SPIFFS, contando com 256K para gravar tudo o que desejar! É "muito" espaço isso!

Além disso, o módulo machine com o controle dos GPIO, I2C e SPI. Pronto para começar?

Preparando o ambiente

A frase que você vai encontrar tradicionalmente em meus artigos é "eu não uso Windows há mais de 20 anos". Logo, o tutorial é completamente voltado para Linux, mas você pode instalar um Linux (preferencialmente Debian) em uma máquina virtual no seu Windows e então seguir esse tutorial. Recomendo fortemente a instalação do VirtualBox.

Para começar (já dentro de seu Linux, seja nativo ou virtual), crie um arquivo (se não existir) ~/.bash_profile e adicione o seguinte conteúdo:

export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin
alias get_esp32="export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin"
export IDF_PATH=~/esp/esp-idf

Não se esqueça do "." prefixando o arquivo; isso significa que ele é um arquivo oculto. Até aqui isso não serve pra nada, é apenas um pré-requisito para a compilação do seu firmware. Essas linhas estão adicionando ao path o caminho do cross-compiler para o ESP32 e o caminho do SDK para o ESP32.

Agora instale os pacotes de dependência. Sem isso, você obterá erros e não poderá seguir adiante, então não tenha preguiça:

sudo apt-get install git wget make libncurses-dev flex bison gperf python python-serial

Download do toolchain

Na publicação desse artigo, a versão mais atual é  essa para Linux x86_64. Esse toolchain é o pacote do compilador, fundamental para a compilação do firmware, uma vez que ele fará a compilação para a plataforma cruzada, isto é, binário para a plataforma Tensillica invés de binário para x86.

Vamos manter tudo em um lugar só para não fazer bagunça. Após o download, crie um diretório chamado "esp" em seu home e descomprima o arquivo dentro dele:

mkdir ~/esp && cd ~/esp
wget -c https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz
tar zxvf xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz

Mais uma vez, isso não será utilizado de imediato, lembre-se que estamos apenas preparando o ambiente para utilização.

ESP-IDF

Agora será necessário baixar a API para o ESP32. Ainda dentro do diretório esp, digite (ou copie e cole) a seguinte linha de comando:

git clone --recursive https://github.com/espressif/esp-idf.git

É fundamental que você use a opção "--recursive" para que sejam baixados os sub-módulos, necessários para uma compilação com sucesso.

Hello World

Hora de experimentar seu SDK para ver se está tudo ok até aqui. Faça uma cópia do diretório de exemplo hello_world para dentro do diretório esp (o nível de diretório atual em que você deve estar nesse momento):

cp -r ~/esp/esp-idf/examples/get-started/hello_world/ .

Agora entre no diretório copiado e vamos ver uma novidade:

cd hello_world
make menuconfig

Com o comando "make menuconfig" você obtém um menu para configurar o funcionamento do firmware! Aqui você deve configurar os parâmetros da comunicação serial. Após gravar o "hello world", ele imprime a mensagem e em 10 segundos ele reinicía o MicroPython no ESP32, imprime novamente e assim o processo se repete. Nos links deixados mais adiante está também uma referência introdutória ao ESP32. Considerando que o dispositivo foi encontrado em /dev/ttyUSB0, claro.

Após configurar e sair do menu, digitei "make flash" para compilar e subir o firmware. Para ver o resultado, da comunicação, basta digitar "make monitor". Se quiser executá-los na sequência, digite "make flash monitor".

Links adicionais

Esses links são referências para os seguintes conteúdos:

Passamos pela fase 1, agora podemos iniciar a preparação do ambiente para o MicroPython. Dentro do diretório esp-idf que você clonou anteriormente, faça agora o clone do micropython:

git clone https://github.com/micropython/micropython-esp32.git

Eu fiz nessa ordem; talvez seja uma boa ideia  fazer o próximo passo antes desse, mas como funcionou assim para mim, recomendo o procedimento. Entre no diretório esp-idf/micropython-esp32 e digite:

make -C mpy-cross

Depois, suba mais um nível de diretório, entrando em esp32/ e busque pela linha ESPIDF_SUPHASH:

egrep '^ESPIDF_SUPHASH' Makefile

O retorno será uma linha contendo o respectivo hash ao final. Copie o hash, que é a versão do esp-idf compatível com o MicroPython. Desça 2 níveis de diretório (novamente para o diretório esp-idf) e regrida a versão para a versão compatível:

cd ../.. && git checkout <hash_encontrado_no_Makefile>

Depois volte ao diretório esp32 e digite make:

cd - && make

Agora você precisará limpar a flash primeiramente e depois gravar o novo firmware. Para tal, execute os seguintes comandos:

make erase && make deploy

Se for utilizar sudo, ele utilizará as variáveis de ambiente. Se digitar 'su', precisará daquelas primeiras linhas do export novamente. Nesse caso, você pode copiar e colar sem problemas.

Depois disso você já poderá fazer uma conexão serial à 115200 de velocidade e apertando Enter no terminal vazio, deverá obter o prompt do MicroPython. Feito isso, já dá pra fazer um "hello world" pra ver o firmware funcionando.

Bem, você já está com o MicroPython instalado e funcionando se chegou a esse resultado. Os recursos são os mesmos disponíveis na versão do MicroPython para ESP8266, portanto deixarei agora todas as referências para que você possa se divertir bastante.

Versão estável do MicroPython para ESP8266 Webserver com MicroPython para acionar relé I2c com ESP8266 e MicroPython (lembre-se, esses tutoriais servirão para ESP32 também) Dicas rápidas de ESP8266 com MicroPython - aqui você vê como utilizar o WEBREPL, SPIFFS, configurar WiFi, trocar SSID, instalar módulos, lista de código de erros, interrupções, buffer de emergência, como não utilizar delay...

Programar para ESP8266 com MicroPython - Aqui você entenderá o processo de boot, outra vez configuração de WiFi (STA+AP), utilização da REPL por web e por serial.

Como utilizar MQTT no ESP8266 com MicroPython Biblioteca para a AFSmart Reparar o sistema de arquivos SPIFFS Primeiros passos com ESP32 e algumas IDEs - Esse artigo é ótimo, introduzindo-o ao ESP32 e mostrando a configuração e uso de diversas IDEs. Chega de IDE de Arduino para ESP, hum?

Configurar o WiFi do ESP32 pelo bluetooth - Não servirá para MicroPython, mas é interessante conhecer o que o esp-idf oferece.

 Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.