Contrôler une LED avec la Raspberry Pi

Allumer et éteindre une LED avec la Raspberry Pi et Python.

Mis à jour le 14 janvier 2020 - 10 Commentaires - , , ,

Ce tutoriel est le premier d’une série dédiée à l’utilisation des ports GPIO de la Raspberry Pi contrôler des composants électroniques.

Vous le savez sans doute, la Raspberry Pi possède des ports appelés GPIO (General Purpose Input Output) qui permettent de contrôler un certain nombre de composants électroniques.

Dans ce tutoriel, nous allons voir comment utiliser ces ports GPIO pour contrôler une LED avec la Raspberry Pi.

Le matériel nécessaire

Pour suivre ce tutoriel, vous aurez besoin du matériel suivant :

Ce tutoriel peut être suivi totalement sans avoir besoin de souder le moindre composant.

Par ailleurs, vous devrez avoir installé Raspbian sur votre carte SD, et avoir un moyen de contrôler votre Raspberry Pi, soit directement via clavier/souris/écran, soit via SSH.

Les notions de base autour des GPIO

Les ports GPIO sont des ports physiques se présentant généralement sous forme de picots métalliques carrés qui permettent de transmettre un signal électrique.

pins gpios
Connecteurs GPIO destinés à êtres soudés

Un port GPIO transmet un signal relativement binaire (pas de courant ou du courant). Dans le cas de la Raspberry Pi, les ports GPIO travaillent en 3.3 V et environ 20 mA.

Les ports GPIO sont donc un moyen simple de communiquer ou de contrôler des éléments physiques.

Les modèles les plus récents de la Raspberry Pi disposent de 40 connectiques GPIO, qui se divisent en différentes catégories avec des usages spécifiques.

  • Power + : Alimentation électrique continue
  • GND : Ground = Retour à la terre
  • I2C : Protocole série synchrone
  • SPI : Autre protocole série synchrone
  • UART : Protocole asynchrone + conversion communication série vers parallèle.
  • GPIO : Port général qui peut éventuellement être transformé en I2C ou SPI.

Les ports GPIO sont numérotés de 1 à 40, en partant du haut à gauche quand vous tenez la Raspberry pi ports GPIO à droite. C’est le mode de numérotation dit « Board ». Un autre mode de numérotation existe, qui repose sur l’adressage processeur, appelé mode « BCM ».

Dans le cadre de ce tutoriel nous allons uniquement utiliser les ports de type GPIO et GND et la numérotation « Board ».

Brancher la LED à la Raspberry Pi

Pour réaliser notre branchement nous allons utiliser les composants suivants : une LED, une résistance, une bread-board et la Raspberry.

La première étape de notre tutoriel va être de concevoir le circuit reliant la LED à la Raspberry Pi. Ne vous en faites pas, c’est très simple et nous n’allons pas avoir à faire des schémas compliqués !

Comment choisir la résistance ?

La première chose à savoir, c’est qu’une LED doit toujours utiliser une résistance. En effet, les LED ont ce que l’on appelle une « tension de seuil ». Pour faire simple, un peu trop de courant et la LED grille immédiatement, la résistance est donc une protection.

Nous allons donc devoir choisir quelle résistance utiliser. Pour cela, il existe une formule mathématique permettant de calculer la taille de la résistance à employer.

Rmin = (Ualim - Uled) / Imax

À moins que vous ayez de bons restes de vos cours de physique, je présume que ça ne vous avance pas tellement. Petite explication :

  • Rmin : Résistance minimum à utiliser, exprimée en ohms (Ω)
  • Ualim : Tension de l’alimentation, exprimée en volts (V)
  • Uled : Tension de seuil de la LED, exprimée en volts (V)
  • Imax : L’intensité max de la LED, exprimée en ampères (A)

Nous l’avons dit, nos GPIO fournissent 3.3 V et 20 mA. La LED elle possède une intensité max de 20 mA (20 mA = 0.020 A) et une tension de seuil comprise en 1.5 et 1.9 V.

La formule est donc la suivante :

Rmin = (3.3 - 1.5) / 0.020

Nous obtenons donc une résistance minimum de 90 Ω, que nous allons arrondir à 100 Ω. Nous allons prendre de la marge en choisissant plutôt une résistance 270 Ω (ou bien 330 Ω, valeurs normalisées), nous protégeant ainsi d’un éventuel pic de courant sur le GPIO.

Pour trouver la valeur d’une résistance, deux possibilités :

  • C’est noté sur la bande de papier qui maintient les LEDs ensemble.
  • Vous devez lire les bagues de couleurs sur la résistance pour calculer sa valeur. Vous trouverez des tutos et sites en ligne pour vous aider. (100 Ω = marron-noir-marron, 270 Ω = rouge-violet-marron et 330 Ω = orange-orange-marron)

Connecter la LED aux GPIO de la Raspberry Pi

Maintenant que nous savons quelle résistance utiliser, il ne nous reste plus qu’à relier le tout à la Raspberry Pi.

Pour cela, prenez deux câbles Dupont mâle/femelle, on choisira un câble rouge pour l’alimentation, et un câble noir pour le retour à la terre (c’est une convention).

Branchez le câble rouge au port GPIO 7, et le noir au GPIO 6.

Branchez les deux câbles à votre bread-board séparés de quelques rangées. Reliez le câble rouge à l’anode de votre LED (la patte allongée ou longue), une patte de la résistance à la cathode (l’autre patte de la LED, la patte courte donc), et l’autre patte de la résistance au câble noir.

Astuce : Vous avez du mal à retenir quelle patte est l’anode et laquelle est la cathode ? Moyen mnémotechnique simple, l’Anode Allongée Alimente !

C’est pas très clair ? Pas de panique, « un petit dessin vaut mieux qu’un long discours ! »

Le rouge à l’anode, la cathode à la résistance, la résistance au noir !

Si vous voulez être certain que tout fonctionne bien, un petit test simple est possible. Débranchez le câble rouge du GPIO n° 7 et branchez le au n° 1. Celui-ci fournis 3.3 V en permanence, si votre câblage est bon, la LED sera donc allumée 🙂 !

Écrire le programme pour contrôler la LED avec la Raspberry

Maintenant que notre circuit est prêt, il ne nous reste plus qu’à écrire le programme permettant de contrôler les ports GPIO pour allumer et éteindre la LED.

Pour cela, nous allons utiliser le langage de programmation Python. Dans ce tutoriel nous resterons très basique, et nous contenterons de donner un exemple de programme en expliquant comment l’utiliser et comment il fonctionne.

Il ne s’agit donc pas d’un cours de Python. Cependant, si vous souhaitez nous avons récemment publié un cours d’introduction à Python qui vous permettra d’apprendre à utiliser Python afin d’écrire vos propres programmes pour vos projets !

Créez donc un dossier /home/pi/electronic et un fichier led.py dans ce dossier, et écrivez-y le code suivant :

Notez que les textes derrière des # sont des commentaires servant à expliquer ce que fait le code, mais n’ayant aucune influence sur le programme. Vous n’êtes pas obligés de le recopier, sauf pour les deux premières lignes.

#!/usr/bin/env python3
#-- coding: utf-8 --

import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs

GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte

LED = 7 #Définit le numéro du port GPIO qui alimente la led

GPIO.setup(LED, GPIO.OUT) #Active le contrôle du GPIO

state = GPIO.input(LED) #Lit l'état actuel du GPIO, vrai si allumé, faux si éteint

if state : #Si GPIO allumé
    GPIO.output(LED, GPIO.LOW) #On l’éteint
else : #Sinon
    GPIO.output(LED, GPIO.HIGH) #On l'allume

Ceci fait, nous allons rendre le programme exécutable. Pour cela, il vous suffit de lancer la commande suivante :

chmod +x /home/pi/electronic/led.py

Il ne vous reste plus qu’à lancer le script en l’appelant comme ceci :

/home/pi/electronic/led.py

À chaque fois que vous exécuterez le script, la LED s’allumera si elle est éteinte, et s’éteindra si elle est allumée.

Et voilà, vous savez désormais les bases pour allumer et éteindre une LED avec la Raspberry Pi. Il ne vous reste plus qu’à adapter le code selon vos besoins. Pour cela, n’hésitez pas à consulter notre cours sur Python !

Il ne vous reste plus qu’à passer au prochain tutoriel de cette série, lire une carte RFID avec la Raspberry Pi !

4.1/5 - (58 votes)
Partager
Newsletter
Auteur :
Raspberry Pi FR
Rejoignez la communauté Raspberry Pi
Un ordinateur à 35€ déjà vendu à 10 millions d'exemplaires
ACHETEZ LA NOUVELLE RASPBERRY PI 4
Tutoriels en rapport
Installer un media-center avec OSMC sur votre Raspberry Pi ! RaspiSMS 2.0, envoyer des SMS par internet avec la Raspberry Pi Installer un serveur web sur votre Raspberry (Apache + PHP + MySQL) Bien choisir vos accessoires pour les Raspberry Pi 3 et 2 Installer un serveur Minecraft sur votre Raspberry Pi !
10 commentaires
Besoin d'aide ? Vous la trouverez plus vite sur notre forum.

  1. Pascal dit :

    Bonjour
    Je jetais un coup d’œil sur le tuto car je ne connais pas le monde des GPIO.
    En fait, je veux simplement (pour le moment) faire clignoter une LED toutes les secondes.
    Il y a moyen de simplifier le code comme suit :

    GPIO.output(LED , not GPIO.input(LED))

    Bonne continuation,
    Pascal

  2. RAPTOP dit :

    Bonjour,

    Quel(le) logiciel/interface utilisez-vous pour illustrer les raccordements avec le raspberry PI ? comme celui où on peut voir le raccordement de la LED rouge sur la Breadboard avec le raspberry PI.
    Je connais TinkerCAD qui fait la même chose mais ce sont des Arduino qui sont utilisé.

    Merci

    1. Salut, nous utilisons Fritzing, c’est un très bon outil pour faire une représentation graphique d’un montage, en revanche je ne conseil pas de l’utiliser pour faire un circuit imprimé, tâche pour laquelle il vaudrait mieux privilégier Kicad.

  3. DRISSI dit :

    Bonjour,
    Merci pour ce travail.
    Comme j’ai déjà précisé, essayez d’utiliser la module « GPIOZERO » pour le codage. C’est très pratique !!!!!!
    Abdellah DRISSI

  4. probert17 dit :

    Bonjour à la communauté ,je suis débutant je voudrais connaître le python quel livre est le plus approprier pour un débutant je ne connais que le GW Basic .
    merci à tous
    Robert

  5. christophe dit :

    Bonjour.
    lorsque je lance la commande : » /home/pi/electronic/led.py »
    je n’est pour réponse que : »/usr/bin/env: « python3\r »: Aucun fichier ou dossier de ce type »
    si quelqu’un peu me dire où je me suis trompé.

    1. Salut, il y a un \r en trop après python3. C’est probablement du à un transfert de windows à linux avec des caractères de fin de ligne différents

  6. chris dit :

    Bonjour,
    Attention de ne pas faire de confusion entre numéro GPIO et numéro de broche.

    La broche 7 correspond au GPIO4 et donc on ne la nomme pas GPIO7……..

  7. SIMON Claude dit :

    Dans la première ligne de votre programme, vous avez ‘#!/usr/bin/env python3.5’. Du coup, le programme ne se lancera pas si ce n’est pas précisément la version 3.5 de Python qui est installée.

    J’en profite pour parler d’un programme petit en Python que j’ai écrit pour tester plus facilement les montages électroniques. Il permet de piloter individuellement chaque port GPIO à partir d’une interface graphique. Pour ceux que cela intéresse : https://github.com/epeios-q37/atlas-python

    1. Effectivement, nous allons modifier ça pour mettre 3 à la place.

Partager
Inscription à la Newsletter
Inscrivez-vous à la Newsletter.
Vous avez aimé cet article ?
Inscrivez-vous et restez informé !