Recherche de site Web

Contrôlez votre Raspberry Pi avec Lua


Apprenez à utiliser le langage de programmation Lua pour programmer des appareils Internet des objets (IoT) et interagir avec les broches d'entrée/sortie à usage général (GPIO) sur un Raspberry Pi.

Le Lua est une langue parfois mal comprise. Il est différent des autres langages, comme Python, mais il s’agit d’un langage d’extension polyvalent largement utilisé dans les moteurs de jeux, 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 d'origine comme Seth Kenlon l'a expliqué dans son article Lua vaut-il la peine d'être appris, 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 framework avec une API permettant de travailler avec les broches GPIO du Raspberry Pi.

Exigences

Avant de suivre ce didacticiel, vous avez besoin d'un Raspberry Pi en cours d'exécution auquel vous pouvez vous connecter. Bien que je compile 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 du serveur Mako et la bibliothèque de périphérie Lua (la bibliothèque GPIO Raspberry Pi) en exécutant la commande suivante :

$ wget -O Mako-Server-Build.sh \
https://raw.githubusercontent.com/RealTimeLogic/BAS/main/RaspberryPiBuild.sh

Examinez le script pour voir ce qu'il fait et exécutez-le une fois que vous êtes à l'aise :

$ bash ./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 serveur Mako et le module lua-periphery sur /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 des résultats dans votre terminal. Vous pouvez arrêter le serveur en appuyant sur CTRL+C.

IoT 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 simple permettant aux développeurs Lua de 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'application et un script .preload, qui insère du code Lua pour tester le GPIO. Le script .preload est une extension du serveur Mako qui est 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 principale du Raspberry Pi à l'aide de la bibliothèque de périphériques Lua que vous avez compilée et incluse avec le serveur Mako. Le script définit une fonction unique appelée doled qui contrôle la LED. Le script commence par charger la bibliothèque periphery (la bibliothèque partagée periphery.so) à l'aide de la fonction Lua require. Les données renvoyées sont une table Lua avec toutes les fonctions 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 effectue les opérations suivantes :

  1. Ouvre la LED principale du Raspberry Pi identifiée comme led0 en appelant la fonction LED depuis la bibliothèque periphery et en lui passant la chaîne led0.
  2. Imprime le message Activer la LED sur la trace (la console).
  3. Active la LED en appelant la méthode write sur l'objet LED et en lui passant la valeur booléenne true, qui définit la luminosité maximale de la LED.
  4. Attend 3 secondes en appelant ba.sleep(3000).
  5. Imprime le message Éteindre la LED sur la trace.
  6. Désactive la LED en appelant la méthode write sur l'objet LED et en lui passant la valeur booléenne false, qui définit la luminosité nulle de la LED.
  7. Ferme la LED en appelant la fonction close sur l'objet LED.

A la fin du script .preload, la fonction doled est passée en argument à la fonction ba.thread.run. Cela permet de différer l'exécution de la fonction doled jusqu'au démarrage de Mako Server.

Pour démarrer l'application gpiotst, 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 à GPIO nécessite un accès root, alors arrêtez le serveur en appuyant sur CTRL+C et redémarrez le serveur Mako comme suit :

$ sudo mako -l::gpiotst

Maintenant, la LED du Raspberry Pi s'allume pendant 3 secondes. Succès!

Lua débloque l'IoT

Dans cette introduction, vous avez appris comment compiler le serveur Mako, y compris le module GPIO Lua, et comment écrire un script Lua de base pour allumer et éteindre la LED du Raspberry Pi. J'aborderai d'autres fonctions IoT, en m'appuyant sur cet article, dans les prochains articles.

En attendant, vous pouvez approfondir la bibliothèque GPIO de la périphérie Lua en lisant sa documentation pour mieux comprendre ses fonctions et comment l'utiliser avec différents périphériques. Pour tirer le meilleur parti de ce didacticiel, envisagez de suivre le didacticiel interactif Mako Server Lua pour mieux comprendre Lua, le Web et l'IoT. Bon codage !

Articles connexes: