🕒 : 3 h maximum
Prérequis:
- cours Raspberry Pi
- cours libgpiod
- Avoir fait RPI_0 et disposer d’un Raspberry PI OS64 avec ssh
- Savoir utiliser une plaque d’essais ,et câbler des LED de couleurs.
- Utilisation de fritzing pour les schémas et plans de câblage
- Câbler un interrupteur, un relais REED ou ILS interrupteur à lame souple et son AIMANT
- Pull UP et Pull Down , Résistance de rappel haut , et résistance de rappel bas , Externe et Interne
But:
- Mettre en oeuvre un code pilotant les GPIO en Shell Bash et ligne de commande
- Estimation de la valeur de la resistance de limitation de courant dans une led
- Utilisation de PULL UP / DOWN sur GPIO , externe et interne
Répertoire du travail:
~/Works/RPI_1
Les GPIO en ligne de commande sous RASPI OS 64
Les GPIO (General Purpose Input/Output) du Raspberry Pi sont des broches numériques programmables qui permettent d’interagir avec des composants électroniques externes. Elles peuvent être configurées en entrée (pour lire un signal, comme un bouton-poussoir) ou en sortie (pour envoyer un signal, comme allumer une LED).
Caractéristiques principales :
- Broches numériques : Fonctionnent en 3,3V (ne supportent pas le 5V en entrée sans précautions).
- Configurables : En entrée (input) ou en sortie (output) via des commandes logicielles.
- Protocoles supportés : Certaines broches gèrent des protocoles comme I2C, SPI, UART.
- PWM (Pulse Width Modulation) : Certaines broches permettent de générer un signal PWM pour contrôler des moteurs ou des LEDs.
Utilisations courantes :
- Contrôler des LEDs, des moteurs ou des relais.
- Lire des capteurs (température, humidité, boutons, etc.).
- Communiquer avec d’autres appareils via I2C/SPI.
Exemple de broches GPIO (modèle 40 broches, RPI3/4 :
- Broches 3,3V et 5V : Alimentation.
- Broches GND : Masse (ground).
- Broches GPIO numérotées (ex: GPIO2, GPIO17, etc.).
⚠️ Attention : Il faut toujours utiliser des résistances de limitation de courant pour éviter d’endommager le Raspberry Pi.
Ces broches sont contrôlables via des langages comme Python (bibliothèque RPi.GPIO ou gpiozero), C, ou des scripts shell.
La commande pinout

Utiliser les GPIO, avec libgpiod
Piloter une LED ROUGE
cours sur les GPIO du Raspberry Pi avec libgpiod
Pour découvrir les gpio , on va utiliser une plaque d’essai , une led rouge et une résistance de limitation pour la tension de 3,3V
Câblage
Repèrer l’anode et la cathode de la LED
la ligne du haut sera au 3,3V (on prend l’habitude de mettre les alimentations , le 0V ligne en bas fil bleu et 3,3V ici le +3,3V)
Le fil jaune ,signal de commande GPIO17 sur l’anode la cathode au 0V (masse, terre..) a travers la résistance de limitation de courant.

Calcul de la résistance de limitation
on va apprendre à estimer la valeur de la résistance de limitation de courant de la LED
La patte la plus courte est la Cathode , K ,« K » vient de l’allemand « Kathode », et son usage persiste en électronique pour éviter des ambiguïtés.
Anode la plus longue (la plus), si les pattes sont coupées … le méplat va permettre de repérer l’anode a droite la cathode à gauche
un moyen mnémotechnique : on dit plus facilement l’alphabet de A à K et pas de K à A , pour retenir le sens du courant
les caractéristiques des diodes LED
Calculer la résistance de limitation du courant en fonction de la couleur
https://www.digikey.fr/fr/resources/conversion-calculators/conversion-calculator-resistor-color-code
pour avoir la valeur de votre résistor.
Pour la led rouge par exemple le point de fonctionnement pour une bonne luminosité est de 1.93 V pour 20 mA
R=U/I
U=3.3-1.93
Donner R
remarque: Les résistances misent à disposition sont bien pour toutes les couleurs.
on va piloter la led en ligne de commande
# allumer la led
gpioset gpiochip0 17=1
# eteindre la led
gpioset gpiochip0 17=0
Utiliser shell bash pour réaliser des scripts
l’avantage de shell bash, est qu’ils sont vite réalisés , et pratique pour tester rapidement un montage.
Mais il faut préférer un langage comme le C/C++ , voir le python .
code bash shell blinkgpio17.sh
répertoire: shellbash code: blinkgpio17.sh
#!/bin/bash
# Clignotement LED sur GPIO17
while true; # boucle sans fin
do
gpioset gpiochip0 17=1 && sleep 1 #allume la led durant 1 seconde
gpioset gpiochip0 17=0 && sleep 1 #eteint la led durant 1 seconde
done
rendre exécutable et tester blinkgio17.sh
quelle est la fréquence de clignotement de la LED?
Ajouter une LED verte sur votre plaque d’essais sur GPIO27
Pour faire les câblages il est préférable d’éteindre vos Raspberry Pi , pour les arrêter , sudo halt et débrancher quand il n y a plus de signe d’activiter.
Pour valider vos acquis précédent, vous aller câbler une LED verte en justifiant vos choix.
Proposer un schéma et un câblage, et le calcul de la résistance de limitation pour la led verte. (utiliser Fritzing)
La led verte sera sur GPIO27 , on garde la rouge précédente sur GPIO17
Proposer la ligne commande qui va allumer la led verte
Donner un shell bash script qui va faire alterner les 2 leds à la fréquence de 0.1 Hertz.
répertoire: deuxleds , code : alterne2.sh
Entrée et Sortie
on va introduire ici le relais ILS , interrupteur à lame souple , qui va nous servir de capteur , présence d’un champ magnétique (aimant) ou non .
L’état de l’ILS sera lu sur GPIO27 (sur notre câblage GPIO27 lit 0 si aucun aimant et 1 si aimant !)
On garde une LED ROUGE avec sa résistance de limitation de courant sur GPIO17

Identifier la résistance limitation de courant
Justifier votre réponse
On câble ici un ILS (interrupteur à lame souple)
Il est associé à un aimant
si il n’y a pas d’aimant donner l’état logique sur GPIO27
pourquoi ?
on approche l’aimant de l’ils quel est l’état logique sur GPIO27
pourquoi ?
Donner la commande sous linux pour lire l’état de GPIO27
Utiliser cette commande pour confirmer avec aimant et sans
Justifier la présence de la résistance de rappel bas (pull down)
Code pour piloter la LED avec l’aimant (sur ILS)
Répertoire: piloteled , code : piloteled.sh
#!/bin/bash
# Configuration
LED_GPIO="17" # Broche BCM17 pour la LED
ILS_GPIO="27" # Broche BCM27 pour l'ILS
CHIP="gpiochip0" # Chip GPIO par défaut
# Configurer la LED en sortie
gpioset $CHIP $LED_GPIO=0 # Initialisation à OFF
echo "Monitoring ILS sur GPIO$ILS_GPIO -> LED GPIO$LED_GPIO (Ctrl+C pour quitter)"
# Boucle principale
while true;
do
# Lire l'état de l'ILS (sortie brute: "1" ou "0")
STATE=$(gpioget $CHIP $ILS_GPIO)
# Inverser l'état pour la LED (car pull-up: 0=actif)
if [ "$STATE" = "0" ]; then
gpioset $CHIP $LED_GPIO=1 # LED ON
else
gpioset $CHIP $LED_GPIO=0 # LED OFF
fi
sleep 0.1 # Délai optionnel
done
Utilisons la résistance de rappel haut
on va modifier le câblage, pour le simplifier, ce qui ajoutera un peu plus de code..
enlevons la résistance de rappel externe bas, et mettons a la place notre ILS
Donc on simplife le cablage , le cable rouge de l’ILS disparait et la résistance externe aussi !
Donner le schéma de câblage avec Fritzing avec les modifications
Donner l’etat de GPIO27 si il y a l’aimant.
c’est très net ici, aucun doute possible !
Donner l’état de GPIO27 si l y n’a plus d’aimant.
attention … a priori la broche est en entrée .. donc en haute impédance, et il n’y a pas d’état logique imposé.
ici c’est une antenne!
Utilisation d’une résistance de pull up interne
Dans le Data sheet du SOC BCM2837 on voit qu’une résistance de rappel interne de 50 kO est intégrée pour chaque GPIO
La solution avec une commande la libgpiod :
gpioget --bias=pull-up gpiochip0 27
–bias=pull-up va ajouter sur l’entrée 27 une résistance interne de pull UP
Code pour piloter la led avec l’aimant sans la résistance de rappel externe.
Répertoire: piloteled , code piloteledsr.sh
#!/bin/bash
# Configuration
LED_GPIO="17" # Broche BCM17 pour la LED
ILS_GPIO="27" # Broche BCM27 pour l'ILS
CHIP="gpiochip0" # Chip GPIO par défaut
# Configurer la LED en sortie
gpioset $CHIP $LED_GPIO=0 # Initialisation à OFF
echo "Monitoring ILS sur GPIO$ILS_GPIO -> LED GPIO$LED_GPIO (Ctrl+C pour quitter)"
# Boucle principale
while true; do
# Lire l'état de l'ILS (sortie brute: "1" ou "0")
STATE=$(gpioget --bias=pull-up $CHIP $ILS_GPIO)
# Inverser l'état pour la LED (car pull-up: 0=actif)
if [ "$STATE" = "0" ]; then
gpioset $CHIP $LED_GPIO=1 # LED ON
else
gpioset $CHIP $LED_GPIO=0 # LED OFF
fi
sleep 0.1 # Délai optionnel
done






