MicroLua verkennen: Lua programmeren voor RP2040
Heb je je ooit willen verdiepen in de wereld van Lua-programmering en de mogelijkheden van de RP2040 microcontroller willen verkennen? Zoek niet verder - MicroLua biedt een spannende mogelijkheid om precies dat te doen!
In dit artikel wil ik dieper ingaan op wat MicroLua is, hoe het werkt en waarom ik denk dat het een super waardevol hulpmiddel is voor ontwikkelaars.
Ik wil een enorme shout-out sturen naar Remy Blanco voor het ontwikkelen van MicroLua en het delen met de wereld. Remy heeft het uitgebracht met een MIT licentie (zoals Lua zelf ook is), waardoor MicroLua beschikbaar is voor iedereen.
Ik ben erg enthousiast om het in enkele toekomstige projecten te gebruiken.
Wat is MicroLua? Wat is een RP2040?
MicroLua gebruikt dus de Lua-implementatie en verpakt deze.
Lua is een dynamisch getypeerde, multi-paradigma taal. En het is natuurlijk een van de snelste scripttalen die er zijn. Het is ook super klein (de broncode en documentatie nemen samen 1,3 MB in beslag!)
Het is dus snel, het is klein en het is ideaal als je iets wilt integreren in grotere applicaties.
Lua heeft ook 21 gemarkeerde sleutelwoorden en een vrij eenvoudige syntaxis, dus het is relatief eenvoudig te leren.
Maar, als je niet bekend bent, het eerste waar iedereen over klaagt bij Lua is dat het een 1 gebaseerde geïndexeerde taal is. En eerlijk gezegd krijg ik daar elke keer weer last van.
Hier is een voorbeeld van Lua, zodat je het kunt zien:
Remy heeft MicroLua ontworpen om specifiek voor de RP2040 microcontroller te programmeren.
De RP2040 microcontroller is een interne chip van Raspberry Pi die een Pico. Raspberry Pi verkoopt echter ook de RP2040-chip apart. Je kunt de RP2040 dus ook in andere borden vinden, zoals een Adafruit Feather.
MicroLua verpakt dus Lua voor deze borden. In deze context integreert MicroLua de nieuwste Lua-interpreter (versie 5.4) met interfaces voor de Pico Software Development Kit en bevat een coöperatieve threading bibliotheek.
Door de Lua interpreter samen te voegen met de Pico interfaces, heb je met MicroLua toegang tot de GPIO pinnen en timers. En ik vind het geweldig dat Remy een coöperatieve threading bibliotheek heeft toegevoegd. Dus als je een Pico hebt, kun je met beide cores spelen.
Daarnaast heeft MicroLua ondersteuning voor Fennel, dus als je van Lisp houdt (zoals ik), kun je nog steeds je voordeel doen met MicroLua. Wil je een Lisp-achtige taal gebruiken met je Raspberry Pi Pico? Remy heeft dat zojuist belachelijk eenvoudig gemaakt.
Aan de slag met MicroLua
Om MicroLua in te stellen, moet je het volgende klonen de opslagplaatsinitialiseer submodules en volg de meegeleverde bouwinstructies.
De GitHub heeft de volgende code om een testsuite op te starten:
# 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/
Als je dat eenmaal hebt, kun je aan de slag.
Ik moet vermelden dat Remy een paar problemen heeft geïdentificeerd met de prestaties van MicroLua. Eerst en vooral het feit dat de event dispatch latentie relatief traag is en verbeterd moet worden.
Bovendien, als je naar de GitHub-paginaRemy heeft een stappenplan toegevoegd voor dingen die toegevoegd moeten worden, zoals meer bindingen voor de Pico SDK, een bestandssysteem en multi-chip communicatie. En Remy wil de prestaties van threads, cross-core communicatie en de afvalverzamelaar verbeteren.
Dit is dus een project dat springlevend is en de moeite waard om in de gaten te houden.
Ik heb dat programmaatje in de video geschreven in MicroPython - maar de volgende keer gebruik ik Fennel en MicroLua!
Conclusie
Dus nu je het hebt, kun je beginnen aan je volgende Pico-project. De wereld ligt aan je voeten!
Het eerste waar ik aan dacht toen ik dit project zag was Lua RTOS voor een ESP32. Dus als je je opties voor Lua met microcontrollers meer in het algemeen bekijkt, ga dan zeker dat project ook bekijken.
Als je inspiratie nodig hebt, kun je kijken naar enkele Pico-projecten die we hebben laten zien:
- Alles over geluidsuitvoer met de Pico W
- Alles over Bluetooth op de Raspberry Pi Pico W
- Een Raspberry Pi Pico W beveiligingsalarm
- Een Raspberry Pi Pico Toetsenbord
- Een Raspberry Pi Pico-klok
- Een Raspberry Pi Pico luchtkwaliteitsmonitor
Als je een Pico W hebt, vergeet deze dan niet aan te sluiten op PiCockpitOp die manier kun je er overal ter wereld verbinding mee maken via het internet.
Welke projecten ga jij maken met MicroLua? Ik kijk er echt naar uit om Fennel te gebruiken voor mijn volgende Pico project!