Module Lua gpio
Le module gpio permet de lire et écrire des broches GPIO (General Purpose Input/Output) via l'agent. Il utilise la bibliothèque Periph.io pour l'accès matériel.
Import
Pour importer le module :
Configuration YAML
Le module gpio nécessite une configuration spécifique pour fonctionner. Cette configuration est définie dans le fichier de configuration de l'agent.
iot:
modules:
gpio:
- name: gpio1 # nom unique de l'instance
pins: # liste de broches BCM à gérer
- 17
- 18
- 27
Détails de la configuration
name(string, requis) : Nom unique de l'instance (ex."gpio1").pins(table[integer], requis) : Liste des numéros de broches au format BCM (ex.[17, 18, 27]).
Si pins est vide ou absent, une erreur de configuration sera loggée et le module ne fonctionnera pas.
Initialisation
Lors du chargement de la configuration, le module :
- Désérialise le YAML dans la structure Go.
- Vérifie que
len(Pins) > 0, sinon log d'erreur. - Initialise l'hôte Periph.io avec
host.Init(). - Pour chaque numéro dans
Pins: - Cherche le pin par nom
"GPIO<NUM>". - Le configure en entrée (
PullNoChange,NoEdge). - Stocke l'objet
gpio.PinIOdans la map interne.
API Lua
Liste des fonctions
| Fonction | Signature Lua | Rôle | Retour (succès) | Retour (échec) |
|---|---|---|---|---|
read |
bool, err = gpio.read(pin) |
Lit l'état d'une broche GPIO. | bool, nil |
nil, "msg" |
write |
bool, err = gpio.write(pin, value[, delayMs]) |
Écrit sur une broche GPIO. | true, nil |
nil, "msg" |
| Champs | gpio.name, gpio.type |
Métadonnées du module. | – | – |
gpio.read(pin)
Lit l'état logique d'une broche configurée.
- Paramètres :
-
pin(integer) : Numéro BCM de la broche à lire. -
Retour :
- En cas de succès :
true(HIGH) oufalse(LOW),nil. - En cas d'erreur :
nil, message d'erreur (broche non configurée, etc.).
local gpio = require("gpio")
local state, err = gpio.read(17)
if err then
print("Erreur : " .. err)
elseif state then
print("GPIO17 est HIGH")
else
print("GPIO17 est LOW")
end
gpio.write(pin, value[, delayMs])
Écrit un niveau logique sur une broche configurée, avec option de temporisation.
- Paramètres :
pin(integer) : Numéro BCM de la broche à écrire.value(boolean) :truepour HIGH,falsepour LOW.-
delayMs(integer, optionnel) : Délai en millisecondes avant de réappliquer la valeur (utile pour les pulses). -
Retour :
- En cas de succès :
true,nil. - En cas d'erreur :
nil, message d'erreur.
local gpio = require("gpio")
-- Mettre la broche 18 à HIGH
local ok, err = gpio.write(18, true)
if not ok then
print("Erreur : " .. err)
end
-- Pulse : HIGH pendant 500 ms puis LOW
gpio.write(18, true, 500)
gpio.write(18, false)
Exemple complet
local gpio = require("gpio")
-- Lire l'état d'un bouton sur GPIO17
local buttonState, err = gpio.read(17)
if err then
print("Erreur lecture GPIO : " .. err)
return
end
-- Allumer une LED sur GPIO18 si le bouton est appuyé
if buttonState then
gpio.write(18, true)
print("LED allumée")
else
gpio.write(18, false)
print("LED éteinte")
end
Champs Lua associés
gpio.name: Retourne le nom de l'instance du module.gpio.type: Retourne le type du module ("gpio").