fbpixel
Etiquetas: , ,
0
(0)

, ,

Hemos visto que el ESP8266 NodeMCU es fácilmente programable utilizando el IDE de Arduino. Ahora vamos a ver cómo programarlo usando MicroPython. La ventaja de utilizar Python para programar un ESP8266 es que puedes utilizarlo en todo su potencial.

Antes de seguir este tutorial, necesitas 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 diseñada para operar en el entorno del microcontrolador y sus limitaciones. Tiene un subconjunto de las bibliotecas de Python, así como bibliotecas para interactuar con el hardware de bajo nivel y las interfaces de red. (por ejemplo, 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, vamos a borrar la memoria flash del ESP8266 e instalar 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 el IDE de Arduino)

  • Borrar memoria flash (Nota: el nombre del puerto puede no coincidir con el suyo)
python3 -m esptool --port COM9 erase_flash
  • Descarregue o firmware e introduza a seguinte linha de código (Atenção: o nome da porta e o endereço do ficheiro podem ser diferentes dos seus)
python3 -m esptool --port COM9 --baud 460800 write_flash --flash_size=detect 0 C:\Users\ADMIN\Downloads\esp8266-20210202-v1.14.bin

Para poder 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.

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

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

Instalación del terminal PuTTy

Descargar e instalar PuTTy

Abra Putty y seleccione el puerto serie correspondiente al microcontrolador.

A continuación, configure la comunicación serie. Para poder comunicarse con el ESP8266, se debe seleccionar None en Flow control bajo Serial

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

Los terminales PuTTy y TeraTerm son dos buenas opciones para probar algunos comandos de Python, pero no para crear un programa completo.

Crear un script Python y descargarlo con ampy

Vamos a escribir un código sencillo para probar la carga de código al ESP8266. Hay dos archivos que son tratados de manera diferente por el ESP8266: boot.py y main.py. Por defecto, sólo boot.py está presente. Boot.py se ejecuta primero y luego 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, puedes 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

N.B.: Si aparece 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 se conecta al ESP8266 con un terminal, verá que el programa se está ejecutando (puede detener el script pulsando Ctrl+C).

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

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

Uso del IDE uPyCraft

Cuando estás desarrollando código y necesitas probarlo, es complicado pasar por el símbolo del sistema para cargarlo cada vez que lo intentas. Existe un IDE para Python, similar al IDE de Arduino: uPyCraft, que puedes usar como editor y como terminal para interactuar con el microcontrolador.

  • En Tools> Preferences, compruebe la configuración del puerto serie
  • En Tools>Serial, seleccione el puerto serie utilizado por el microcontrolador

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

También puedes crear y editar un archivo que contenga el script Python. Una vez que hayas escrito el código, puedes cargarlo y ejecutarlo pulsando F5. Para confirmar que el código se ha cargado, puede que tengas que pulsar el botón de reinicio de la placa. Puedes detener el código pulsando Ctrl+C en la consola.

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')

Restablecer la configuración por defecto

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

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

Fuentes

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?