Εξερεύνηση της MicroLua: RP2040
Θέλατε ποτέ να εντρυφήσετε στον κόσμο του προγραμματισμού Lua και να εξερευνήσετε τις δυνατότητες του μικροελεγκτή RP2040; Μην ψάχνετε άλλο - το MicroLua προσφέρει μια συναρπαστική ευκαιρία να κάνετε ακριβώς αυτό!
Σε αυτό το άρθρο, θέλω να καταδυθώ σε αυτό που MicroLua είναι, πώς λειτουργεί και γιατί πιστεύω ότι είναι ένα εξαιρετικά πολύτιμο εργαλείο για τους προγραμματιστές.
Θέλω να στείλω ένα τεράστιο μπράβο στους Remy Blank για την ανάπτυξη της MicroLua και το μοίρασμά της με τον κόσμο. Ο Remy την έβγαλε με άδεια MIT (όπως είναι και η ίδια η Lua), καθιστώντας τη MicroLua διαθέσιμη για όλους.
Είμαι πραγματικά ενθουσιασμένος που θα το χρησιμοποιήσω σε κάποια μελλοντικά έργα.
Τι είναι η MicroLua; Τι είναι το RP2040;
Έτσι, η MicroLua χρησιμοποιεί την υλοποίηση της Lua και την πακετάρει.
Η Lua είναι μια δυναμικά δακτυλογραφημένη, πολυπαραδειγματική γλώσσα. Και είναι, φυσικά, μία από τις ταχύτερες γλώσσες σεναρίων που υπάρχουν. Είναι επίσης εξαιρετικά μικρή (ο πηγαίος κώδικας και η τεκμηρίωση μαζί καταλαμβάνουν 1,3 MB!)
Έτσι, είναι γρήγορο, είναι μικρό και είναι ιδανικό όταν θέλετε να ενσωματώσετε κάτι μέσα σε μεγαλύτερες εφαρμογές.
Η Lua έχει επίσης 21 λέξεις-κλειδιά και ένα αρκετά απλό συντακτικό, οπότε είναι σχετικά εύκολο να το μάθετε.
Αλλά, αν δεν είστε εξοικειωμένοι, το άμεσο πράγμα για το οποίο όλοι παραπονιούνται για τη Lua είναι ότι είναι μια γλώσσα με δείκτη 1. Και ειλικρινά, αυτό με ενοχλεί κάθε φορά.
Εδώ είναι ένα παράδειγμα της Lua, για να το δείτε:
Ο Remy έχει σχεδιάσει τη MicroLua για να προγραμματίσει ειδικά για τον μικροελεγκτή RP2040.
Ο μικροελεγκτής RP2040 είναι ένα εσωτερικό τσιπ του Raspberry Pi που οδηγεί ένα Pico. Ωστόσο, το Raspberry Pi πωλεί επίσης το τσιπ RP2040 ξεχωριστά. Έτσι, μπορείτε να βρείτε το RP2040 και σε άλλες πλακέτες, όπως ένα Adafruit Feather.
Η MicroLua, λοιπόν, πακετάρει τη Lua για αυτές τις πλακέτες. Σε αυτό το πλαίσιο, η MicroLua ενσωματώνει τον τελευταίο διερμηνέα Lua (έκδοση 5.4) με διεπαφές για το κιτ ανάπτυξης λογισμικού Pico και περιλαμβάνει μια συνεργατική βιβλιοθήκη νηματοποίησης.
Βάζοντας τον διερμηνέα Lua μαζί με τις διεπαφές Pico, η MicroLua σας επιτρέπει να έχετε πρόσβαση στις ακίδες GPIO και στους χρονοδιακόπτες. Και μου αρέσει πολύ που ο Remy έχει συμπεριλάβει μια συνεργατική βιβλιοθήκη νημάτων. Έτσι, αν έχετε ένα Pico, μπορείτε να παίξετε και με τους δύο πυρήνες.
Επιπλέον, η MicroLua έχει υποστήριξη Fennel, οπότε αν αγαπάτε τη Lisp (όπως εγώ), μπορείτε να επωφεληθείτε από τη MicroLua. Θέλετε να χρησιμοποιήσετε μια γλώσσα που μοιάζει με Lisp με το Raspberry Pi Pico σας; Ο Remy μόλις το έκανε αυτό γελοία εύκολο.
Ξεκινώντας με τη MicroLua
Για να εγκαταστήσετε τη MicroLua, θα πρέπει να κλωνοποιήσετε το αποθετήριο, αρχικοποιήστε τις υπομονάδες και ακολουθήστε τις παρεχόμενες οδηγίες κατασκευής.
Στο GitHub υπάρχει ο παρακάτω κώδικας με τον οποίο μπορείτε να δημιουργήσετε και να εκτελέσετε μια σουίτα δοκιμών:
# 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/
Μόλις το αποκτήσετε αυτό, είστε έτοιμοι να ξεκινήσετε.
Θα πρέπει να αναφέρω ότι ο Remy έχει εντοπίσει μερικά προβλήματα με την απόδοση της MicroLua. Πρώτα απ' όλα, το γεγονός ότι η καθυστέρηση αποστολής συμβάντων είναι σχετικά αργή και χρειάζεται κάποια βελτίωση.
Επιπλέον, αν πάτε στο η σελίδα GitHub, ο Remy έχει συμπεριλάβει έναν χάρτη πορείας για πράγματα που θα προστεθούν, όπως περισσότερες συνδέσεις για το Pico SDK, ένα σύστημα αρχείων και επικοινωνία πολλαπλών τσιπ. Και ο Remy θέλει να βελτιώσει την απόδοση των νημάτων, την επικοινωνία μεταξύ των πυρήνων και να συντονίσει τον συλλέκτη σκουπιδιών.
Έτσι, αυτό είναι ένα έργο που είναι πολύ ζωντανό και αξίζει να το παρακολουθείτε.
Έγραψα αυτό το μικρό πρόγραμμα στο βίντεο σε MicroPython - αλλά την επόμενη φορά θα χρησιμοποιήσω Fennel και MicroLua!
Συμπέρασμα
Τώρα λοιπόν που το έχετε, ξεκινήστε το επόμενο έργο σας για το Pico. Ο κόσμος είναι το στρείδι σας!
Το πρώτο πράγμα που σκέφτηκα όταν είδα αυτό το έργο ήταν Lua RTOS για ένα ESP32. Έτσι, αν εξετάζετε τις επιλογές σας για Lua με μικροελεγκτές γενικότερα, φροντίστε να ελέγξετε και αυτό το έργο.
Αν χρειάζεστε έμπνευση, μπορείτε να δείτε μερικά έργα Pico που έχουμε παρουσιάσει:
- Τα πάντα για την έξοδο ήχου με το Pico W
- Τα πάντα για το Bluetooth στο Raspberry Pi Pico W
- Ένας συναγερμός ασφαλείας Raspberry Pi Pico W
- Ένα πληκτρολόγιο Raspberry Pi Pico
- Ένα ρολόι Raspberry Pi Pico
- Ένα Raspberry Pi Pico Air Quality Monitor
Επίσης, αν έχετε ένα Pico W, μην ξεχάσετε να το συνδέσετε στο PiCockpit, με αυτόν τον τρόπο μπορείτε να συνδεθείτε σε αυτό από οπουδήποτε στον κόσμο μέσω του διαδικτύου.
Τι έργα πρόκειται να δημιουργήσετε με τη MicroLua; Ανυπομονώ πραγματικά να χρησιμοποιήσω το Fennel για το επόμενο έργο μου στο Pico!