Contrôler les broches GPIO du Raspberry Pi

Les broches GPIO (General Purpose Input/Output) du Raspberry Pi permettent d’interagir directement avec le monde physique : allumer une LED, lire un bouton poussoir, déclencher un relais, etc.

Depuis les dernières versions de Raspberry Pi OS (basées sur Debian Bookworm), l’ancienne méthode via /sys/class/gpio est dépréciée.

La nouvelle méthode recommandée utilise la librairie libgpiod, beaucoup plus moderne et performante.

1. Installation de libgpiod

Ouvrez un terminal sur votre Raspberry Pi et installez la librairie avec :

sudo apt update
sudo apt install gpiod libgpiod-dev

Cela installera les outils en ligne de commande :

  • gpiodetect
  • gpioinfo
  • gpioget
  • gpioset
  • gpiomon

 

 2. Principales commandes libgpiod

Commande Description
gpiodetect Liste les puces GPIO disponibles (souvent gpiochip0)
gpioinfo Affiche les informations des broches disponibles
gpioset Écrit une valeur (0 ou 1) sur une broche GPIO
gpioget Lit la valeur d’une broche GPIO
gpiomon Surveille les changements d’état d’une broche GPIO

Exemple :

Pour obtenir des détails sur les broches :

gpioinfo gpiochip0

3. Comprendre les GPIO

Chaque GPIO (General Purpose Input/Output) est une broche numérique programmable du Raspberry Pi.
Ces broches peuvent être configurées en entrée (pour lire un signal) ou en sortie (pour envoyer un signal).

  • Sortie (Output) : le Raspberry Pi envoie un signal logique 0 (0 V) ou 1 (3,3 V).

  • Entrée (Input) : la broche lit la tension appliquée dessus.

    • Si la tension est proche de 0 V, l’état lu est 0.

    • Si la tension est proche de 3,3 V, l’état lu est 1.

⚠️ Attention : les GPIO du Raspberry Pi fonctionnent en 3,3 V.
Appliquer une tension supérieure (comme 5 V) peut endommager définitivement le processeur.

Les GPIO ne peuvent pas fournir beaucoup de courant — environ 16 mA maximum par broche et 50 mA au total sur l’ensemble.
C’est pour cette raison qu’il est indispensable d’utiliser une résistance série pour protéger la LED qu’on installera après, ou tout autre composant consommateur de courant.

4. Allumer une LED sur la broche GPIO 24

Une LED est une diode électroluminescente : elle laisse passer le courant dans un sens, mais n’a pas de résistance interne suffisante.
Si on la relie directement à un GPIO, elle pourrait tirer trop de courant → la broche serait surchargée, la LED ou le Raspberry Pi pourraient être endommagés.

 Le rôle de la résistance :

  • Limiter le courant dans la LED à une valeur sûre (typiquement 5 à 10 mA).

  • Protéger le GPIO.

Exemple de calcul :
Si la LED rouge a une chute de tension de ~2 V et le GPIO fournit 3,3 V :

R=(U/I) = (3.3V − 2V)/0.005A)= 260Ω
R = \frac{3.3V – 2V}{0.005A} = 260 Ω

On prend la valeur normalisée supérieure → 330 Ω.

Matériel

  • 1 LED
  • 1 résistance (330 Ω)
  • Câbles Dupont

Branchement :

  • Broche GPIO24 (pin 18) → anode de la LED (patte longue)
  • Cathode de la LED (patte courte) → résistance → GND (pin 20)

Test avec gpioset

Pour allumer la LED, dans un terminal :

gpioset gpiochip0 24=1

Pour l’éteindre :

gpioset gpiochip0 24=0


5. Clignoter une LED 5 fois avec un script Bash

Nous allons créer un script shell permettant de faire clignoter la LED 5 fois.
Créez un fichier clignote.sh :

#!/bin/bash
# Clignoter une LED 5 fois sur GPIO 24

for i in {1..5}
do
    gpioset gpiochip0 24=1
    sleep 1
    gpioset gpiochip0 24=0
    sleep 1
done

Rendez-le exécutable et exécutez-le :

chmod +x clignote.sh
./clignote.sh

Votre LED clignote 5 fois

 

6. Lire un bouton poussoir sur la broche GPIO 18

Lorsqu’un bouton est appuyé ou relâché, il connecte ou déconnecte un circuit.
Mais une broche en entrée ne doit jamais rester “flottante” (non connectée à 0 V ou 3,3 V), car elle capterait du bruit électrique et donnerait des valeurs aléatoires.

Pour éviter cela, on utilise des résistances de tirage (pull-up ou pull-down).

Pourquoi deux résistances (ou pas)

Deux options :

  1. Utiliser les résistances internes du Raspberry Pi
    Chaque GPIO peut activer une résistance interne de pull-up (vers 3,3 V) ou pull-down (vers GND).
    Cela se fait par logiciel, mais avec libgpiod, c’est parfois moins pratique à configurer.

  2. Utiliser des résistances externes
    On place une résistance de 10 kΩ entre la broche et le 3,3 V (pull-up), et le bouton relie la broche au GND lorsqu’on appuie.
    Ainsi :

    • Bouton relâché → GPIO lit 1 (via la pull-up)

    • Bouton appuyé → GPIO lit 0 (car relié au GND)

Branchement :

 

Lecture simple :

gpioget gpiochip0 18

Retourne 0 (relâché) ou 1 (appuyé) selon le câblage.

 

 

7. Exemple : Allumer la LED quand le bouton est appuyé

Ce script surveille en permanence l’état d’un bouton poussoir (connecté sur le GPIO 18) et allume ou éteint une LED (connectée sur le GPIO 24) en fonction de cet état.

C’est donc une sorte de boucle de contrôle temps réel très simple :

Quand j’appuie sur le bouton → la LED s’allume
Quand je relâche le bouton → la LED s’éteint

Créez un script bouton_led.sh :

#!/bin/bash
# Allume la LED sur GPIO24 quand le bouton (GPIO18) est pressé

while true
do
    value=$(gpioget gpiochip0 18)
    if [ "$value" == "1" ]; then
        gpioset gpiochip0 24=1
    else
        gpioset gpiochip0 24=0
    fi
    sleep 0.1
done

Exécution :

chmod +x bouton_led.sh
./bouton_led.sh

8. Créer un bouton d’arrêt sur GPIO3

Le GPIO3 (pin 5) est spécial : il permet de réveiller ou éteindre le Raspberry Pi. Branchez simplement un bouton poussoir sur cette Pin 5 (GPIO3).

Activer la fonction de shutdown :

Éditez le fichier de configuration :

sudo nano /boot/config.txt

Ajoutez à la fin :

dtoverlay=gpio-shutdown,gpio_pin=3,active_low=1,gpio_pull=up

Enregistrez et redémarrez :

sudo reboot

Désormais, en appuyant sur le bouton poussoir, le Raspberry Pi s’éteindra proprement !

 

 

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *