Raspberry Lab

Tutoriel Raspberry Pi
Contrôler des relais avec le GPIO

Le relais est l'un des composants les plus utiles pour interfacer le Raspberry Pi avec le « monde réel ». Il permet de commander une charge électrique (lampe, ventilateur, portail, pompe…) à partir d'une simple sortie GPIO, tout en isolant électroniquement la carte.
Dans ce tutoriel, nous branchons un module relais 1 canal sur le Raspberry Pi et nous l'actionnons en Python. Vous entendrez le fameux clic du relais à chaque commutation — preuve que tout fonctionne !

Prérequis

Pour suivre ce tutoriel, il vous faut :

Nous supposons que vous savez déjà créer et exécuter un script Python sur le Raspberry Pi.

Comprendre le module relais

Un module relais pour Raspberry Pi se compose généralement de deux parties : la partie commande (broches IN, VCC, GND) et la partie commutation (broches COM, NO, NC). La partie commande est alimentée en 5V et pilotée par un GPIO. La partie commutation se comporte comme un interrupteur :

COM (Common) : borne commune
NO (Normally Open) : contact ouvert au repos, fermé quand le relais est activé
NC (Normally Closed) : contact fermé au repos, ouvert quand le relais est activé
Info

Pourquoi utiliser un module avec optocoupleur ?

Les modules relais vendus pour Arduino ou Raspberry Pi intègrent un optocoupleur entre le GPIO et le relais. Cela protège le Raspberry Pi des retours de courant et permet de commander le relais avec un signal 3,3V, même si le relais lui-même est alimenté en 5V.

Avertissement — sécurité électrique

Ce tutoriel couvre la commande basse tension du module relais depuis le Raspberry Pi. Si vous branchez une charge secteur (230V) sur les bornes COM/NO du relais, vous devez impérativement respecter les normes électriques en vigueur, utiliser un boîtier isolant et faire appel à un professionnel qualifié si nécessaire. Raspberry Lab ne peut être tenu responsable de tout dommage lié à une mauvaise utilisation.

Branchement

Branchez le module relais au Raspberry Pi selon le schéma ci-dessous. Dans notre exemple, le signal IN est relié au pin 22 (numérotation BOARD). Le VCC du module se connecte au 5V (pin 2) et le GND au GND (pin 6).


Pour un premier test, inutile de brancher une charge sur COM/NO : le clic audible du relais et la LED du module confirment déjà son activation. Une fois le test réussi, vous pourrez connecter votre charge (lampe 12V, contact sec d'un portail, etc.) entre COM et NO.

Module actif à l'état bas : la plupart des modules relais du commerce s'activent quand le GPIO est à 0V (LOW) et se désactivent à 3,3V (HIGH). Si votre relais semble inversé par rapport au code, inversez les valeurs True et False dans le script, ou vérifiez le jumper « LOW/HIGH trigger » présent sur certains modules.

Commander le relais en Python

Nous utilisons la librairie RPi.GPIO, déjà installée sur Raspberry Pi OS. Le script ci-dessous active le relais pendant une seconde, le désactive pendant une seconde, en boucle.

Créez un fichier relais.py avec le contenu suivant :


Exécutez le script avec :

sudo python3 relais.py

Le relais doit s'enclencher et se désenclencher toutes les secondes. Appuyez sur Ctrl+C pour arrêter le programme.

Aller plus loin : fonction réutilisable

Pour vos projets, il est préférable d'encapsuler la commande du relais dans une fonction. Voici un exemple qui active le relais pendant un temps donné puis le libère proprement :

import RPi.GPIO as GPIO
from time import sleep

RELAY_PIN = 22  # Pin 22 — numérotation BOARD

GPIO.setmode(GPIO.BOARD)
GPIO.setup(RELAY_PIN, GPIO.OUT)

def set_relay(on: bool) -> None:
    GPIO.output(RELAY_PIN, GPIO.HIGH if on else GPIO.LOW)

def pulse_relay(duration: float = 1.0) -> None:
    set_relay(True)
    sleep(duration)
    set_relay(False)

try:
    pulse_relay(2)
finally:
    GPIO.cleanup()

Et ensuite ?

Vous savez maintenant commander un relais depuis le Raspberry Pi. Voici quelques pistes pour aller plus loin :

Voir la version complète du tutoriel (commentaires, notation)