, ,
Vimos que o NodeMCU ESP32 é facilmente programável utilizando o IDE Arduino. Veremos como programá-lo com MicroPython. O objectivo de utilizar Python para programar um ESP32 é utilizá-lo em todo o seu potencial.
Antes de seguir este tutorial, deve primeiro instalar o Python 3.
Neste tutorial veremos como configurar o ESP32, como utilizar um terminal para testar os comandos Python. Finalmente, veremos dois métodos para carregar e executar scripts Python no microcontrolador.
Apresentação de MicroPython
MicroPython é uma implementação de Python 3 criada para trabalhar no ambiente do microcontrolador e as suas limitações. Tem um subconjunto de bibliotecas Python, bem como bibliotecas para interface com hardware de baixo nível e interfaces de rede. (ex: Wifi)
Cartões de apoio ao MicroPython:
- ESP8266 Pranchas (por exemplo, NodeMCU ESP8266)
- PyBoard
- Micro:Bit
- Teensy 3.X
- WiPy – Pycom
- Framboesa Pi Pico
Instalação de MicroPython com Thonny IDE
A forma mais fácil de instalar e utilizar MicroPython no ESP32 (e outros microcontroladores) é utilizar o software Thonny IDE. Pode instalar o firmware a partir da interface do software e utilizá-lo para desenvolver o seu código e carregá-lo para a placa.
Descarregue o firmware para o seu microcontrolador.
Para instalar o firmware, vá ao menu “Executar” e seleccione “Seleccionar intérprete…”.

Depois prima “Instalar ou actualizar firmware” no canto inferior direito

Seleccione o seu cartão e o ficheiro que contém o firmware previamente descarregado. Depois prima “Instalar”.

Uma vez instalado o firmware, é possível introduzir comandos Python na consola.

Também pode escrever o seu guião e executá-lo no mapa a partir de Thonny. Copie o seguinte código para o editor
import sys import time def main(): print("Program is running ") time.sleep(0.5) if __name__=="__main__": print("{} initialized".format(sys.platform)) while(1): try: main() except KeyboardInterrupt: print("Program stopped") sys.exit(0)
Para executar o guião, vá para “Run>Run current script” ou F5. Renomear o guião main.py

O código deve ser executado automaticamente

Quando reinicia o IDE, pode abrir os ficheiros no cartão que pode recuperar com o comando
import os
os.listdir()
N.B.: Para programar o microcontrolador com o Arduino IDE, é necessário carregar um código Arduino. Isto irá recarregar o carregador do bootloader no flash.
Instalar o firmware no ESP32 por linha de comando
Para utilizar MicroPython, vamos apagar a memória flash do ESP32 e instalar o firmware. Para tal, utilizaremos a ferramenta esptool (.py ou .exe dependendo do que pretende utilizar)
- Instalar esptool.py
python3 -m pip install esptool
ou esptool.exe (disponível ao instalar o pacote esp no Arduino IDE)
- Apagar a memória flash (Nota: o nome da porta pode ser diferente do seu)
python3 -m esptool --chip esp32 --port COM9 erase_flash

- Descarregue o firmware, depois introduza a seguinte linha de código (Atenção: o nome da porta e o endereço do ficheiro podem ser diferentes do seu)
python3 -m esptool --chip esp32 --port COM9 --baud 460800 write_flash -z 0x1000 C:\Users\ADMIN\Downloads\esp32-idf3-20210202-v1.14.bin

Para podermos comunicar e programar o ESP com MicroPython, precisamos de instalar um terminal ou um IDE. Aqui veremos a utilização de PuTTy e TeraTerm.
Utilizar diferentes ferramentas para comunicar e programar o seu ESP32
Uma vez configurado o seu microcontrolador com Micropyhton, pode usar várias ferramentas para programar em Python. Terminais como TeraTerm ou Putty e IDEs como VS Code, uPyCraft ou Thonny.
Instalar o Terminal TeraTerm no Windows
Descarregar e instalar o TeraTerm
Abrir o TeraTerm e seleccionar a porta de série correspondente ao microcontrolador.

A seguir, configurar a comunicação em série dans Setup> Serial Port …

Pode agora utilizar o terminal para introduzir comandos Python e executá-los no ESP32

Instalação do terminal PuTTy
Descarregar e instalar PuTTy
Abrir Putty e seleccionar a porta de série correspondente ao microcontrolador.

A seguir, configurar a comunicação em série

Pode agora utilizar o terminal para introduzir comandos Python e executá-los no ESP32

Os terminais PuTTy e TeraTerm são ambas boas opções para testar alguns comandos Python mas não para fazer um programa completo.
Crie um script Python e carregue-o com ampy
Vamos escrever algum código simples para testar o carregamento do código para ESP32. Há dois ficheiros que são tratados de forma diferente pelo ESP32: boot.py e main.py. Por defeito, apenas boot.py está presente. O boot.py é executado primeiro e depois o main.py é executado por sua vez. Se quiser criar um guião que funcione no arranque, deve chamá-lo de principal ou executá-lo em principal. Se não quiser que funcione no arranque, chame-lhe outra coisa.
import sys import time def main(): print("Program is running ") time.sleep(0.5) if __name__=="__main__": print("{} initialized".format(sys.platform)) while(1): try: main() except KeyboardInterrupt: print("Program stopped") sys.exit(0)
Instalaremos então uma ampola que nos permitirá carregar um ficheiro no microcontrolador.
python3 -m pip install adafruit-ampy
Uma vez instalada a ampy, pode utilizá-la num prompt de comando com a função “put” para carregar um ficheiro, especificando o seu caminho e nome.
ampy -d 0.5 --port COM9 put \main.py

N.B.: Se encontrar o erro “ampy.pyboard.PyboardError: não foi possível introduzir a reposição em bruto”, pode aumentar o atraso para 1 ou 2 (ou seja, “-d 1” ou “-d 2”)
Se ligar ao ESP32 com um terminal, verá o programa em execução (pode parar o script com Ctrl+C)

O guião main.py será executado em cada reinicialização. Para o remover, introduza o seguinte comando no terminal
ximport os
os.remove('main.py')
Usando a uPyCraft IDE
Quando se desenvolve código e é necessário testá-lo, é complicado passar pelo prompt de comando para carregá-lo de cada vez. Existe uma IDE para Python, semelhante à IDE Arduino: uPyCraft que pode utilizar como editor e como terminal para fazer interface com o microcontrolador.
- Descarregar e abrir uPyCraft

- Dans Tools> Preferences, vérifiez la configuration du port série

- Dans Tools>Serial, sélectionnez le port série utilisé par le microcontrôleur

Assim que o microcontrolador estiver ligado à interface, pode utilizar a consola como um terminal

Pode também criar e editar um ficheiro contendo o guião Python. Uma vez que tenha escrito o código, pode carregá-lo e executá-lo pressionando F5. Para validar o carregamento do código, poderá ser necessário premir o botão reset no quadro. Pode parar o código pressionando Ctrl+C na consola.

N.B.: Pode reiniciar o guião sem fazer um reset, introduzindo o comando
exec(open('main.py').read(), globals())
Apagar o ficheiro
Se não quiser que o script seja accionado no reinício, tem de apagar o código main.py utilizando o comando num terminal ou no IDE
import os
os.remove('main.py')


Repor para a configuração padrão
A fim de programar o microcontrolador com Arduino IDE, deve apagar o ficheiro main.py se existir e carregar um código Arduino. Isto irá recarregar o carregador do bootloader no flash.
Para utilizar novamente MicroPython, a memória flash deve ser apagada e o firmware deve ser carregado.