micropython-gestion-librerias-mip-upip

Gestión de librerías en MicroPython con mip y upip

  • 5 min

Una librería en MicroPython es un módulo externo que añadimos a la placa para reutilizar código ya hecho.

Una de las grandes ventajas de Python es su inmenso ecosistema de librerías. En MicroPython, la filosofía es la misma, aunque con matices. El firmware base incluye los módulos esenciales, pero tarde o temprano necesitaremos drivers para un sensor específico, un cliente para una base de datos o herramientas de encriptación.

Para eso existen los gestores de paquetes. Su función es sencilla: descargar código escrito por otros y colocarlo en nuestra placa para que podamos usarlo con un simple import.

Históricamente se usaba upip, pero desde la versión 1.19 tenemos una herramienta mucho más potente y optimizada llamada mip.

Las librerías en MicroPython suelen instalarse en la carpeta /lib de la memoria interna. MicroPython añade automáticamente esta ruta a su sys.path, por lo que encontrará cualquier módulo que guardemos allí.

El estándar moderno: mip

El gestor mip (MicroPython Installer for Packages) es la herramienta recomendada actualmente. A diferencia de su predecesor, mip está diseñado pensando en los recursos limitados de los microcontroladores.

Sus principales ventajas son:

  1. Descarga versiones optimizadas (byte-code .mpy) cuando es posible, ahorrando memoria RAM y almacenamiento.
  2. Permite instalar directamente desde GitHub o GitLab.
  3. Funciona tanto desde la propia placa (si tiene WiFi) como desde el ordenador (vía mpremote).

Instalación desde la placa (requiere Wi-Fi)

Si tenemos un dispositivo con conectividad, como un ESP32 o una Raspberry Pi Pico W, y ya lo hemos conectado a nuestra red WiFi, podemos instalar paquetes directamente desde el REPL.

Primero, importamos el módulo y ejecutamos la instalación:

import mip

# Instalar un paquete oficial (ej. un driver de sensor)
mip.install("ssd1306")

# Instalar 'umqtt.simple' para MQTT
mip.install("umqtt.simple")
Copied!

Lo que ocurre “bajo el capó” es que mip consulta el índice oficial de micropython-lib (el repositorio central de librerías), descarga los archivos necesarios y los coloca ordenadamente en la carpeta /lib de tu dispositivo.

Instalando desde GitHub

Esta es una de las características que más nos gustan. Si encontramos una librería interesante en GitHub que no está en el índice oficial, podemos instalarla directamente pegando la URL:

import mip
mip.install("github:org/usuario/repo")
Copied!

mip es lo suficientemente listo para buscar un archivo package.json en el repositorio y saber qué archivos concretos debe descargar.

Instalación desde el PC mediante mpremote

¿Qué pasa si tenemos una Raspberry Pi Pico normal (sin WiFi)? ¿O si simplemente no queremos configurar la red en este momento?

Aquí vuelve a brillar mpremote (que vimos en el capítulo anterior). Podemos usar la conexión USB para que nuestro ordenador haga de “puente”, descargue la librería de internet y la inyecte en la placa.

Desde la terminal de tu ordenador (no en el REPL):

mpremote mip install ssd1306
Copied!

Este comando utiliza la conexión a internet de tu PC para buscar el paquete ssd1306 y lo copia automáticamente a la carpeta /lib del microcontrolador conectado. Es rápido, limpio y no consume memoria de la placa durante el proceso.

El legado: upip

Antes de mip, el estándar era upip (MicroPython pip). Es una versión reducida del pip que usamos en Python de escritorio.

Aunque se considera obsoleto en las versiones modernas de MicroPython, todavía puedes encontrarlo en tutoriales antiguos o en firmwares para el ESP8266, donde mip no siempre está disponible por defecto debido a la escasez de memoria.

Para usarlo (requiere conexión WiFi en la placa):

import upip
upip.install('micropython-pystone')
Copied!

upip descarga los archivos fuente .py completos y suele requerir más memoria RAM para realizar la instalación (debido al manejo de SSL y descompresión). Si puedes elegir, usa mip.

Instalación manual

A veces, la tecnología falla o simplemente estamos desarrollando nuestra propia librería. En esos casos, el método manual es infalible.

Instalar una librería manualmente no es más que copiar el archivo .py dentro de la carpeta /lib de la placa.

Podemos hacerlo con Thonny IDE:

  1. Descargas el archivo .py (ej. mi_libreria.py) en tu ordenador.
  2. Abres Thonny y conectas tu placa.
  3. Haces clic derecho sobre el archivo en el explorador de archivos local -> “Upload to /lib” (o lo arrastras si Thonny lo permite en tu versión).
  4. Si la carpeta /lib no existe, puedes crearla tú mismo.

Qué método de instalación elegir

La gestión de librerías ha madurado mucho. Para elegir sin liarte, puedes seguir este flujo de trabajo:

  1. ¿Estás en el PC y usas línea de comandos? Usa mpremote mip install nombre_paquete. Es lo más cómodo y funciona para cualquier placa (con o sin WiFi).
  2. ¿Estás programando en la placa (ESP32/Pico W) y tienes WiFi? Usa import mip y luego mip.install().
  3. ¿Es una librería propia o un archivo suelto? Copia y pega en la carpeta /lib usando Thonny.

Con esto, ya tenemos las herramientas para no tener que escribir todo el código desde cero. En las próximas secciones, empezaremos a usar estas librerías para controlar hardware real.