fbpixel
Etiquetas: , , ,

, ,

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

Antes de seguir este tutorial, debe instalar Python 3.

En este tutorial veremos cómo configurar el ESP8266 y cómo utilizar un terminal para probar comandos Python. Por último, veremos dos métodos para cargar y ejecutar scripts de 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. Tiene un subconjunto de las librerías Python así como librerías para interactuar con hardware de bajo nivel e interfaces de red. (ej: Wifi)

Tarjetas compatibles con MicroPython:

  • Placas ESP32 (por ejemplo, NodeMCU ESP32)
  • PyBoard
  • Micro:Bit
  • Teensy 3.X
  • WiPy – Pycom

Instalar el firmware en el ESP8266

Para utilizar MicroPython, borraremos la memoria flash del ESP8266 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 la memoria flash (Nota: el nombre del puerto puede ser diferente del suyo)
python3 -m esptool --port COM9 erase_flash
nodemcu-esp8266-erase-flash-esptool.py Programar un ESP8266 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 --port COM9 --baud 460800 write_flash --flash_size=detect 0 C:\Users\ADMIN\Downloads\esp8266-20210202-v1.14.bin
nodemcu-esp8266-load-firmware-esptoolpy Programar un ESP8266 con MicroPython

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

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 ESP8266 con MicroPython

A continuación, configure la comunicación serie en Configuración> Puerto serie …

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

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

nodemcu-esp8266-teraterm-hello Programar un ESP8266 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 ESP8266 con MicroPython

A continuación, configure la comunicación serie. Con el fin de comunicarse con el ESP8266, None debe ser seleccionado en Flow control bajo Serial

terminal-putty-esp8266-serial-configuration Programar un ESP8266 con MicroPython

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

terminal-putty-hello-esp8266 Programar un ESP8266 con MicroPython

Los 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 Python y cárgalo con ampy

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

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 ESP8266 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 ESP8266 con un terminal, verás el programa ejecutándose (puedes parar el script con Ctrl+C)

nodemcu-esp8266-teraterm-main Programar un ESP8266 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 ESP8266 con MicroPython
  • En Tools> Preferencias, compruebe la configuración del puerto serie
upycraft-serial-configuration Programar un ESP8266 con MicroPython
  • En Tools>Serie, seleccione el puerto serie utilizado por el microcontrolador
upycraft-serial-port-select Programar un ESP8266 con MicroPython

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

upycraft-console-terminal Programar un ESP8266 con MicroPython

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

upycraft-esp8266-remove-file Programar un ESP8266 con MicroPython

N.B.: Puede reiniciar el código 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

os.remove('main.py')
nodemcu-esp8266-teraterm-main Programar un ESP8266 con MicroPython
upycraft-esp8266-remove-file Programar un ESP8266 con MicroPython

Restablecer la configuración por defecto

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

Para volver a utilizar MicroPython, tendrás que borrar la flash y cargar el firmware.

Fuentes