ESP32

Como instalar o firmware MicroPython no ESP32

ESP32 | Do bit Ao Byte | MicroPython no ESP32 | Processamento paralelo com ESP32 | Selecionar uma CPU | mutex no freertos | tasks no esp32 | FreeRTOS com ESP32 | timer com ESP32 | partições 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?

Minha recomendação é que você adquira do mesmo lugar que veio o meu. Pegue na AutoCore Robótica através desse link.

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:

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:

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:

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:

É 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):

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

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:

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:

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

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:

Depois volte ao diretório esp32 e digite make:

Ao final da compilação você deverá ver algo como:

MicroPython no ESP32 - compilação do firmware
MicroPython no ESP32 – compilação do firmware

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

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:

MicroPython no ESP32 - acesso ao prompt
MicroPython no ESP32 – acesso ao prompt

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 newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do bit Ao Byte – https://www.facebook.com/groups/dobitaobyte/

Projetos Arduino e Eletrônica – https://www.facebook.com/groups/projetosarduinoeletronica/

ESP8266 BR – https://www.facebook.com/groups/ESP8266BR/

Próximo post a caminho!