15 julho 2018

Como instalar o MicroPython no ESP8266 NodeMCU

Já ouviu falar de MicroPython? Ele é uma versão reduzida do interpretador Python, feita para rodar em microcontroladores e permite que você use todas as facilidades da linguagem para programar o seu dispositivo, e neste post vamos mostrar como instalar o MicroPython no ESP8266 NodeMCU.

MicroPython e ESP8266 NodeMCU

O módulo wifi ESP8266 NodeMCU já apareceu várias vezes aqui no Arduino e Cia, então vamos direto ao ponto, mostrando como implantar o MicroPython nessa placa.


Download do firmware MicroPython

Antes de mais nada, vamos fazer o download do firmware do MicroPython, que você encontra nesta página.

O firmware nada mais é do que um arquivo com extensão ".bin", e vou utilizar nos testes a versão mais atual disponível, no caso a 1.9.4:

Download do firmware MicroPython

Por enquanto apenas guarde o local onde o arquivo foi baixado, pois vamos utilizá-lo no próximo passo.

Nota: O procedimento abaixo foi testado em módulos wifi ESP8266 NodeMCU, com o ESP-12 idenfificado como ESP-12F e ESP8266MOD. Segundo a documentação do MicroPython o procedimento é válido para todas as versões do ESP8266, variando o firmware de acordo com a quantidade de memória flash do módulo que você deseja gravar.

Gravando o MicroPython no ESP8266 NodeMCU


Para gravar o firmware MicroPython no ESP8266 NodeMCU, vamos usar o NodeMCU Flasher, disponível neste link. Não é necessário instalar o programa. Apenas descompacte o arquivo que você baixou, conecte o NodeMCU na USB do seu computador e execute o ESP8266Flasher.exe, que se encontra na pasta Win32\Release (para versões Windows de 32 bits) ou Win64\Release (para versões Windows de 64 bits).

Ao rodar o NodeMCU Flasher, será exibida a tela abaixo, onde já é mostrada a porta serial em que o NodeMCU foi encontrado (no caso, a porta COM8):

Tela principal NodeMCU Flasher

Selecione a aba Advanced e selecione os parâmetros abaixo:

Tela Advanced NodeMCU Flasher Serial

Na aba Config vamos setar o path (caminho) do firmware que baixamos anteriormente. Configure também o endereço 0x00000 no lado direito da tela:

Configurações de firmware MycroPython NodeMCU Flasher

Com as configurações finalizadas, volte para a aba principal (Operation), e selecione Flash para que a gravação do firmware seja iniciada.

Gravando firmware MicroPython no ESP8266 NodeMCU

Aguarde o final do processo e se tudo estiver OK, o NodeMCU agora já está com o firmware MicroPython instalado. Reinicie o NodeMCU para que o novo firmware seja carregado.

Testando o MicroPython no NodeMCU


Vamos testar o MicroPython no NodeMCU usando um programa de comunicação serial. Vou usar o Termite (download), mas você pode usar outros programas com o TeraTerm, Putty, etc. Configure a velocidade da serial (baud rate) do seu programa para 115200, selecione a porta serial correta e faça a conexão com o seu ESP8266 NodeMCU. Se você reiniciar o módulo, verá as informações iniciais do firmware MicroPython que você instalou:

Termite NodeMCU com MicroPython

Também é exibido o prompt do Python (>>>), indicando que você já pode entrar com os comandos em Python, como por exemplo print('Arduino e Cia'), que exibe a saída abaixo:

Python exibição de texto

Outro teste inicial que você pode fazer é manipular o Led onboard do ESP8266 NodeMCU, com a sequência de comandos abaixo:

import machine
pin = machine.Pin(2, machine.Pin.OUT)
pin.value(1)
pin.value(0)

A sua tela do programa de comunicação serial fica assim:

Python manipulação de GPIO NodeMCU

Alterne os comandos pin.value(1) para apagar o led onboard, e pin.value(0) para acender.

Programando o NodeMCU em Python usando a rede Wireless


Quando você grava o firmware do MicroPython no NodeMCU, ele já "sobe" com uma rede wifi configurada. No meu caso, a rede abaixo:


Você pode se conectar nessa rede para usar o WebRPL (o programa que disponibiliza um prompt do Python via Wifi). Utilize a senha micropythoN (com N maiúsculo no final), ou então conecte o seu NodeMCU no roteador (recomendo essa opção).

Para conectar o módulo ao roteador, utilize os comandos abaixo, substituindo SSID pelo nome da rede wifi que você deseja se conectar, e senha-wifi pela senha da rede:

import network
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('SSID', 'senha-wifi')

Verifique o IP que foi atribuído ao módulo com o comando sta_if.ifconfig()

Endereço IP NodeMCU

Antes de fazer a conexão, vamos configurar uma senha para o WebRPL no ESP8266 usando o comando import webrepl_setup. É uma pequena configuração que vai perguntar se você deseja que o WebREPL seja carregado durante o boot, vai pedir que você digite e depois confirme uma senha (coloquei a senha "arduino") e finalmente vai perguntar se você deseja reiniciar o ESP8266 para que as configurações tenham efeito:

WebREPL Setup MicroPython

Com o NodeMCU carregado e o WebREPL ativado no módulo com a nova senha, acesse este link, que vai mostrar a tela abaixo. Você também pode fazer o download do WebREPL direto no github.

MicroPython WebREPL

Preencha o endereço IP do seu módulo ESP8266 NodeMCU (no meu caso, 192.168.0.181) e clique em Connect. Entre com a senha que você configurou anteriormente e em poucos instantes o prompt do Python estará disponível para você programar o NodeMCU via Wifi:

MicroPython WebREPL Conexão

Claro que o MicroPython no ESP8266 NodeMCU não fica só nisso. Você pode criar arquivos, scripts, manipular a GPIO, usar PWM, interfaces, etc. Confira toda a documentação oficial do MicroPython para ESP8266 e divirta-se!

6 comentários:

  1. Funciona também no Wemos D1 Mini?

    ResponderExcluir
    Respostas
    1. Oi Samir,

      No momento eu não tenho um Wemos D1 mini para testar, mas por esse link creio que você consiga fazer:

      https://forum.micropython.org/viewtopic.php?t=2827&start=30

      Abraço!

      Adilson

      Excluir
  2. Muito bom o conteúdo do canal parabéns! poderia fazer um post apresentando o funcionamento do sensor de PH. Obrigado.

    ResponderExcluir
    Respostas
    1. Oi Luciano,

      Muito obrigado! Vamos arrumar um sensor de PH e montar um post. Pode deixar. ;)

      Abraço!

      Adilson

      Excluir
  3. Boa tarde, legal o site de vocês! Não consegui instalar microPython usando esse roteiro mencionado no artigo. Na parte de teste a porta serial apresenta vários caracteres como se a velocidade selecionada estivesse errada, testei várias velocidades e nada... o led built-in não parava de piscar.
    Optei por usar o roteiro em http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/intro.html#deploying-the-firmware e consegui instalar e usar a serial a 115200, estou usando Windows 10 pro 64 e o ESP8266 Lolin new NodeMcu V3. Agora estou com microPython instalado nesse ESP8266 de teste.
    Se vocês quiserem mais informações sobre o ESP que usei nos testes e outras informações para melhorar o artigo a fim de que novatos como eu não enfrentem muitas dificuldades estou a disposição para ajudar.
    Abraços e continuem o bom trabalho. :-)

    ResponderExcluir
    Respostas
    1. Oi Anderson!

      Muito legal! Obrigado pelas informações. Se puder compartilhar o que foi feito, pode responder por aqui mesmo ou se preferir, use o formulário de contato no lado direito da página.

      Abraço e obrigado! :)

      Adilson

      Excluir