09 abril 2019

Programe o ESP32 em Python usando MicroPython

O módulo wifi ESP32 NodeMCU é uma evolução do ESP8266 e nele também é possível instalar o MicroPython aproveitando todos os recursos que essa linguagem oferece. Você vai ver que programar o ESP32 em Python é muito simples usando os procedimentos mostrados neste post.

Como programar o módulo Wifi ESP32 usando MicroPython

Basicamente o que vamos fazer é usar o uPyCraft, uma eficiente IDE de programação e que também possibilita a gravação do firmware no ESP32.

Instalando firmware MicroPython no ESP32


O procedimento que vamos mostrar aqui pode ser usado tanto no Módulo Wifi ESP32 NodeMCU como em um módulo ESP8266, com algumas adaptações (versão de firmware, placa, etc).

Tenho um outro post aqui no blog que também serve para essas duas placas e pode ser uma outra opção caso você tenha algum problema. Consulte o post Como instalar o MicroPython no ESP8266 NodeMCU.

Para que o uPyCraft funcione é necessário que você tenha na sua máquina uma versão do Python instalada. A versão mais atual você encontra neste link. Faça o download do arquivo de instalação (selecione Download Python X.X.X) e execute selecionando as opções padrão do instalador. É bem simples:

Página de download Python

Agora vamos baixar o firmware do MicroPython para o ESP32. Na página, procure por Firmware for ESP32 Boards e selecione o arquivo de imagem (.bin) que você deseja usar. A versão mais atual que estou usando na data de criação deste post é a v1.10-265, conforme abaixo:

Versões de firmware MicroPython para ESP32

Após baixar o firmware, faça o download do uPyCraft, disponível neste link. Ele é uma IDE de programação e através dele você pode não só gravar o firmware como veremos logo abaixo, como também realizar a comunicação com o ESP32 e transferir arquivos para ele.

O uPyCraft que você baixar tem apenas um executável e ao rodar o programa você verá a seguinte tela:

Tela inicial uPyCraft

Para gravar o firmware, selecione o menu Tools e escolha a opção BurnFirmware:

Menu Tools uPyCraft

Na tela seguinte, escolha a placa ESP32, selecione a opção Erase Flash (para apagar completamente a memória do ESP32) e no campo Firmware Choose coloque o caminho do firmware MicroPython que você baixou anteriormente. Atenção para o endereço de gravação, que deve ser 0x1000. Sua tela vai ficar mais ou menos assim:

Parâmetros de update de firmware

Clique em Ok e aguarde o processo de gravação. Na placa que estou usando foi necessário pressionar o botão BOOT para que fosse iniciado:

Botão BOOT ESP32

A imagem abaixo mostra como será o processo de gravação do firmware.

Gravando firmware...

Após a gravação, não esqueça de reiniciar o NodeMCU para que o novo firmware já com o MicroPython seja carregado.

Para checar se está tudo ok, selecione a porta COM referente ao seu ESP32 NodeMCU no menu Tools e nesse mesmo menu selecione a placa ESP32. 

Para realizar a conexão com o ESP32, clique no ícone da "corrente" no lado direito da IDE. Você poderá ver no lado esquerdo os arquivos que estão no módulo (boot.py) e na parte de baixo um prompt de comando:

Detalhe IDE uPyCraft


Pressione o botão EN para reiniciar o módulo e ele irá mostrar nessa parte inferior do uPyCraft a versão do MicroPython instalada:

Versão MicroPython gravada no ESP32


Tudo ok? Vamos testar a programação do ESP32 em Python.

Programando o ESP32 em Python


Vamos testar o MicroPython no ESP32 rodando o bom e velho blink, um dos programas mais básicos para quem vai testar plaquinhas e microcontroladores em geral e que pisca o led onboard do módulo.

No uPyCraft, selecione o menu File -> Examples -> Basic -> blink.py, conforme figura abaixo:

Caminho exemplo blink Python


O programa blink será carregado na área de edição:

Programa blink carregado


Nessa área você pode não só ver o programa como modificá-lo ou criar novos programas (usando o menu File -> New).

Se o programa solicitar que você crie um workSpace, saiba que nada mais é do que uma pasta no seu computador onde serão guardados os programas em Python para posterior transferência ao módulo ESP32 ou ESP8266.

O blink é bem simples e coloca o pino 2 como saída (linha 9 do programa), ligando ou desligando (led.value(1) e led.value(0)) o led em intervalos de 1/2 segundo (time.sleep(0.5)). 

Para executar o blink, selecione o ícone de "play" (DownloadAndRun) no lado direito da IDE:

uPyCraft DownloadAndRun

Observe na parte inferior da IDE as mensagens que devem aparecer quando você rodar o programa, que é transferido para o módulo e em seguida executado: 

Programa carregado



Se tudo estiver certo, o led onboard do módulo ESP32 NodeMCU comecará a piscar em intervalos regulares:

Módulo Wifi ESP32 NodeMCU com Blink em Python

O uPyCraft vem ainda com várias bibliotecas pré-instaladas, como por exemplo para o sensor de temperatura DHT, displays LCD e conexão à internet, entre outras. Vamos explorar essas bibliotecas em uma outra oportunidade.

Gostou? Então confira outros posts sobre ESP32 aqui mesmo no Arduino e Cia!


Nenhum comentário:

Postar um comentário