Carregar Programas de MicroPython

Tempo de leitura: 8 minutes

MICROPYTHON E WI-FI

  • Veremos como carregar programas do nosso PC para o disco interno do esp8266
  • Descreveremos dois métodos para carregar: através de comandos externos ou acessando wia WEB e WIFI.
  • Veremos que mesmo via sem fio o console remoto se comporta exatamente da mesma maneira.
  • Veremos como executar esses programas uma vez carregados.

 

CARREGANDO PROGRAMAS DE MICROPYTHON

Até agora vimos algumas instruções básicas com MicroPython e como usá-las no interpretador interativo ou REPL, o que sem dúvida é muito interessante, mas impraticável se quisermos armazenar um programa em nosso módulo Esp8266.

Por isso temos que ver como despejar esses programas que estamos fazendo no disco interno do ESP8266 para que possamos executá-los sem ter que escrever as instruções uma a uma.

Em nossos PCs, as coisas são muito fáceis, basta salvar o programa em disco e chamá-lo depois. Mas com o módulo NodeMCU/esp8266 a questão é um pouco mais complicada, pois não temos um sistema operacional para nos ajudar.

Para começar, não temos um editor como o que temos no IDLE do Python e não temos acesso externo a esse disco interno que vimos em uma sessão anterior. É por isso que vamos precisar de uma ferramenta externa que nos permita despejar os programas e também usar um editor de programas externo.

Resumindo, vamos precisar de um editor externo por um lado e uma forma de despejar os programas que fazemos dentro do disco interno para executá-los.

O EDITOR EXTERNO

A opção mais óbvia para editar seus programas fora é usar qualquer um dos editores usuais, como o incluído no Python 3.9 que já instalamos.

É confortável e rápido porque se você já usou Python já está acostumado e não precisa de nada para começar. Mas há muitos outros disponíveis se, por qualquer motivo, você não quiser usá-lo, como notead++ , que é simples, gratuito e de domínio público.

Mas imagine, voltando ao nosso problema original que queremos escrever um programa que faça o led piscante em nosso NodeMCU (que imaginação incrível)

Poderíamos escrever algo assim em nosso editor escolhido:

import machine, time

def toggle(p):
    p.value(not p.value())
    
pin = machine.Pin(2, machine.Pin.OUT)
while True:
    toggle(pin)
    time.sleep_ms(300)
    print("Running...")

Nós o salvamos em disco com o nome não original de toggle.py

O problema agora é que temos este programa em nosso disco rígido e temos que passá-lo para o módulo esp8266, mas temos um pequeno problema.

BAIXAR PROGRAMAS PARA ESP8266

Não há uma maneira direta de despejar esses programas no módulo, mas a boa notícia é que alguns benfeitores da humanidade escreveram programas que nos permitem fazê-lo.

A má notícia é que eles são muito estilo Linux (com janelas de comando e tudo o que você tanto gosta) que tendem a horrorizar os usuários médios do Windows que estão convencidos de que no início os computadores já nasceram com janelas gráficas e que têm dificuldades em entender por que alguém continua usando um sistema tão obscuro e estranho.

Portanto, existem basicamente duas soluções, uma é usar uma ferramenta de despejo (com comandos e outras coisas) e outra mais fácil usando WIFI e fazendo o despejo diretamente com um navegador da web.

Não tenho dúvidas de que a maioria de vocês terá se inscrito imediatamente para esta segunda opção (eu conheço você), mas os testes me mostraram que os comandos são mais confiáveis ​​​​do que o modo WERPL via WIFI, pois aparentemente só funciona para mim em dias pares e sempre me deixa com um gosto estranho na boca.

  • Você tem que entender que essa coisa toda do MicroPython ainda está em beta e nem tudo funciona como gostaríamos, mas isso também é um pouco divertido, ser pioneiro é legal.
  • Mas deve-se lembrar também que os pioneiros são reconhecidos pelas flechas que os índios os apunhalam pelas costas.

Então vamos começar com os utilitários de linha de comando que nos permitem despejar programas no NodeMCU

 

DESCARREGANDO COM COMANDOS

A primeira ferramenta que tentei usar foi o Ampy dos nossos amigos da Adafruit. Eu gosto dessas pessoas. Eles estão comprometidos com a comunidade em geral e se esforçam muito para nos fornecer ferramentas e bibliotecas gratuitas, então encorajo você a apoiá-los sempre que puder.

O problema que encontrei foi que não consegui fazer o Ampy funcionar, porque eram todos problemas que aparentemente só aconteciam comigo.

Tenha em mente que o desenvolvimento de todas essas ferramentas geralmente é feito a partir do Linux e é por isso que as portas para o Windows não são tão boas quanto deveriam (E obrigado por se incomodar)

Então, no final, optei pelo mpfshell que funcionou para mim quase pela primeira vez e ainda funciona para mim hoje e esta é a versão que vamos usar.

Vamos começar com um exemplo de tudo isso. Crie um programa Python, com seu editor favorito, chamado toggle.py que contém essas linhas (acho que já colocamos acima):

import machine, time

def toggle(p):
    p.value(not p.value())
    
pin = machine.Pin(2, machine.Pin.OUT)
while True:
    toggle(pin)
    time.sleep_ms(300)
    print("Running...")

Eles simplesmente ligarão e desligarão a luz interna a cada meio segundo. Vamos ver como despejá-lo e executá-lo no NodeMCU.

A primeira coisa é instalar o mpfshell, para isso abra uma janela de comando e digite:

pip install mpfshell

Como você pode ver, temos uma mensagem de sucesso na instalação, mas se você invocar o mpfshell agora, encontrará um belo erro:

O motivo é que você instalou com êxito o programa em um diretório que não está no caminho e não pode encontrá-lo. Ele pode ser corrigido simplesmente copiando o mpfshell.py de onde está agora para o diretório de scripts python se estiver no caminho:

copy c:\Python27\Lib\site-packages\mp\mpfshell.py \Python27\Scripts 

Caso não ache neste path, veja em c:\User\xxxx\AppData\Local\Programa\Python\Python39

Este instrução veio do proprio comando, só que o Python meu atual é o 3.9 e a instalação é diferente como informei acima, tente este path como mostro abaixo.

c:\User\xxxx\AppData\Local\Programa\Python\Python39\Lib\site-packages\mp>copu mpfshell.py c:\Users\xxx\Appdata\Local\Programa\Python\Python39

 

E agora você pode executá-lo e verá as cores do shell:

Pressione [CTRL] + C para sair. Agora podemos despejar nosso humilde toggle.py

Vamos fazer o exemplo completo de despejar o programa toggle.py em nosso módulo. Para fazer isso, a primeira coisa será que você vá até o diretório onde está o arquivo. No meu caso c:\python27 e a partir daí chamamos mpfshell:

  • Observe que você precisa escrever mpfshell.py e não apenas mpfshell.

A Shell nos oferece toda uma coleção de ajudas para lidar com o disco interno do Esp8266. O comando de ajuda fornece uma lista de comandos disponíveis. Este não é o momento de entrar neles, mas vamos usar alguns deles.

Para começar temos que conectar com o módulo através da porta com correspondente no meu caso a com7, mas você substitui isso pelo que corresponde:

open com7
ls

No meu caso existe apenas um arquivo chamado boot.py que, se você se lembrar do que discutimos na última sessão, sempre é executado quando o módulo é inicializado. Quer ver o que contém? Nada mais fácil:

get boot.py

Isso copiará o arquivo boot.py para seu diretório atual, que no meu caso é \python39

Se você quiser ver seu conteúdo, basta editá-lo no seu PC:

Não é ruim, mas o que queríamos é fazer upload de programas, não baixá-los, digamos mais de um. Bem tão fácil:

put toggle.py
ls

O comando put passa o arquivo no diretório atual para o disco interno. Temos que fazer algumas considerações aqui:

  • Não consegui transferir arquivos além do diretório atual, ou seja, aquele diretório do pc do qual invocamos o mpfshell
  • Quando tento fazer um put com um caminho do Windows, o Shell nega calmamente dizendo que é um caminho inválido (aguardaremos a próxima versão) e por isso é conveniente invocá-los a partir do diretório do qual o arquivo Está contido.

Uma vez que o arquivo toggle.py foi transferido, podemos vê-lo a partir do REPL do módulo (desde que você feche o mpfshell antes, caso contrário, ele bloqueará o uso da porta serial do módulo) e normalmente é conveniente redefinir o módulo.

Para executar o toggle.py, basta chamá-lo com uma importação. Ele irá carregar o programa e executá-lo imediatamente, o led interno começará a piscar (que é a única coisa que nosso programa faz, além de emitir uma mensagem repetitiva).

import toggle

O programa está em um ciclo eterno de imprimir “Running” e fazer o LED piscar. Se você quiser pará-lo, basta interromper a execução com [CTRL] + C.

  • Se quisermos executar o programa novamente estamos errados, pois mesmo repetindo a importação, o micropython considera que já está carregado e, portanto, não carrega ou executa novamente e não sei como iniciá-lo novamente, mas é com reset pressionando o botãozinho na placa e repetindo a operação anterior.

 

CONEXÃO WIFI

Vamos com a parte que você gosta, sem cabos e malucos. Lembre-se de que já comentamos antes, que por padrão o MicroPython inicia o módulo no modo ACCES POINT, ou seja, podemos nos conectar a ele como se fosse um roteador e, de fato, é a primeira coisa que vamos Faz.

Pesquise no WIFI por um ponto de acesso chamado algo como MicroPython-xxxx e conecte:

Ele solicitará uma chave de acesso. Se for a primeira vez, a senha é: micropythoN (com o último N em maiúscula, preste atenção). Para verificar se você está conectado, abra uma janela de comando e digite:

Você verá que seu roteador padrão é 192.168.4.1 e seu IP é um no mesmo intervalo. É um bom sinal. Para conectar usando o navegador precisamos baixar e configurar o WEREPL

Para fazer isso, execute o seguinte comando do micropython:

import webrepl_setup

Isso inicia um utilitário de configuração de acesso WIFI, que solicita que você autorize o assunto (com E para Ativar) e, em seguida, solicita uma chave de acesso: (Digite seus dados onde está XXXX)

E agora só falta baixar a versão local para acessar pela web aqui, ou baixar a versão local aqui.

Se você iniciar qualquer uma das duas versões do navegador, uma página como as que você vê abaixo aparecerá e você verá que na barra de endereços ela aponta para ws://192.168.4.1:8266, que é o endereço padrão adotado pelo micropython e porta 8266 (difícil de lembrar) para acesso remoto.

Ao clicar no botão Conectar:

Ele solicitará a senha que você definiu antes e, uma vez finalizado o procedimento, você estará na mesma situação de quando conectamos pela porta serial. Você pode usar os mesmos comandos e ele responderá exatamente da mesma maneira.

Agora olhe para o lado direito da página. Você verá os botões para selecionar arquivo (que permite pesquisar arquivos em qualquer diretório do seu PC) e o botão Enviar para dispositivo, que uma vez selecionado o arquivo, o carrega silenciosamente para o disco Nodemcu / ESP8266, e o botão Get do botão do dispositivo , que o copia do disco interno para o disco local, se necessário

Assim, estamos prontos para enviar nossos programas para o disco interno do Esp8266 quando precisarmos.