Explorando MicroLua: Programação Lua para RP2040

Explorando MicroLua para a RP2040 Imagem do título

Alguma vez quiseste mergulhar no mundo da programação Lua e explorar as capacidades do microcontrolador RP2040? Não precisa de procurar mais - o MicroLua oferece uma excelente oportunidade para fazer isso mesmo!

Neste artigo, pretendo aprofundar o que MicroLua é, como funciona e porque é que eu acho que é uma ferramenta super valiosa para os programadores.

Quero enviar uma enorme saudação a Remy Blank por desenvolver o MicroLua e compartilhá-lo com o mundo. Remy o lançou com uma licença MIT (como a própria Lua), tornando o MicroLua disponível para todos.

Estou muito entusiasmado por poder utilizá-lo em alguns projectos futuros.

O que é MicroLua? O que é um RP2040?

Então, MicroLua usa a implementação de Lua e a empacota.

Lua é uma linguagem multiparadigma com tipagem dinâmica. E é, naturalmente, uma das linguagens de script mais rápidas que existem. Ela também é super pequena (o código fonte e a documentação juntos ocupam 1,3 MB!)

Por isso, é rápido, é pequeno e é ideal quando se pretende incorporar algo em aplicações maiores.

Lua tem também 21 palavras-chave destacadas e uma sintaxe bastante direta, pelo que é relativamente simples de aprender.

Mas, se não está familiarizado, a coisa imediata de que toda a gente se queixa com Lua é o facto de ser uma linguagem indexada baseada em 1. E, honestamente, isso me pega todas as vezes.

Aqui está um exemplo de Lua, para que o possas ver:

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

Remy concebeu o MicroLua para programar especificamente para o microcontrolador RP2040.

O microcontrolador RP2040 é um chip interno do Raspberry Pi que acciona um Pico. No entanto, o Raspberry Pi também vende o chip RP2040 separadamente. Assim, também pode encontrar o RP2040 noutras placas, como uma Adafruit Feather.

MicroLua, então, empacota Lua para essas placas. Neste contexto, MicroLua integra o mais recente interpretador Lua (versão 5.4) com interfaces para o kit de desenvolvimento de software do Pico e inclui uma biblioteca de threading cooperativa.

Ao juntar o interpretador Lua com as interfaces do Pico, o MicroLua permite-lhe aceder aos pinos GPIO e aos temporizadores. E eu realmente adoro o fato de Remy ter incluído uma biblioteca de threading cooperativa. Assim, se tiveres um Pico, podes brincar com ambos os núcleos.

Adicionalmente, o MicroLua tem suporte para Fennel, por isso se gosta de Lisp (como eu), ainda pode tirar partido do MicroLua. Quer usar uma linguagem Lisp-like com seu Raspberry Pi Pico? O Remy acabou de tornar isso ridiculamente fácil.

Introdução ao MicroLua

Para configurar o MicroLua, você terá que clonar o repositórioinicializar os submódulos e seguir as instruções de compilação fornecidas.

O GitHub tem o seguinte código que permite colocar um conjunto de testes a funcionar:

# 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/

Quando tiveres isso, estás pronto para começar.

Eu devo mencionar que Remy identificou alguns problemas com o desempenho do MicroLua. Primeiro e mais importante, o facto de que a latência de envio de eventos é relativamente lenta e precisa de alguma melhoria.

Além disso, se for a a página do GitHubRemy incluiu um roteiro para adicionar coisas, como mais ligações para o Pico SDK, um sistema de arquivos e comunicação multi-chip. E Remy quer melhorar o desempenho dos threads, a comunicação entre núcleos e ajustar o coletor de lixo.

Por isso, este é um projeto que está bem vivo e que vale a pena manter debaixo de olho.

Escrevi o pequeno programa do vídeo em MicroPython - mas da próxima vez vou usar Fennel e MicroLua!

Conclusão

Agora que já o tem, comece o seu próximo projeto Pico. O mundo é a sua ostra!

A primeira coisa em que pensei quando vi este projeto foi Lua RTOS para um ESP32. Por isso, se estiver a ver as suas opções para Lua com microcontroladores de uma forma mais geral, não se esqueça de ir ver esse projeto também.

Se precisar de alguma inspiração, pode consultar alguns projectos Pico que apresentámos:

Além disso, se tiver um Pico W, não se esqueça de o ligar ao PiCockpitAssim, pode ligar-se a ele a partir de qualquer parte do mundo através da Internet.

Que projectos vai criar com MicroLua? Estou ansioso por usar o Fennel no meu próximo projeto Pico!

Deixe um comentário