GPIO-PI
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.
GPIO utilisés
| GPIO BCM | Usage |
|---|---|
| 20 | Relais 1 |
| 21 | Relais 2 |
Déclaration des GPIO
import gpiod
req = gpiod.request_lines(
"/dev/gpiochip0",
consumer="relays",
config={
20: gpiod.LineSettings(
direction=gpiod.line.Direction.OUTPUT
),
21: gpiod.LineSettings(
direction=gpiod.line.Direction.OUTPUT
),
}
)
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
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