Explorando MicroLua: Programación Lua para RP2040

Explorando MicroLua para el RP2040 Imagen del título

¿Alguna vez has querido adentrarte en el mundo de la programación Lua y explorar las capacidades del microcontrolador RP2040? No busques más: ¡MicroLua te ofrece una oportunidad apasionante para hacerlo!

En este artículo, quiero profundizar en lo que MicroLua cómo funciona y por qué creo que es una herramienta muy valiosa para los desarrolladores.

Quiero enviar un gran saludo a Remy Blank por desarrollar MicroLua y compartirlo con el mundo. Remy lo ha publicado con una licencia MIT (como la propia Lua), poniendo MicroLua a disposición de todo el mundo.

Tengo muchas ganas de utilizarlo en futuros proyectos.

¿Qué es MicroLua? ¿Qué es un RP2040?

Así, MicroLua utiliza la implementación de Lua y la empaqueta.

Lua es un lenguaje multiparadigma de tipado dinámico. Y es, por supuesto, uno de los lenguajes de scripting más rápidos que existen. También es superpequeño (el código fuente y la documentación juntos ocupan 1,3 MB).

Es rápido, pequeño e ideal cuando se quiere integrar algo en aplicaciones más grandes.

Lua también tiene 21 palabras clave destacadas y una sintaxis bastante sencilla, por lo que es relativamente fácil de aprender.

Pero, si no estás familiarizado, la cosa inmediata de la que todo el mundo se queja con Lua es que es un lenguaje indexado basado en 1. Y honestamente me molesta cada vez que lo uso. Y honestamente, me molesta cada vez.

Aquí tienes un ejemplo de Lua, para que lo veas:

Ejemplo Lua de Lua.org
Crédito: lua.org.

Remy ha diseñado MicroLua para programar específicamente para el microcontrolador RP2040.

El microcontrolador RP2040 es un chip interno de Raspberry Pi que acciona un Pico. Sin embargo, Raspberry Pi también vende el chip RP2040 por separado. Por lo tanto, también puede encontrar el RP2040 en otras placas, como una Pluma Adafruit.

MicroLua, por tanto, empaqueta Lua para estas placas. En este contexto, MicroLua integra el último intérprete de Lua (versión 5.4) con interfaces para el kit de desarrollo de software de Pico e incluye una biblioteca cooperativa de hilos.

Al combinar el intérprete Lua con las interfaces de Pico, MicroLua te permite acceder a los pines GPIO y a los temporizadores. Y me encanta que Remy haya incluido una biblioteca de hilos cooperativa. Así, si tienes un Pico, puedes jugar con ambos núcleos.

Además, MicroLua es compatible con Fennel, así que si te gusta Lisp (como a mí), puedes seguir sacándole partido a MicroLua. ¿Quieres usar un lenguaje tipo Lisp con tu Raspberry Pi Pico? Remy acaba de hacerlo ridículamente fácil.

Introducción a MicroLua

Para configurar MicroLua, tendrás que clonar el depósitoinicialice los submódulos y siga las instrucciones de compilación proporcionadas.

El GitHub tiene el siguiente código que pondrá en marcha un conjunto de pruebas:

# Configure the location of the Pico SDK. Adjust for your setup.
$ export PICO_SDK_PATH="${HOME}/pico-sdk"

# Clone the repository and initialize submodules.
$ git clone https://github.com/MicroLua/MicroLua.git
$ cd MicroLua
$ git submodule update --init

# Connect a Picoprobe to the target, on the UART and optionally on the debug
# port. Then view the Picoprobe's UART connection in a separate terminal.
# The "term" script uses socat.
$ tools/term /dev/ttyACM0

# Build the unit tests.
$ cmake -s . -B build -DPICO_BOARD=pico
$ make -j9 -C build/lib

# Start the target in BOOTSEL mode and flash it with picotool.
$ picotool load -v -x build/lib/mlua_tests.elf

# Alternatively, start the target in BOOTSEL mode and copy to its boot drive.
$ cp build/lib/mlua_tests.uf2 /mnt/RPI-RP2/

Una vez que lo hayas conseguido, estarás listo.

Debo mencionar que Remy ha identificado algunos problemas con el rendimiento de MicroLua. En primer lugar, el hecho de que la latencia de envío de eventos es relativamente lenta y necesita algunas mejoras.

Además, si va a la página de GitHubRemy ha incluido una hoja de ruta con las cosas que hay que añadir, como más enlaces para el SDK de Pico, un sistema de archivos y comunicación multichip. Y Remy quiere mejorar el rendimiento de los hilos, la comunicación entre núcleos y ajustar el recolector de basura.

Así que es un proyecto que está muy vivo y que merece la pena seguir de cerca.

Escribí el pequeño programa del vídeo en MicroPython, pero la próxima vez usaré Fennel y MicroLua.

Conclusión:

Ahora que ya lo tienes, empieza tu próximo proyecto Pico. ¡El mundo es tuyo!

Lo primero que pensé al ver este proyecto fue Lua RTOS para un ESP32. Así que si usted está buscando sus opciones para Lua con microcontroladores en general, asegúrese de ir a ver ese proyecto también.

Sin embargo, si necesitas algo de inspiración, puedes echar un vistazo a algunos proyectos de Pico que hemos presentado:

Además, si tienes un Pico W, no olvides conectarlo a PiCockpitAsí podrás conectarte a él desde cualquier parte del mundo a través de Internet.

¿Qué proyectos vas a crear con MicroLua? ¡Tengo muchas ganas de usar Fennel para mi próximo proyecto Pico!

Deja un comentario