Le Raspberry Pi est plus qu’un simple petit ordinateur. C’est une carte puissante qui vous permet de faire tant de choses avec ses broches GPIO. Ici, nous allons vous montrer comment faire clignoter des LED avec le Raspberry Pi.
Qu’est-ce qui fait clignoter les LED
Lorsque vous regardez la partie supérieure de votre Raspberry Pi, vous trouverez environ 40 broches métalliques qui dépassent du circuit imprimé. Si vous avez un Raspberry Zero, il y a probablement des trous circulaires pour souder les broches d’en-tête. Dans tous les cas, elles sont appelées broches GPIO (pour General Purpose Input/Output).
Chaque broche GPIO est conçue pour avoir l’un des deux modes à un moment donné : un HIGH et un LOW. Pour les spécifications de brochage du Raspberry Pi, une broche chargée à 3,3 V compte comme un ÉLEVÉ ou un « 1 logique », tandis que tout ce qui est en dessous d’environ 2,5 V compte comme un BAS ou un « 0 logique ». Une carte basée sur 3,3 V pour les sorties hautes et basses est dite être sur la « logique 3,3 V ».
Lorsque vous connectez une LED entre une broche sur HIGH et une broche GND, vous créez essentiellement un circuit complet. La LED doit s’allumer à cause de l’électricité qui passe.
Parfois, vos LED peuvent apparaître en fumée. Cela se produit lorsqu’il y a trop de courant qui le traverse. Pour éviter que cela ne se produise, vous pouvez y ajouter une résistance. Peu importe que ce soit du côté de l’anode ou du côté de la cathode – l’un ou l’autre côté devrait diminuer le courant traversant.
GPIO et autres broches
Soyons clairs ici, toutes ces broches métalliques ne sont pas considérées comme GPIO. Ce n’est GPIO que s’il peut être programmé pour avoir un haut ou un bas – d’où le terme « Entrée / Sortie ». Pour le Raspberry PI, il existe également des broches conçues pour l’alimentation (3.3v, 5v et GND) et fonctionnant avec EEPROM (ID_SD et ID_SC).
Cette fois, vous n’aurez pas besoin de penser à toutes ces autres broches, à l’exception de GND et d’une broche GPIO.
Programmation des broches GPIO
Alors, comment dire à chaque broche GPIO quoi faire ? Au niveau le plus élémentaire, vous devrez créer des commandes en code machine. Cela va être un peu trop difficile pour les débutants.
Au lieu de cela, pour le Raspberry Pi, vous pouvez utiliser Python ou C++ qui est ensuite compilé en code machine.
Pour ce projet particulier, nous utiliserons Python car il est plus facile à utiliser.
De quoi as-tu besoin
- Tout modèle de Raspberry Pi qui n’est pas le Pico (de préférence le Raspberry Pi 3 Model B+ comme celui que j’ai mais tout fonctionne), installé avec le Raspberry Pi OS.
- Un moniteur et un câble HDMI
- Souris et clavier
- Un chargeur de téléphone (pour alimenter le Raspberry Pi)
- Une petite LED
- Une résistance de 250Ω (peut être n’importe quelle valeur proche de celle-ci)
- Une planche à pain sans soudure
- x2 fils de raccordement mâle-femelle (ou mâle-mâle si vous avez un chapeau d’en-tête)
Comment faire clignoter des LED
Prenons cela une étape à la fois. Nous allons faire clignoter une LED toute seule.
- Ouvrez votre terminal et tapez
sudo apt-get install python3-rpi.gpio
pour installer le module RPi.GPIO pour Python 3.
- Ouvrez maintenant un éditeur de texte et saisissez ce code :
import RPI.GPIO as GPIO from time import sleep GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW) while True: GPIO.output(7, GPIO.HIGH) print("LED on") sleep(1) GPIO.output(7, GPIO.LOW) print("LED off") sleep(1)
- Enregistrez-le dans un dossier quelque part. Le nom de l’extension doit être .py. Dans mon propre Raspberry Pi, je l’ai nommé « rpi-blink.py » pour le rendre plus facile à trouver.
- Éteignez votre Raspberry Pi et retirez-le de toutes les sources d’alimentation.
- Nous allons maintenant commencer à construire le circuit. Câblez votre LED de sorte qu’il y ait une résistance sur la cathode ou l’anode, puis pointez le côté cathode sur la broche 7 et le côté anode sur la broche 9 (GND).
Pointe: Pour déterminer le numéro de broche, tenez votre Raspberry Pi de manière à ce que les broches GPIO soient placées à droite. La broche en haut à gauche est la broche 1, la broche en haut à droite est la broche 2. Ensuite, celle en dessous de la broche 1 est la broche 3, puis à droite de celle-ci se trouve la broche 4, et ainsi de suite.
- Ensuite, rallumez-le pour que nous puissions exécuter le script Python. Ouvrez votre terminal et utilisez
cd
pour accéder au dossier du fichier Python. Taper
pour faire clignoter la LED.
Alternative: Si vous avez Thonny Python IDE, cliquez sur le bouton « Exécuter le script actuel » pour le faire fonctionner directement depuis l’IDE.
- Pour l’arrêter, appuyez sur Ctrl + C au sein de l’aérogare. Mais si vous utilisez Thonny Python IDE, fermez simplement l’éditeur.
Comment fonctionne le code
Il y a deux choses qui le font fonctionner : le code et le circuit. Nous allons commencer par le code en le découpant en trois parties :
- Commandes d’importation
- Commandes de configuration
- Commandes en boucle
En pratique, il est bon de considérer le code comme de petites fonctions regroupées pour former de plus grandes fonctions.
Commandes d’importation
Python ne facilite normalement pas la programmation des broches GPIO. Il se passe une tonne de choses dans les coulisses. La bonne nouvelle est que vous pouvez importer le code qui gère toutes ces choses embêtantes.
Regardez maintenant les lignes 1 et 2 :
import RPI.GPIO as GPIO from time import sleep
Il s’agit d’une paire de lignes qui importent du code à partir de quelque chose appelé « module Python ».
import RPI.GPIO as GPIO
permet d’importer le contenu du module RPI.GPIO et d’utiliser le GPIO
mot-clé pour appeler une fonction liée à RPI.GPIO
.
D’autre part, from time import sleep
permet d’importer le sleep()
fonction du module de temps intégré de Python. Cela vous permet de retarder la ligne de code suivante d’un nombre de secondes donné.
Commandes de configuration
Certains codes doivent être « configurés » ou définis de cette manière car ils sont utilisés par d’autres codes pour effectuer une logique complexe. Nous appellerons ces commandes de configuration.
Contrairement aux commandes d’importation, les commandes de configuration n’« importent » pas le code des modules externes. Ils les importent à partir des modules que vous avez déjà importés.
Par exemple, GPIO.setwarnings(False)
importe le .setwarnings()
fonction de la RPI.GPIO
module, qui était auparavant défini comme GPIO
. Cette fonction arrête un avertissement de déclenchement lorsque vous exécutez le code. Il est réglé sur True
par défaut.
Maintenant, pour expliquer les deux autres, nous allons continuer avec GPIO.setmode(GPIO.BOARD)
. Cela raconte RPI.GPIO
quel type de brochage vous allez utiliser. Il existe deux types : BOARD et BCM. Le brochage BOARD vous permet de choisir des broches en fonction de leurs numéros. Pendant ce temps, le brochage BCM le base sur leur désignation Broadcomm SOC Channel. Pour faire court, BOARD est plus facile à utiliser car c’est toujours le même quel que soit le modèle de Raspberry Pi que vous utilisez. Le BCM, en revanche, a tendance à être différent d’un modèle à l’autre.
Enfin, nous avons GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW)
. Celui-ci utilise le .setup()
qui vous demande trois choses : le numéro du pin, sa désignation et sa valeur initiale. Le numéro de broche que nous utilisons ici est le numéro de broche 7. Nous sommes censés le définir dans une broche de sortie et nous assurer qu’il commence par LOW
. Sans cela, le Raspberry Pi ne saura jamais quoi faire avec la broche 7.
Commandes en boucle
Celui-ci est la partie cool. Les commandes en boucle vous permettent de dire au Raspberry Pi de faire des choses. Nous avons commencé cette boucle avec while True:
qui boucle indéfiniment les lignes de code suivantes.
Il y avait trois fonctions dans la boucle : GPIO.output()
, print()
et sleep()
.
GPIO.output()
prend une broche de sortie et la définit soitHIGH
ouLOW
. Si vous avez pensé à changer la broche à utiliser sur votre Raspberry Pi, vous auriez dû changer7
avec un code PIN de votre choix.print()
le fait imprimer quelque chose sur la console. Il prend une chaîne, un nombre ou une variable qui contient les deux précédents.sleep()
interrompt tout le programme pendant un certain nombre de secondes. Utilisez un nombre inférieur à 1 pour faire une pause de moins d’une seconde.
Le circuit
Vous savez comment fonctionne le code. Et maintenant?
Le code fait un circuit en connectant la broche 7 à GND. Lorsque la broche 7 est activée HIGH
, il émet 3,3V qui passe à travers la résistance et la LED, puis entre GND. Cela devient un circuit complet, c’est pourquoi la LED s’allume.
HIGH
. À droite : circuit schématique lorsque la broche 7 est activée LOW
.Mais que se passe-t-il lorsque la broche 7 est au niveau bas ? Le 3.3V descend à environ 0V. De cette façon, aucune électricité ne traverse la LED et elle ne s’allume pas. Vous pouvez considérer la broche 7 comme une sorte d’interrupteur, elle allume ou éteint le circuit.
Faisons clignoter plus de LED !
Maintenant, vous savez ce qui fait que les choses fonctionnent. Modifions un peu notre code pour qu’il exécute deux LED.
Pour cela, il vous suffira d’ajouter deux autres LED de n’importe quelle couleur et deux autres résistances de 250Ω.
- Ouvrez à nouveau votre éditeur de code et collez ce code :
import RPI.GPIO as GPIO from time import sleep GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(12, GPIO.OUT, initial=GPIO.HIGH) GPIO.setup(37, GPIO.OUT, initial=GPIO.LOW) while True: GPIO.output(7, GPIO.HIGH) GPIO.output(12, GPIO.LOW) print("LED on @ pin 7") print("LED off @ pin 12") sleep(1) GPIO.output(7, GPIO.LOW) GPIO.output(12, GPIO.HIGH) print("LED off @ pin 7") print("LED on @ pin 12") sleep(1) if x == 1: GPIO.output(37, GPIO.HIGH) print("LED on @ pin 37") x = 0 elif x == 0: GPIO.output(37, GPIO.LOW) print("LED off @ pin 37") x = 1 else: print("Logic Error") sleep(1)
- Enregistrez puis éteignez votre Raspberry Pi.
- Maintenant, il est temps de câbler le circuit. Pour chaque LED que vous avez, connectez-la à une résistance en série. Câblez ensuite le côté cathode au Raspberry Pi. Il devrait y en avoir un pour la broche 7, un autre pour la broche 12 et le dernier pour la broche 37. Le côté anode doit être connecté à GND. Chacune de ces broches a une broche GND à côté d’elles. Il devrait s’agir des broches 9, 20 et 39.
Pointe: Si vous manquez de fil de liaison mâle-femelle, vous pouvez coller un fil de liaison mâle-mâle à un fil de liaison femelle-femelle pour former un fil de liaison mâle-femelle plus long.
- Une fois que vous avez terminé, lancez le Raspberry Pi et répétez l’étape 6 pour lancer ce script Python.
Questions fréquemment posées
Pourquoi ma LED reste-t-elle ouverte lorsque j’arrête le script ?
Lorsque le Raspberry Pi lit le script Python, il lit la ligne avant d’exécuter la commande. Vous l’avez probablement arrêté juste après avoir lu la ligne GPIO.output(7, GPIO.HIGH)
il n’a donc pas été en mesure d’amener la broche sur LOW en premier. Vous pouvez le laisser tel quel, il reviendra à LOW au prochain redémarrage. Ou vous pouvez créer un autre script Python qui transforme la broche en LOW dès qu’il s’exécute.
J’ai placé ma LED sur la broche de droite mais elle ne s’allume pas du tout. Pourquoi?
Deux raisons : soit votre LED est cassée soit vous mettez la cathode du côté opposé. Essayez d’abord de tourner les broches de la LED.
Est-il sûr de placer la LED dans le sens opposé ?
En fait, c’est un oui. Vous pouvez le placer dans le sens inverse et le courant sera juste ne pas traverser. C’est un trait spécial parmi les diodes – même lumière diodes électroluminescentes – elles laissent passer l’électricité d’un côté et pas de l’autre.
Est-il sûr de repositionner la LED pendant que le Raspberry Pi est sous tension ?
Si c’est juste tourner la LED dans le sens opposé, alors ça va, il n’y a pas de mal là-bas. Mais si vous allez placer la LED partout, il est possible que vous court-circuitiez la broche 5v à une broche GPIO. Ça va casser ta planche.