đź•’ : 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






