fbpixel
Etiquetas: , ,

, ,

Hemos visto que el ESP32 NodeMCU es fácilmente programable utilizando el IDE de Arduino. Veremos cómo programarlo con MicroPython. El punto de usar Python para programar un ESP32 es utilizarlo en todo su potencial.

Antes de seguir este tutorial, debes instalar Python 3.

En este tutorial veremos como configurar el ESP32, como usar un terminal para probar comandos Python. Por último, veremos dos métodos para cargar y ejecutar scripts Python en el microcontrolador.

Presentación de MicroPython

MicroPython es una implementación de Python 3 creada para trabajar en el entorno del microcontrolador y sus limitaciones. Cuenta con un subconjunto de las bibliotecas de Python, así como bibliotecas para la interconexión con hardware de bajo nivel e interfaces de red. (por ejemplo: Wifi)

Tarjetas compatibles con MicroPython:

  • Placas ESP8266 (por ejemplo, NodeMCU ESP8266)
  • PyBoard
  • Micro:Bit
  • Teensy 3.X
  • WiPy – Pycom
  • Raspberry Pi Pico

Instalación de MicroPython con Thonny IDE

La forma más fácil de instalar y utilizar MicroPython en ESP32 (y otros microcontroladores) es utilizar el software Thonny IDE. Puedes instalar el firmware desde la interfaz de software y utilizarlo para desarrollar tu código y cargarlo en la placa.

Descarga el firmware de tu microcontrolador.

Para instalar el firmware, vaya al menú «Ejecutar» y seleccione «Seleccionar intérprete…».

thonny-run-menu Programar un ESP32 con MicroPython

A continuación, pulse «Instalar o actualizar firmware» en la parte inferior derecha

thonny-select-interpreter Programar un ESP32 con MicroPython

Seleccione su tarjeta y el archivo que contiene el firmware previamente descargado. A continuación, pulse «Instalar».

thonny-install-firmware Programar un ESP32 con MicroPython

Una vez instalado el firmware, puedes introducir comandos Python en la consola.

thonny-micropython-result Programar un ESP32 con MicroPython

También puedes escribir tu guión y ejecutarlo en el mapa desde Thonny. Copie el siguiente código en el 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 ejecutar el script, vaya a «Ejecutar>Ejecutar script actual» o F5. Cambia el nombre del script main.py

thonny-run-script Programar un ESP32 con MicroPython

El código debería ejecutarse automáticamente

thonny-micropython-script-result Programar un ESP32 con MicroPython

Cuando reinicie el IDE, podrá abrir los archivos de la tarjeta que puede recuperar con el comando

import os
os.listdir()

N.B.: Para programar el microcontrolador con Arduino IDE, debe cargar un código Arduino. Esto recargará el bootloader en la flash.

Instalar el firmware en el ESP32 por línea de comandos

Para utilizar MicroPython, borraremos la memoria flash del ESP32 e instalaremos el firmware. Para ello, utilizaremos la herramienta esptool (.py o .exe dependiendo de lo que quieras utilizar)

  • Instalar esptool.py
python3 -m pip install esptool

o esptool.exe (disponible al instalar el paquete esp en Arduino IDE)

  • Borrar memoria flash (Nota: el nombre del puerto puede ser diferente del suyo)
python3 -m esptool --chip esp32 --port COM9 erase_flash
nodemcu-esp32-erase-flash-esptool.py Programar un ESP32 con MicroPython
  • Descargue el firmware e introduzca la siguiente línea de código (Atención: el nombre del puerto y la dirección del archivo pueden ser diferentes de los suyos)
python3 -m esptool --chip esp32 --port COM9 --baud 460800 write_flash -z 0x1000 C:\Users\ADMIN\Downloads\esp32-idf3-20210202-v1.14.bin
nodemcu-esp32-load-firmware-esptoolpy Programar un ESP32 con MicroPython

Para poder comunicar y programar el ESP con MicroPython, necesitamos instalar un terminal o un IDE. Aquí veremos el uso de PuTTy y TeraTerm.

Uso de diferentes herramientas para comunicar y programar su ESP32

Una vez que hayas configurado tu microcontrolador con Micropyhton, puedes utilizar varias herramientas para programar en Python. Terminales como TeraTerm o Putty e IDEs como VS Code, uPyCraft o Thonny.

Instalación del terminal TeraTerm en Windows

Descargar e instalar TeraTerm

Abra TeraTerm y seleccione el puerto serie correspondiente al microcontrolador.

nodemcu-esp32-teraterm-conf Programar un ESP32 con MicroPython

A continuación, configure la comunicación serie dans Setup> Serial Port …

nodemcu-esp32-teraterm-baudrate Programar un ESP32 con MicroPython

Ahora puede utilizar el terminal para introducir comandos Python y ejecutarlos en el ESP32

nodemcu-esp32-teraterm-hello Programar un ESP32 con MicroPython

Instalación del terminal PuTTy

Descargar e instalar PuTTy

Abra Putty y seleccione el puerto serie correspondiente al microcontrolador.

terminal-putty Programar un ESP32 con MicroPython

A continuación, configure la comunicación serie

terminal-putty-serial-configuration Programar un ESP32 con MicroPython

Ahora puede utilizar el terminal para introducir comandos Python y ejecutarlos en el ESP32

terminal-putty-hello Programar un ESP32 con MicroPython

Las terminales PuTTy y TeraTerm son ambas buenas opciones para probar unos pocos comandos de Python pero no para hacer un programa completo.

Crea un script en Python y cárgalo con ampy

Vamos a escribir un código simple para probar la carga de código a ESP32. Hay dos archivos que son tratados de manera diferente por ESP32: boot.py y main.py. Por defecto, sólo boot.py está presente. El boot.py se ejecuta primero y luego se ejecuta a su vez el main.py. Si quieres crear un script que se ejecute al inicio debes llamarlo main o ejecutarlo en main. Si no quieres que se ejecute al inicio llámalo de otra manera.

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)

A continuación instalaremos ampy que nos permitirá cargar un archivo en el microcontrolador.

python3 -m pip install adafruit-ampy

Una vez instalado ampy, puede utilizarlo en un símbolo del sistema con la función «put» para cargar un archivo especificando su ruta y nombre.

ampy -d 0.5 --port COM9 put \main.py
micropython-ampy-put-script Programar un ESP32 con MicroPython

N.B.: Si te encuentras con el error «ampy.pyboard.PyboardError: could not enter raw repl», puedes aumentar el retardo a 1 o 2 (es decir, «-d 1» o «-d 2»)

Si te conectas al ESP32 con un terminal, verás el programa ejecutándose (puedes parar el script con Ctrl+C)

micropython-teraterm-script-running Programar un ESP32 con MicroPython

El script main.py se ejecutará en cada reinicio. Para eliminarlo, introduzca el siguiente comando en el terminal

import os
os.remove('main.py')

Uso del IDE uPyCraft

Cuando se desarrolla código y es necesario probarlo, es complicado pasar por el símbolo del sistema para cargarlo cada vez. Existe un IDE para Python, similar al IDE de Arduino: uPyCraft que puedes utilizar como editor y como terminal para interactuar con el microcontrolador.

upycraft Programar un ESP32 con MicroPython
  • Dans Tools> Preferences, vérifiez la configuration du port série
upycraft-serial-configuration Programar un ESP32 con MicroPython
  • Dans Tools>Serial, sélectionnez le port série utilisé par le microcontrôleur
upycraft-serial-port-select Programar un ESP32 con MicroPython

Una vez conectado el microcontrolador a la interfaz, puede utilizar la consola como terminal

upycraft-console-terminal Programar un ESP32 con MicroPython

También puede crear y editar un archivo que contenga el script de Python. Una vez escrito el código, puede cargarlo y ejecutarlo pulsando F5. Para validar la carga del código, puede ser necesario pulsar el botón de reinicio de la placa. Puede detener el código pulsando Ctrl+C en la consola.

upycraft-run-program Programar un ESP32 con MicroPython

N.B.: Puede reiniciar el script sin hacer un reset, introduciendo el comando

exec(open('main.py').read(), globals())

Eliminar el archivo

Si no quieres que el script se active al reiniciar, tienes que borrar el código main.py usando el comando en un terminal o en el IDE

import os
os.remove('main.py')
teraterm-remove-file Programar un ESP32 con MicroPython
upycraft-remove-file Programar un ESP32 con MicroPython

Restablecer la configuración por defecto

Para programar el microcontrolador con Arduino IDE, debe eliminar el archivo main.py si existe y cargar un código Arduino. Esto recargará el bootloader en la flash.

Para volver a utilizar MicroPython, hay que borrar la memoria flash y cargar el firmware.

Fuentes