micropython-herramientas-avanzadas-cli

Herramientas CLI para MicroPython: mpremote, ampy y rshell

  • 5 min

Las herramientas CLI para MicroPython son programas para gestionar la placa desde la terminal sin depender de un IDE visual.

Hasta ahora hemos visto cómo interactuar con nuestra placa utilizando un IDE visual como Thonny. Es una maravilla, es cómodo y lo recomendamos para empezar. Pero, a medida que avanzamos, a menudo surge la necesidad de trabajar desde la línea de comandos.

Para eso tenemos las herramientas CLI (Command Line Interface). Nos permiten automatizar tareas, subir archivos masivamente, integrar el flujo de trabajo en sistemas de CI/CD, o simplemente trabajar con nuestro editor de código favorito (como VSCode o Sublime Text) sin depender de la interfaz de Thonny.

En este artículo vamos a ver las tres herramientas más importantes del ecosistema: mpremote, ampy y rshell.

Estas herramientas requieren tener instalado Python en tu ordenador, ya que se instalan y ejecutan como paquetes de Python.

mpremote: la herramienta oficial

Empezamos por la opción más recomendable hoy. mpremote es la herramienta oficial desarrollada por el equipo de MicroPython. Es moderna, rápida y, sinceramente, la que deberías usar en la mayoría de los casos.

Su gran ventaja es que no requiere instalar drivers extraños y maneja la conexión serial de forma muy robusta.

Instalación

Como buena herramienta de Python, la instalamos vía pip:

pip install mpremote
Copied!

Uso básico

Una de las maravillas de mpremote es que detecta automáticamente el puerto serie. Para entrar en el REPL, simplemente escribimos:

mpremote
Copied!

Si queremos ejecutar comandos específicos sin entrar al REPL, podemos encadenarlos. Por ejemplo, para ver la lista de archivos en la placa:

mpremote fs ls
Copied!

Gestión de archivos

Los comandos para gestionar archivos son muy similares a los de Linux (ls, cat, cp, rm, mkdir, rmdir).

# Copiar un archivo del PC a la placa
mpremote cp main.py :main.py

# Leer el contenido de un archivo en la placa
mpremote cat boot.py

# Copiar todo el contenido de una carpeta a la placa
mpremote cp -r ./mi_proyecto :
Copied!

Observa el uso de los dos puntos :. En mpremote, los dos puntos indican la ruta dentro del dispositivo MicroPython.

Montaje remoto (mount)

Esta es la “killer feature” de mpremote. Podemos montar una carpeta de nuestro ordenador dentro del microcontrolador.

Esto significa que la placa “ve” los archivos de tu PC como si estuvieran en su memoria interna. Puedes editar el código en tu ordenador y ejecutarlo en la placa al instante, sin tener que copiar los archivos cada vez.

mpremote mount .
Copied!

Esto montará el directorio actual (.) en la placa y ejecutará el REPL. Es increíblemente útil para el desarrollo rápido.

ampy (Adafruit MicroPython Tool)

Ampy es una herramienta clásica desarrollada por Adafruit. Durante años fue el estándar de facto, especialmente para placas ESP8266 y ESP32. Aunque es más antigua que mpremote, sigue siendo muy robusta y sencilla.

Es ideal si buscas algo simple para scripts rápidos de subida y bajada de archivos.

Instalación

pip install adafruit-ampy
Copied!

Uso básico

A diferencia de mpremote, en ampy a menudo necesitamos especificar el puerto y la velocidad (baud rate), aunque podemos definir una variable de entorno AMPY_PORT para ahorrarnos escribirlo siempre.

# Listar archivos
ampy --port /dev/ttyUSB0 ls

# Subir un archivo
ampy --port /dev/ttyUSB0 put main.py

# Leer un archivo
ampy --port /dev/ttyUSB0 get boot.py
Copied!

Ejecutar código sin subirlo

Una función muy útil de ampy es run, que nos permite ejecutar un script de Python que tenemos en nuestro PC directamente en la placa, sin guardarlo en la memoria flash de esta.

ampy --port /dev/ttyUSB0 run test_sensor.py
Copied!

Ampy es muy estricto con la salida del puerto serie. Si tu programa tiene muchos print() al inicio, a veces ampy puede confundirse.

rshell (Remote Shell)

Si vienes del mundo Linux, rshell te va a encantar. Desarrollada por Dave Hylands, esta herramienta crea una shell remota que nos permite navegar por los archivos de la placa como si fuera una carpeta más de nuestro sistema.

Es especialmente potente cuando trabajamos con placas que no soportan el montaje de unidad USB nativo (como el ESP32).

Instalación

pip install rshell
Copied!

Uso básico

Al iniciar rshell, entramos en su propia línea de comandos.

rshell -p /dev/ttyUSB0
Copied!

Una vez dentro, veremos que nuestra placa aparece montada, generalmente bajo el nombre /pyboard (aunque podemos cambiarlo). Nuestro sistema de archivos local sigue siendo accesible.

# Dentro de rshell
ls /pyboard        # Lista los archivos de la placa
cp main.py /pyboard # Copia main.py a la placa
repl               # Entra en el modo REPL de MicroPython
Copied!

Para salir del modo REPL y volver a rshell pulsamos Ctrl+X.

Qué herramienta elegir

Entonces, ¿cuál usamos? Aquí va nuestra recomendación basada en la experiencia:

  1. mpremote: Es la opción recomendada hoy en día. Es rápida, oficial y la función de mount cambia las reglas del juego. Si estás empezando con CLI, empieza por aquí.
  2. ampy: Útil para scripts de automatización sencillos (.bat o .sh) donde solo quieres subir un archivo y listo, sin interactuar demasiado.
  3. rshell: Genial si necesitas gestionar estructuras de directorios complejas o si te sientes muy cómodo en una terminal de Linux y quieres “navegar” por tu microcontrolador.

Las herramientas visuales están bien, pero dominar la CLI nos da un control absoluto sobre nuestros dispositivos. Y cuando tengas que actualizar 10 placas a la vez, ¡nos agradecerás haber aprendido esto!