« GPIO-PI » : différence entre les versions

De knowledge
Aller à la navigation Aller à la recherche
Page créée avec « = 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 : <syntaxhighlight lang="bash"> python3 -c "import gpiod; print(gpiod.__version__)" </syntaxhighlight> Exemple : <syntaxhighlight lang="text"> 2.2.0 </syntaxhighlight> Les exemples de cette page sont compatibles avec libgpi... »
 
m relais
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 18 : Ligne 18 :


Les exemples de cette page sont compatibles avec libgpiod 2.x.
Les exemples de cette page sont compatibles avec libgpiod 2.x.
== GPIO utilisés ==
{| class="wikitable"
! GPIO BCM
! Usage
|-
| 20
| Relais 1
|-
| 21
| Relais 2
|}


== Déclaration des GPIO ==
== Déclaration des GPIO ==
Ligne 41 : Ligne 28 :
     consumer="relays",
     consumer="relays",
     config={
     config={
        16: gpiod.LineSettings(
            direction=gpiod.line.Direction.INPUT
        ),
         20: gpiod.LineSettings(
         20: gpiod.LineSettings(
             direction=gpiod.line.Direction.OUTPUT
             direction=gpiod.line.Direction.OUTPUT
Ligne 49 : Ligne 39 :
     }
     }
)
)
</syntaxhighlight>
</syntaxhighlight>la ligne 16 en entrée et les lignes 20 et 21 en sortie.


== Activation d'un relais ==
== Utilisation de relais ==
Une des utilisation est le pilotage de relais. Qui, eux même commanderont, ce que l'on voudra.
[[Fichier:20260722 223533.jpg|vignette|248x248px|Exemple de carte avec deux relais]]


=== Activation d'un relais ===
Activation du relais connecté au GPIO20 :
Activation du relais connecté au GPIO20 :


Ligne 65 : Ligne 58 :
</syntaxhighlight>
</syntaxhighlight>


== Désactivation d'un relais ==
=== Désactivation d'un relais ===
 
Désactivation du relais connecté au GPIO20 :
Désactivation du relais connecté au GPIO20 :


Ligne 79 : Ligne 71 :
</syntaxhighlight>
</syntaxhighlight>


== Programme complet ==
=== Programme complet ===
 
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
#!/usr/bin/env python3
#!/usr/bin/env python3
Ligne 111 : Ligne 102 :
</syntaxhighlight>
</syntaxhighlight>


== Fonction utilitaire ==
=== Fonction utilitaire pour les relais. ===
 
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
def relay(req, gpio, state):
def relay(req, gpio, state):
Ligne 131 : Ligne 121 :
relay(req, 21, True)  # ON
relay(req, 21, True)  # ON
relay(req, 21, False)  # OFF
relay(req, 21, False)  # OFF
</syntaxhighlight
</syntaxhighlight>

Dernière version du 22 juillet 2026 à 20:43

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.

Exemple de carte avec deux relais

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