MicroLua erforschen: Lua-Programmierung für RP2040
Wollten Sie schon immer einmal in die Welt der Lua-Programmierung eintauchen und die Möglichkeiten des RP2040-Mikrocontrollers erkunden? Suchen Sie nicht weiter - MicroLua bietet eine aufregende Gelegenheit, genau das zu tun!
In diesem Artikel möchte ich darauf eingehen, was MicroLua ist, wie es funktioniert und warum ich es für ein sehr wertvolles Werkzeug für Entwickler halte.
Ich möchte einen großen Applaus aussprechen für Remy Blank für die Entwicklung von MicroLua und die Weitergabe an die Welt. Remy hat es mit einer MIT-Lizenz veröffentlicht (wie Lua selbst), wodurch MicroLua für jeden verfügbar ist.
Ich freue mich schon darauf, sie in einigen zukünftigen Projekten zu verwenden.
Was ist MicroLua? Was ist ein RP2040?
MicroLua verwendet also die Lua-Implementierung und verpackt sie.
Lua ist eine dynamisch getippte Mehrparadigmensprache. Und sie ist natürlich eine der schnellsten Skriptsprachen überhaupt. Außerdem ist sie super klein (der Quellcode und die Dokumentation nehmen zusammen 1,3 MB ein!)
Es ist also schnell, klein und ideal, wenn Sie etwas in größere Anwendungen einbetten wollen.
Lua verfügt außerdem über 21 hervorgehobene Schlüsselwörter und eine recht einfache Syntax, so dass es relativ leicht zu erlernen ist.
Aber, wenn Sie nicht vertraut sind, die unmittelbare Sache, die jeder beschwert sich über mit Lua ist, dass es eine 1-basierte indizierte Sprache ist. Und ehrlich gesagt, es erwischt mich jedes einzelne Mal.
Hier ist ein Beispiel für Lua, damit Sie es sehen können:
Remy hat MicroLua speziell für die Programmierung des RP2040-Mikrocontrollers entwickelt.
Der RP2040-Mikrocontroller ist ein Raspberry Pi-eigener Chip, der einen Pico. Der Raspberry Pi wird jedoch auch verkauft der RP2040-Chip separat. Sie können den RP2040 also auch in anderen Boards finden, z. B. in einem Adafruit Feather.
MicroLua packt also Lua für diese Boards. In diesem Zusammenhang integriert MicroLua den neuesten Lua-Interpreter (Version 5.4) mit Schnittstellen für das Pico Software Development Kit und enthält eine kooperative Threading-Bibliothek.
Indem man den Lua-Interpreter mit den Pico-Schnittstellen kombiniert, kann man mit MicroLua auf die GPIO-Pins und Timer zugreifen. Und ich finde es wirklich toll, dass Remy eine kooperative Threading-Bibliothek integriert hat. Wenn man also einen Pico hat, kann man mit beiden Kernen herumspielen.
Außerdem hat MicroLua Fennel-Unterstützung, so dass Sie, wenn Sie Lisp lieben (wie ich), trotzdem die Vorteile von MicroLua nutzen können. Möchten Sie eine Lisp-ähnliche Sprache mit Ihrem Raspberry Pi Pico verwenden? Remy hat das gerade lächerlich einfach gemacht.
Erste Schritte mit MicroLua
Um MicroLua einzurichten, müssen Sie Folgendes klonen das Repository, initialisieren Sie die Submodule und folgen Sie den Anweisungen zur Erstellung.
Auf GitHub finden Sie den folgenden Code, mit dem Sie eine Testsuite zum Laufen bringen können:
# 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/
Wenn Sie das haben, sind Sie startklar.
Ich sollte erwähnen, dass Remy ein paar Probleme mit der Leistung von MicroLua identifiziert hat. An erster Stelle steht die Tatsache, dass die Latenzzeit bei der Ereignisabfertigung relativ langsam ist und verbessert werden muss.
Außerdem, wenn Sie zu die GitHub-SeiteRemy hat eine Roadmap für Dinge, die hinzugefügt werden sollen, wie weitere Bindungen für das Pico SDK, ein Dateisystem und Multi-Chip-Kommunikation. Außerdem will Remy die Threading-Performance und die Cross-Core-Kommunikation verbessern und den Garbage Collector abstimmen.
Es handelt sich also um ein sehr lebendiges Projekt, das es wert ist, im Auge behalten zu werden.
Das kleine Programm im Video habe ich in MicroPython geschrieben - aber das nächste Mal werde ich Fennel und MicroLua verwenden!
Schlussfolgerung
Jetzt, wo Sie es haben, können Sie Ihr nächstes Pico-Projekt in Angriff nehmen. Die Welt liegt Ihnen zu Füßen!
Das erste, woran ich dachte, als ich dieses Projekt sah, war Lua RTOS für einen ESP32. Wenn Sie also Ihre Möglichkeiten für Lua mit Mikrocontrollern im Allgemeinen betrachten, sollten Sie sich auch dieses Projekt ansehen.
Wenn Sie jedoch etwas Inspiration brauchen, können Sie sich einige Pico-Projekte ansehen, die wir vorgestellt haben:
- Alles über die Tonausgabe mit dem Pico W
- Alles über Bluetooth auf dem Raspberry Pi Pico W
- Ein Raspberry Pi Pico W Sicherheitsalarm
- Eine Raspberry Pi Pico Tastatur
- Eine Raspberry Pi Pico-Uhr
- Ein Raspberry Pi Pico Luftqualitätsmonitor
Wenn Sie einen Pico W haben, vergessen Sie nicht, ihn an PiCockpitAuf diese Weise können Sie von überall auf der Welt über das Internet eine Verbindung herstellen.
Welche Projekte werden Sie mit MicroLua erstellen? Ich freue mich schon darauf, Fennel für mein nächstes Pico-Projekt zu verwenden!