Le guide complet pour GPIO Zero sur Raspberry Pi

Si vous cliquez sur nos liens et effectuez un achat, nous pouvons recevoir une commission d'affiliation. En savoir plus

L’utilisation des broches GPIO sur Raspberry Pi peut décourager les débutants. De nombreuses combinaisons sont possibles et il existe une multitude de composants, il peut donc être difficile de savoir par où commencer. C’est là où GPIO Zero intervient : il s’agit d’une bibliothèque Python toute simple qui facilite le contrôle de votre matériel.

GPIO Zero remplace l’ancienne bibliothèque RPI.GPIO, désormais obsolète. Elle est préinstallée sur la dernière version de Raspberry Pi OS et supporte différents composants comme des LED, des boutons et des capteurs.

Dans ce guide, je vais vous expliquer comment configurer GPIO Zero, travailler avec des composants courants, et exploiter tout le potentiel de votre Raspberry Pi. Je vous montrerai également comment migrer votre ancien code RPI.GPIO vers GPIO Zero. C’est parti !

Si, comme moi, vous mélangez parfois la syntaxe entre différents langages de programmation, j’ai exactement ce qu’il vous faut. J’ai créé une fiche mémo Python avec toute la syntaxe essentielle au même endroit, pour que vous puissiez l’avoir sous la main et éviter toute confusion. Téléchargez-la gratuitement ici !

Commencer avec GPIO Zero

GPIO Zero est une bibliothèque Python qui supporte le nouveau Raspberry Pi 5 et la dernière version de Raspberry Pi OS. Elle vous permet de contrôler les broches GPIO (General Purpose Input Output) sur votre Raspberry Pi. C’est une excellente alternative à l’ancienne bibliothèque RPI.GPIO.

Commençons par quelques prérequis, tant en termes de matériel que de concepts théoriques à connaître avant de taper la moindre ligne de code.

Prérequis

Avant de commencer avec GPIO Zero, assurez-vous d’avoir un Raspberry Pi avec tous les accessoires requis. Vous pouvez regarder ici (en anglais) pour voir une liste des accessoires Raspberry Pi recommandés.

En plus de ceux-ci, je vous recommande d’obtenir un kit de capteurs pour expérimenter avec les broches GPIO. Ce kit de SunFounder est fortement recommandé. Nous utiliserons des composants de ce kit pour la réalisation de ce guide.

En plus d’avoir tout le matériel nécessaire, assurez-vous que votre Raspberry Pi dispose de la dernière version de Raspberry Pi OS. Suivez ce guide pour installer la dernière version de Raspberry Pi OS sur votre Raspberry Pi.

Guides recommandés :

Numérotation des broches

Une notion clé à comprendre avant de commencer est de connaître la numérotation des broches GPIO. Deux schémas de numérotation différents sont utilisés, à savoir la numérotation Broadcom (BCM) et la numérotation physique (BOARD).

Dans le schéma Broadcom (BCM), le numéro suivant « GPIO » correspond au numéro de la broche. Par exemple, pour GPIO16, le numéro de la broche est le 16.

Cependant, dans le schéma physique (BOARD), le numéro exact de la broche est celui référencé sur la carte. Par exemple, pour GPIO16, le numéro de la broche sur le schéma physique (BOARD) est le 36.

Téléchargez mon antisèche !
Si comme moi, vous avez tendance à mélanger les langages, téléchargez mon antisèche pour Python au format PDF.
Télécharger maintenant

GPIO Zero suit par défaut le schéma de numérotation Broadcom (BCM).

Si vous souhaitez en savoir plus sur les GPIO du Raspberry Pi, plusieurs bons tutoriels sont disponibles.

Guides recommandés :

Installation de GPIO Zero

GPIO Zero est préinstallé sur la dernière version de Raspberry Pi OS, et vous n’avez rien à installer.

Cependant, si vous utilisez Raspberry Pi OS Lite ou si GPIO Zero n’est pas préinstallé, suivez ces étapes pour l’installer depuis les dépôts officiels :

  • Assurez-vous que votre système est à jour en utilisant cette commande :
    sudo apt update && sudo apt upgrade
  • Assurez-vous que Python et pip sont installés et mis à jour en utilisant cette commande :
    sudo apt install python3 pip
  • Maintenant, installez GPIO Zero en utilisant cette commande :
    sudo apt install python3-gpiozero

Et voilà ! GPIO Zero est prêt à être utilisé. Lisez la suite, nous allons créer notre premier programme avec GPIO Zero.

Si les commandes Linux ce n’est pas trop votre truc, n’hésitez pas à jeter un œil à cet article qui vous explique les commandes qu’il faut absolument connaître. Je vous donne aussi une antisèche à télécharger pour les avoir toujours sous la main !

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Vous voulez discuter avec d'autres passionnés de Raspberry Pi ? Rejoignez la communauté, partagez vos projets en cours et posez vos questions sur le forum (en anglais).

Utiliser GPIO Zero

La configuration étant terminée, voyons l’utilisation de GPIO Zero. GPIO Zero est une bibliothèque Python pouvant être utilisée dans n’importe quel programme Python.

Si vous débutez avec Python, je recommande vivement de lire mon livre Master Python on Raspberry Pi, qui vous mettra rapidement à niveau et se concentrera uniquement sur les concepts utiles pour les utilisateurs de Raspberry Pi.

Votre premier programme avec GPIO Zero

Pour notre premier programme, nous commencerons simplement et programmerons notre Raspberry Pi pour contrôler une LED et la faire clignoter à une fréquence fixe.

Câblage du circuit

Avant d’écrire le code, nous devons comprendre comment connecter nos composants. Pour cet exemple, vous aurez besoin d’un Raspberry Pi, d’une plaque d’essai, d’une LED et de câbles de connexion.

Câblez votre circuit comme indiqué ci-dessous :

Les connexions sont simples. Connectez une LED à la broche GPIO 16 via une résistance.

Une fois le câblage terminé, vous pouvez écrire votre premier programme en utilisant GPIO Zero.

Code

Maintenant, nous pouvons commencer à écrire le code en utilisant GPIO Zero. Pour ce faire, créez un nouveau fichier Python en utilisant un éditeur de texte approprié. Pour utiliser nano, vous pouvez entrer la commande suivante dans votre terminal :
nano blinkingled.py

Maintenant, copiez et collez ce code dans l’éditeur de texte :

from gpiozero import LED
from signal import pause

myLED = LED(16)

myLED.blink(1)

pause()

Enregistrez et fermez ce fichier Python.

Téléchargez mon antisèche !
Si comme moi, vous avez tendance à mélanger les langages, téléchargez mon antisèche pour Python au format PDF.
Télécharger maintenant

Le code est simple et explicite :

  • Nous importons initialement les fonctions nécessaires des bibliothèques en utilisant la commande d’importation :
    from gpiozero import LED
    from signal import pause
  • Ensuite, nous initialisons l’objet LED et associons GPIO 16 à cette LED en utilisant une fonction :
    myLED = LED(16)
  • Enfin, nous pouvons utiliser la fonction intégrée de led.blink() pour faire clignoter la LED à intervalles d’une seconde :
    myLED.blink(1)
  • De plus, nous devons utiliser la fonction signal.pause() pour maintenir le programme. Sinon, le programme se terminera à l’exécution de la dernière commande, et les broches GPIO peuvent être réinitialisées :
    pause()

Résultats

Vous pouvez exécuter ce programme depuis le terminal en utilisant la commande :
python3 blinkingled.py

Une fois que vous exécutez ce programme, vous pourrez voir que la LED connectée à votre Raspberry Pi commencera à clignoter à un intervalle d’une seconde.

Aller plus loin avec GPIO Zero

Nous avons créé notre tout premier programme en utilisant la bibliothèque GPIO Zero. Nous pouvons aller un peu plus loin cependant. Nous pouvons ajouter un bouton à ce projet afin que la LED s’allume chaque fois que ce bouton est pressé et vice versa.

Pour y parvenir, câblez votre circuit comme illustré ci-dessous :

Nous avons ici ajouté un bouton-poussoir entre la broche de terre et la broche GPIO 21 du Raspberry Pi.

Maintenant, vous pouvez modifier le programme comme ceci :

from gpiozero import LED, Button
from signal import pause

led = LED(16)
button = Button(21)

button.when_pressed = led.on
button.when_released = led.off

pause()

Alternativement, vous pouvez tirer parti de l’approche orientée objet de la bibliothèque GPIO Zero pour simplifier votre code, comme illustré ci-dessous :

from gpiozero import LED, Button
from signal import pause

led = LED(16)
button = Button(21)

led.source = button

pause()

Et voilà ! Lorsque vous exécutez ce programme, la LED s’allumera chaque fois que vous appuierez sur le bouton-poussoir, et lorsqu’il sera relâché, la lumière s’éteindra.

Si vous recherchez des exemples plus avancés utilisant d’autres capteurs ou appareils, la documentation officielle propose plusieurs exemples de base et avancés pour vous aider à démarrer.

Migration depuis RPI.GPIO

Si vous avez l’habitude d’utiliser la bibliothèque RPI.GPIO, vous aurez peut-être remarqué que GPIO Zero est assez différente.

GPIO Zero adopte une approche orientée objet, et au lieu de communiquer avec des broches individuellement, vous devrez souvent définir des objets faisant référence à un composant ou un appareil, et ensuite les utiliser via différentes fonctions.

Par exemple, pour allumer une LED avec RPI.GPIO, vous utiliserez un programme comme celui-ci :

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

GPIO.setup(2, GPIO.OUT)

GPIO.output(2, GPIO.HIGH)

Ici, vous devez définir individuellement la fonction de chaque broche comme entrée ou sortie et ensuite définir l’état de cette broche comme haut ou bas.

Cependant, lorsque vous utilisez la bibliothèque GPIO Zero, la plupart de ces tâches de bas niveau sont automatisées, et vous suivez une approche orientée objet qui consiste simplement à définir une LED et ensuite utiliser une fonction pour l’allumer. Vous utiliseriez un programme simple, comme indiqué ci-dessous :

from gpiozero import LED

led = LED(2)

led.on()

Comme vous pouvez le voir, GPIO Zero peut simplifier vos programmes de manière significative, et une fois que vous vous y habituez, cela peut faciliter la programmation.

De plus, l’approche orientée objet de GPIO Zero vous permet d’effectuer une programmation plus complexe avec des commandes beaucoup plus simples. Par exemple, en utilisant l’objet LEDBoard, vous pouvez allumer ou éteindre plusieurs LED simultanément et même utiliser le slicing pour accéder à un sous-ensemble de toutes les LED.

from gpiozero import LEDBoard
from time import sleep

leds = LEDBoard(2, 3, 4, 5, 6, 7, 8, 9)

for led in leds[3:]:  # leds 3 and onward
    led.on()
sleep(1)
leds.off()

for led in leds[:2]:  # leds 0 and 1
    led.on()
sleep(1)
leds.off()

for led in leds[::2]:  # even leds (0, 2, 4...)
    led.on()
sleep(1)
leds.off()

for led in leds[1::2]:  # odd leds (1, 3, 5...)
    led.on()
sleep(1)
leds.off()

À mon avis, la meilleure façon de migrer un programme existant de RPI.GPIO vers GPIO Zero est de dessiner un diagramme de flux du programme original, puis de le reprogrammer en utilisant la fonctionnalité avancée disponible dans GPIO Zero.

Pour une comparaison beaucoup plus détaillée des deux bibliothèques, vous pouvez consulter la documentation officielle de GPIO Zero.

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Ressources supplémentaires pour votre Raspberry Pi

Initiation au Raspberry Pi en vidéo
Si vous débutez et voulez passer rapidement à la vitesse supérieure, j’ai exactement ce qu’il vous faut.
Regardez ma formation vidéo qui vous aidera à démarrer du bon bien, choisir votre matériel, installer les meilleures applications et vous lancer directement dans vos premiers projets avec mon aide.
Regarder les vidéos dès maintenant

Maîtrisez votre Raspberry Pi en 30 jours
Vous avez besoin de plus ? Si vous êtes à la recherche des meilleures astuces pour devenir expert sur Raspberry Pi, ce livre est fait pour vous. Développez vos compétences sous Linux et pratiquez via de nombreux projets en suivant mes guides étape par étape. 10% de remise aujourd’hui !
Télécharger le livre au format PDF ici

Maîtrisez Python sur Raspberry Pi
Pas besoin d’être un génie pour coder quelques lignes pour votre Raspberry Pi.
Je vous apprends juste ce qu’il faut sur Python afin de réaliser n’importe quel projet. La seconde partie du livre est d’ailleurs consacrée à des exemples de projets où je vous guide pas à pas.
Ne perdez pas de temps, apprenez le strict nécessaire et économisez 10% avec ce lien :
Télécharger maintenant

Autres ressources pour profiter de votre Raspberry Pi
J’ai regroupé toutes mes recommandations de logiciels, sites utiles et de matériel sur cette page de ressources. Je vous invite à la consulter régulièrement pour faire les bons choix et rester à jour.
Visiter les pages ressources

Comment avez-vous trouvé cet article ?

Cliquez sur une étoile pour noter !

Note moyenne / 5. Nombre de votes :

Aucun vote pour l'instant ! Soyez le premier à évaluer cet article.

Si vous avez aimé cet article ...

Partagez le sur les réseaux

Nous sommes désolés que vous n'ayez pas aimé cet article !

Améliorons cet article !

Comment pouvons-nous améliorer cet article ?


Ce tutoriel ne marche plus à 100%? Prévenez-moi pour que je le mette à jour!

Publications similaires

Laisser un commentaire

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