Contrôlez votre Raspberry Pi avec Lua

Lua est une langue parfois mal comprise. C’est différent des autres langages, comme Python, mais c’est un langage d’extension polyvalent qui est largement utilisé dans les moteurs de jeu, les frameworks, etc. Dans l’ensemble, je trouve que Lua est un outil précieux pour les développeurs, leur permettant d’améliorer et d’étendre leurs projets de manière puissante.
Vous pouvez télécharger et exécuter Lua stock comme Seth Kenlon l’a expliqué dans son article Is Lua Wort Learning, qui comprend des exemples simples de code Lua. Cependant, pour tirer le meilleur parti de Lua, il est préférable de l’utiliser avec un framework qui a déjà adopté le langage. Dans ce didacticiel, je montre comment utiliser un framework appelé Mako Server, conçu pour permettre aux programmeurs Lua de coder facilement des applications IoT et Web. Je vous montre également comment étendre ce cadre avec une API pour travailler avec les broches GPIO du Raspberry Pi.
Exigences
Avant de suivre ce tutoriel, vous avez besoin d’un Raspberry Pi en cours d’exécution auquel vous pouvez vous connecter. Bien que je compilerai du code C dans ce didacticiel, vous n’avez besoin d’aucune expérience préalable avec le code C. Cependant, vous avez besoin d’une certaine expérience avec un terminal POSIX.
Installer
Pour commencer, ouvrez une fenêtre de terminal sur votre Raspberry Pi et installez les outils suivants pour télécharger du code à l’aide de Git et pour compiler du code C :
$ sudo apt install git unzip gcc make
Ensuite, compilez le code open source Mako Server et la bibliothèque Lua-periphery (la bibliothèque Raspberry Pi GPIO) en exécutant la commande suivante :
$ wget -O Mako-Server-Build.sh
https://raw.githubusercontent.com/RealTimeLogic/BAS/main/LinuxBuild.sh \
Passez en revue le script pour voir ce qu’il fait, et exécutez-le une fois que vous vous sentez à l’aise :
$ sh ./Mako-Server-Build.sh
Le processus de compilation peut prendre un certain temps, en particulier sur un ancien Raspberry Pi. Une fois la compilation terminée, le script vous demande d’installer le Mako Server et le module lua-periphery pour /usr/local/bin/
. Je recommande de l’installer pour simplifier l’utilisation du logiciel. Ne vous inquiétez pas, si vous n’en avez plus besoin, vous pouvez le désinstaller :
$ cd /usr/local/bin/
$ sudo rm mako mako.zip periphery.so
Pour tester l’installation, tapez mako
dans votre terminal. Cela démarre le serveur Mako et affiche une sortie dans votre terminal. Vous pouvez arrêter le serveur en appuyant sur CTRL+C.
IdO et Lua
Maintenant que le serveur Mako est configuré sur votre Raspberry Pi, vous pouvez commencer à programmer des applications IoT et Web et à travailler avec les broches GPIO du Raspberry Pi à l’aide de Lua. Le framework Mako Server fournit une API puissante et facile aux développeurs Lua pour créer des applications IoT et le module lua-periphery permet aux développeurs Lua d’interagir avec les broches GPIO du Raspberry Pi et d’autres périphériques.
Commencez par créer un répertoire d’applications et un .preload
script, qui insère du code Lua pour tester le GPIO. Le .preload
script est une extension Mako Server chargée et exécutée en tant que script Lua au démarrage d’une application.
$ mkdir gpiotst
$ nano gpiotst/.preload
Copiez ce qui suit dans l’éditeur Nano et enregistrez le fichier :
-- Load periphery.so and access the LED interface
local LED = require('periphery').LED
local function doled()
local led = LED("led0") -- Open LED led0
trace"Turn LED on"
led:write(true) -- Turn on LED (set max brightness)
ba.sleep(3000) -- 3 seconds
trace"Turn LED off"
led:write(false) -- Turn off LED (set zero brightness)
led:close()
end
ba.thread.run(doled) -- Defer execution
-- to after Mako has started
Le code Lua ci-dessus contrôle la LED Raspberry Pi principale à l’aide de la bibliothèque Lua-periphery que vous avez compilée et incluse avec le serveur Mako. Le script définit une seule fonction appelée doled
qui contrôle la LED. Le script commence par charger le periphery
bibliothèque (la bibliothèque partagée periphery.so) en utilisant le Lua require
fonction. Les données renvoyées sont une table Lua avec toutes les fonctions de l’API GPIO. Cependant, vous n’avez besoin que de l’API LED, et vous y accédez directement en ajoutant .LED
après avoir appelé require
. Ensuite, le code définit une fonction appelée doled
qui fait ce qui suit :
- Ouvre la LED principale du Raspberry Pi identifiée comme
led0
en appelant leLED
fonction de laperiphery
bibliothèque et en lui passant la chaîneled0
. - Imprime le message
Turn LED on
à la trace (la console). - Active la LED en appelant le
write
méthode sur l’objet LED et en lui passant la valeur booléennetrue
qui définit la luminosité maximale de la LED. - Attend 3 secondes en appelant
ba.sleep(3000)
. - Imprime le message
Turn LED off
à la trace. - Désactive la LED en appelant le
write
méthode sur l’objet LED et en lui passant la valeur booléennefalse
qui définit la luminosité nulle de la LED. - Ferme le
LED
en appelant leclose
fonction sur l’objet LED.
À la fin de .preload
scénario, le doled
la fonction est passée en argument à la fonction ba.thread.run
. Cela permet l’exécution des doled
fonction à différer jusqu’au démarrage de Mako Server.
Pour démarrer le gpiotst
l’application, exécutez le serveur Mako comme suit :
$ mako -l::gpiotst
Le texte suivant est imprimé dans la console :
Opening LED:
opening 'brightness': Permission denied.
L’accès au GPIO nécessite un accès root, arrêtez donc le serveur en appuyant sur CTRL+C et redémarrez le serveur Mako comme suit :
$ sudo mako -l::gpiotst
Maintenant, la LED Raspberry Pi s’allume pendant 3 secondes. Succès!
Lua déverrouille l’IoT
Dans cette introduction, vous avez appris à compiler le serveur Mako, y compris le module GPIO Lua, et à écrire un script Lua de base pour allumer et éteindre la LED Raspberry Pi. Je couvrirai d’autres fonctions IoT, en m’appuyant sur cet article, dans de futurs articles.
Vous pouvez en attendant approfondir la bibliothèque GPIO de la périphérie Lua en lisant son Documentation pour en savoir plus sur ses fonctions et comment l’utiliser avec différents périphériques. Pour tirer le meilleur parti de ce didacticiel, envisagez de suivre les tutoriel interactif Mako Server Lua pour mieux comprendre Lua, le web et l’IoT. Bon codage !