Utforska MicroLua: Lua-programmering för RP2040
Har du någonsin velat fördjupa dig i Lua-programmering och utforska möjligheterna med mikrokontrollern RP2040? Titta inte längre - MicroLua erbjuder en spännande möjlighet att göra just det!
I den här artikeln vill jag fördjupa mig i vad MicroLua är, hur det fungerar och varför jag tycker att det är ett supervärdefullt verktyg för utvecklare.
Jag vill skicka en stor hyllning till Remy Blank för att ha utvecklat MicroLua och delat med sig av det till världen. Remy har lagt ut det med en MIT-licens (som Lua själv är), vilket gör MicroLua tillgängligt för alla.
Jag ser verkligen fram emot att använda den i några framtida projekt.
Vad är MicroLua? Vad är en RP2040?
MicroLua använder alltså Lua-implementeringen och paketerar den.
Lua är ett dynamiskt typat språk med flera paradigmer. Och det är naturligtvis ett av de snabbaste skriptspråken som finns. Det är också superlitet (källkoden och dokumentationen tar tillsammans upp 1,3 MB!)
Så den är snabb, liten och perfekt när du vill bädda in något i större applikationer.
Lua har också 21 markerade nyckelord och en ganska enkel syntax, så det är relativt enkelt att lära sig.
Men om du inte känner till det så är det första som alla klagar på med Lua att det är ett 1-baserat indexerat språk. Och ärligt talat, det får mig på fall varje gång.
Här är ett exempel på Lua, så att du kan se det:
Remy har utformat MicroLua för att programmera specifikt för RP2040 mikrokontroller.
Mikrokontrollern RP2040 är ett internt chip i Raspberry Pi som driver en Pico. Raspberry Pi säljer dock även RP2040-chippet separat. Du kan alltså hitta RP2040 i andra kort också, t.ex. ett Adafruit Fjäder.
MicroLua paketerar alltså Lua för dessa kort. I detta sammanhang integrerar MicroLua den senaste Lua-interpreten (version 5.4) med gränssnitt för Programvaruutvecklingssatsen för Pico och innehåller ett kooperativt trådningsbibliotek.
Genom att sätta Lua-interpreten tillsammans med Pico-gränssnitten ger MicroLua dig åtkomst till GPIO-pinnarna och timers. Och jag älskar verkligen att Remy har inkluderat ett kooperativt trådningsbibliotek. Så om du har en Pico kan du leka med båda kärnorna.
MicroLua har dessutom stöd för Fennel, så om du älskar Lisp (som jag) kan du fortfarande dra nytta av MicroLua. Vill du använda ett Lisp-liknande språk med din Raspberry Pi Pico? Remy har just gjort det löjligt enkelt.
Komma igång med MicroLua
För att installera MicroLua måste du klona förvaretinitiera undermoduler och följ de medföljande bygginstruktionerna.
GitHub har följande kod som får igång en testsvit:
# 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/
När du har gjort det är du redo att köra.
Jag bör nämna att Remy har identifierat några problem med MicroLuas prestanda. Först och främst det faktum att event dispatch latency är relativt långsam och behöver förbättras.
Dessutom, om du går till GitHub-sidanhar Remy inkluderat en färdplan för saker som ska läggas till, som fler bindningar för Pico SDK, ett filsystem och kommunikation mellan flera chip. Remy vill även förbättra trådningsprestandan, kommunikation mellan kärnor och finjustera skräpsamlaren.
Så det här är ett projekt som i allra högsta grad är levande och värt att hålla ögonen på.
Det lilla programmet i videon skrev jag i MicroPython - men nästa gång ska jag använda Fennel och MicroLua!
Slutsats
Så nu när du har det här kan du sätta igång med ditt nästa Pico-projekt. Världen är ditt ostron!
Det första jag tänkte på när jag såg det här projektet var Lua RTOS för en ESP32. Så om du tittar på dina alternativ för Lua med mikrokontroller mer generellt, var noga med att kolla in det projektet också.
Om du behöver lite inspiration kan du kolla in några av de Pico-projekt som vi har presenterat:
- Allt om ljudåtergivning med Pico W
- Allt om Bluetooth på Raspberry Pi Pico W
- Ett Raspberry Pi Pico W säkerhetslarm
- Ett Raspberry Pi Pico-tangentbord
- En Raspberry Pi Pico-klocka
- En Raspberry Pi Pico luftkvalitetsmätare
Om du har en Pico W, glöm inte att ansluta den till PiCockpitPå så sätt kan du ansluta till den från var som helst i världen via Internet.
Vilka projekt kommer du att skapa med MicroLua? Jag ser verkligen fram emot att använda Fennel för mitt nästa Pico-projekt!