Esplorare MicroLua: Programmazione Lua per RP2040

Esplorazione di MicroLua per l'RP2040 Immagine del titolo

Avete mai desiderato addentrarvi nel mondo della programmazione Lua ed esplorare le capacità del microcontrollore RP2040? Non cercate oltre: MicroLua vi offre l'opportunità di farlo!

In questo articolo, desidero approfondire cosa MicroLua è, come funziona e perché penso che sia uno strumento super prezioso per gli sviluppatori.

Voglio inviare un enorme grido di incoraggiamento a Remy Blank per aver sviluppato MicroLua e averlo condiviso con il mondo. Remy ha rilasciato una licenza MIT (come Lua stesso), rendendo MicroLua disponibile per tutti.

Non vedo l'ora di utilizzarlo in alcuni progetti futuri.

Che cos'è MicroLua? Che cos'è un RP2040?

Quindi, MicroLua utilizza l'implementazione di Lua e la impacchetta.

Lua è un linguaggio multi-paradigma a tipizzazione dinamica. Ed è, ovviamente, uno dei linguaggi di scripting più veloci in circolazione. È anche molto piccolo (il codice sorgente e la documentazione insieme occupano 1,3 MB).

È quindi veloce, piccolo e ideale quando si vuole incorporare qualcosa all'interno di applicazioni più grandi.

Lua ha anche 21 parole chiave evidenziate e una sintassi piuttosto semplice, quindi è relativamente facile da imparare.

Ma, se non avete familiarità, la cosa di cui tutti si lamentano immediatamente con Lua è che è un linguaggio indicizzato a base 1. E onestamente, questo mi frega ogni volta. E onestamente, questo mi frega ogni volta.

Ecco un esempio di Lua, così da poterlo vedere:

Esempio di Lua da Lua.org
Credito: lua.org.

Remy ha progettato MicroLua per programmare in modo specifico il microcontrollore RP2040.

Il microcontrollore RP2040 è un chip interno di Raspberry Pi che pilota un Pico. Tuttavia, Raspberry Pi vende anche il chip RP2040 separatamente. Pertanto, è possibile trovare l'RP2040 anche in altre schede, come ad esempio una Piuma Adafruit.

MicroLua, quindi, confeziona pacchetti Lua per queste schede. In questo contesto, MicroLua integra l'interprete Lua più recente (versione 5.4) con interfacce per il kit di sviluppo software Pico e include una libreria di threading cooperativo.

Mettendo insieme l'interprete Lua con le interfacce Pico, MicroLua consente di accedere ai pin GPIO e ai timer. Mi piace molto il fatto che Remy abbia incluso una libreria di threading cooperativo. Così, se avete un Pico, potete giocare con entrambi i core.

Inoltre, MicroLua ha il supporto di Fennel, quindi se siete amanti del Lisp (come me), potete ancora trarre vantaggio da MicroLua. Volete usare un linguaggio simile al Lisp con il vostro Raspberry Pi Pico? Remy lo ha appena reso ridicolmente facile.

Come iniziare con MicroLua

Per configurare MicroLua, si deve clonare il deposito, inizializzare i sottomoduli e seguire le istruzioni di compilazione fornite.

Su GitHub è disponibile il seguente codice che consente di avviare una suite di test:

# 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 volta ottenuto questo, siete pronti a partire.

Devo dire che Remy ha identificato alcuni problemi con le prestazioni di MicroLua. Il primo e più importante è che la latenza di invio degli eventi è relativamente lenta e deve essere migliorata.

Inoltre, se si va a la pagina GitHubRemy ha incluso una tabella di marcia per le cose da aggiungere, come altri binding per l'SDK Pico, un filesystem e la comunicazione multi-chip. Inoltre, Remy vuole migliorare le prestazioni del threading, la comunicazione cross-core e mettere a punto il garbage collector.

Si tratta quindi di un progetto molto vivo e da tenere d'occhio.

Ho scritto il piccolo programma nel video in MicroPython, ma la prossima volta userò Fennel e MicroLua!

Conclusione

Quindi, ora che l'avete ottenuto, iniziate il vostro prossimo progetto Pico. Il mondo è la vostra ostrica!

La prima cosa a cui ho pensato quando ho visto questo progetto è stata RTOS Lua per un ESP32. Quindi, se state valutando le opzioni per Lua con i microcontrollori in generale, assicuratevi di dare un'occhiata anche a questo progetto.

Se però avete bisogno di ispirazione, potete dare un'occhiata ad alcuni progetti Pico che abbiamo presentato:

Inoltre, se avete un Pico W, non dimenticate di collegarlo a PiCockpitIn questo modo è possibile collegarsi ad esso da qualsiasi parte del mondo tramite Internet.

Quali progetti avete intenzione di realizzare con MicroLua? Non vedo l'ora di usare Fennel per il mio prossimo progetto Pico!

Lascia un commento