Contrôlez votre Raspberry Pi avec Lua


  • Français


  • 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 :

    1. Ouvre la LED principale du Raspberry Pi identifiée comme led0 en appelant le LED fonction de la periphery bibliothèque et en lui passant la chaîne led0.
    2. Imprime le message Turn LED on à la trace (la console).
    3. Active la LED en appelant le write méthode sur l’objet LED et en lui passant la valeur booléenne truequi définit la luminosité maximale de la LED.
    4. Attend 3 secondes en appelant ba.sleep(3000).
    5. Imprime le message Turn LED off à la trace.
    6. Désactive la LED en appelant le write méthode sur l’objet LED et en lui passant la valeur booléenne falsequi définit la luminosité nulle de la LED.
    7. Ferme le LED en appelant le close 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 !

    Source

    Houssen Moshinaly

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code