GPIO-PI
Aller à la navigation
Aller à la recherche
Utilisation des GPIO avec Python et libgpiod 2.x
Cette page décrit l'utilisation des GPIO d'un Raspberry Pi sous Debian 13 / Raspberry Pi OS avec la bibliothèque libgpiod 2.x.
Prérequis
Vérifier la version installée :
python3 -c "import gpiod; print(gpiod.__version__)"
Exemple :
2.2.0
Les exemples de cette page sont compatibles avec libgpiod 2.x.
Déclaration des GPIO
import gpiod
req = gpiod.request_lines(
"/dev/gpiochip0",
consumer="relays",
config={
16: gpiod.LineSettings(
direction=gpiod.line.Direction.INPUT
),
20: gpiod.LineSettings(
direction=gpiod.line.Direction.OUTPUT
),
21: gpiod.LineSettings(
direction=gpiod.line.Direction.OUTPUT
),
}
)
la ligne 16 en entrée et les lignes 20 et 21 en sortie.
Utilisation de relais
Une des utilisation est le pilotage de relais. Qui, eux même commanderont, ce que l'on voudra.

Activation d'un relais
Activation du relais connecté au GPIO20 :
req.set_value(20, gpiod.line.Value.ACTIVE)
Activation du relais connecté au GPIO21 :
req.set_value(21, gpiod.line.Value.ACTIVE)
Désactivation d'un relais
Désactivation du relais connecté au GPIO20 :
req.set_value(20, gpiod.line.Value.INACTIVE)
Désactivation du relais connecté au GPIO21 :
req.set_value(21, gpiod.line.Value.INACTIVE)
Programme complet
#!/usr/bin/env python3
import gpiod
import time
with gpiod.request_lines(
"/dev/gpiochip0",
consumer="relays",
config={
20: gpiod.LineSettings(
direction=gpiod.line.Direction.OUTPUT
),
21: gpiod.LineSettings(
direction=gpiod.line.Direction.OUTPUT
),
}
) as req:
# activation des deux relais
req.set_value(20, gpiod.line.Value.ACTIVE)
req.set_value(21, gpiod.line.Value.ACTIVE)
time.sleep(5)
# arrêt des deux relais
req.set_value(20, gpiod.line.Value.INACTIVE)
req.set_value(21, gpiod.line.Value.INACTIVE)
Fonction utilitaire pour les relais.
def relay(req, gpio, state):
req.set_value(
gpio,
gpiod.line.Value.ACTIVE
if state
else gpiod.line.Value.INACTIVE
)
Utilisation :
relay(req, 20, True) # ON
relay(req, 20, False) # OFF
relay(req, 21, True) # ON
relay(req, 21, False) # OFF