Guides Arduino

Module Relais 8 Canaux Arduino : Piloter le 220V en Sécurité (Guide Pro)

Le guide complet pour comprendre, câbler et programmer un module relais 8 canaux Arduino avec du 220V — principe électromécanique, isolation optocoupleur, code multi-canaux, charges inductives et les 10 règles de sécurité absolues à ne jamais transgresser.

5 avril 202617 min de lectureÉquipe Didactico

C’était un samedi soir au FabLab de Sfax. Yassine, étudiant en troisième année à l’ENIT, voulait impressionner son frère avec un prototype de domotique : éclairage, ventilateur, pompe d’aquarium et chauffe-eau, tout piloté depuis son téléphone via un module relais 8 canaux et un ESP32. Le câblage côté bas niveau était impeccable. Mais une connexion fil-secteur mal serrée a chauffé, fait fondre l’isolant, et provoqué un court-circuit qui a déclenché le disjoncteur de l’immeuble en pleine soirée. Heureusement, le disjoncteur différentiel 30 mA était bien en place — sinon, Yassine aurait pu y laisser la main.

Cette histoire, je l’ai entendue dix fois sous différentes formes. Le module relais 8 canaux est le composant le plus excitant et le plus dangereux que vous achèterez probablement chez Didactico cette année. Excitant, parce qu’il transforme votre Arduino — un jouet en plastique de 50 grammes — en chef d’orchestre du courant secteur. Dangereux, parce que le 220 V tunisien à 50 Hz vous tue en moins d’une seconde si vous touchez la mauvaise piste à la mauvaise tension.

⚠️ DANGER MORTEL — 220V ALTERNATIF

Ce guide manipule la tension secteur (220-240V AC, 50 Hz, STEG). Une erreur de câblage peut causer : électrocution mortelle, incendie domestique, destruction de l’Arduino, des appareils connectés et de toute votre installation. Ne câblez JAMAIS sous tension. Coupez TOUJOURS le disjoncteur général avant intervention. Un disjoncteur différentiel 30 mA est OBLIGATOIRE sur la ligne. Si vous n’êtes pas certain à 100 % de ce que vous faites, faites valider votre montage par un électricien qualifié. Didactico vend les composants — la responsabilité du câblage final vous incombe.

Principe : un électroaimant qui ferme un interrupteur

Un relais électromécanique est, dans son essence, l’invention la plus élégante de l’électrotechnique du XIXe siècle. Vous appliquez une petite tension (typiquement 5 V continu pour les modules Arduino) sur une bobine de cuivre. Cette bobine génère un champ magnétique qui attire une lamelle métallique. Cette lamelle, en se déplaçant, ferme (ou ouvre) un contact mécanique capable de laisser passer une tout autre tension — du 220 V alternatif dans notre cas, jusqu’à 10 A typiquement.

L’intérêt est limpide : votre Arduino, qui ne peut sortir que 5 V à 40 mA maximum sur une broche GPIO, peut commander des appareils tirant 2200 W (10 A × 220 V) sans aucun contact électrique direct. La séparation entre le côté commande (faible tension) et le côté puissance (secteur) est totale, mécanique, garantie.

Pourquoi pas un transistor ?

Un transistor MOSFET peut commuter de fortes intensités, mais en courant continu, sur des charges résistives, et avec une masse commune. Pour le 220 V alternatif, il faudrait un triac ou un SSR (Solid State Relay). Le relais électromécanique reste imbattable sur trois points : isolation galvanique parfaite, capacité à commuter aussi bien du DC que de l’AC, tolérance aux surcharges momentanées. Son talon d’Achille : il s’use mécaniquement (typiquement 100 000 cycles sous charge nominale) et il fait “clic”.

Anatomie d’un module 8 canaux

Le module relais 8 canaux que vous achetez chez Didactico Sfax est en réalité une carte sandwich composée de cinq étages :

  1. Étage d’entrée 5V : les 8 broches IN1 à IN8 reçoivent les signaux logiques de l’Arduino.
  2. Étage d’isolation : 8 optocoupleurs (le plus souvent ITR9608 ou PC817) découplent électriquement la commande des bobines.
  3. Étage de pilotage : 8 transistors NPN (généralement S8050) amplifient le signal pour alimenter les bobines.
  4. Étage relais : 8 relais électromécaniques (souvent des SRD-05VDC-SL-C, parfois des HF115F-005 pour les modules industriels).
  5. Étage de contact : pour chaque relais, 3 borniers à vis NO (Normalement Ouvert), COM (Commun) et NC (Normalement Fermé).

SRD-05VDC-SL-C vs HF115F-005 : ne choisissez pas au hasard

Le SRD-05VDC-SL-C de Songle est le relais cubique bleu classique : 10 A sous 250 V AC en théorie, mais en pratique limitez-vous à 5-6 A en charge continue, surtout en climat chaud comme à Sfax l’été où les contacts s’oxydent plus vite. Bobine 5 V tirant environ 70 mA — c’est important : 8 relais activés simultanément consomment 560 mA, votre alimentation Arduino USB ne suivra pas. Prévoyez une alimentation externe 5 V / 2 A pour le module.

Le HF115F-005 de Hongfa est un relais de qualité industrielle : meilleur contact argent-cadmium, endurance mécanique supérieure (10 millions de cycles), supporte mieux les charges inductives. Il coûte plus cher mais reste le bon choix pour une installation domestique permanente.

L’isolation par optocoupleur ITR9608

L’optocoupleur est le héros silencieux de votre montage. À l’intérieur de ce minuscule boîtier DIP-4, il y a en réalité deux composants : une LED infrarouge et un phototransistor, séparés par une couche d’air ou de résine isolante. Quand l’Arduino envoie un signal, la LED s’allume, le phototransistor conduit — mais aucun fil de cuivre ne traverse la barrière. La tension de claquage typique est de 5 000 V. C’est-à-dire qu’en cas de surtension catastrophique côté 220 V (coup de foudre par exemple), le retour vers votre Arduino est physiquement impossible.

Sur les modules bon marché, vérifiez que le jumper JD-VCC / VCC est bien retiré et que vous alimentez la partie relais (JD-VCC + GND) avec une alimentation séparée 5 V externe. Si vous laissez le jumper en place, vous shuntez l’isolation et vous perdez tout l’intérêt de l’optocoupleur. C’est une erreur de débutant qui coûte cher.

💡 Astuce labo

Sur le module 8 canaux, repérez la sérigraphie “JD-VCC | VCC | GND”. Retirez le jumper jaune. Alimentez : 5V Arduino → VCC (côté logique), Alim externe 5V → JD-VCC (côté bobines), GND commun aux deux. Isolation préservée, Arduino protégé.

La logique inversée LOW=ON qui surprend tout le monde

Quasiment tous les modules relais Arduino chinois fonctionnent en logique inversée : un état LOW (0 V) sur l’entrée IN active le relais, un état HIGH (5 V) le désactive. Ce n’est pas un bug, c’est lié à la topologie du circuit d’attaque avec optocoupleur où le courant doit “sortir” de la broche Arduino vers la masse à travers la LED de l’opto.

Conséquence directe : à la mise sous tension de votre Arduino, pendant les quelques millisecondes avant l’exécution du setup(), les broches GPIO sont en état flottant ou HIGH par défaut — les relais restent désactivés. Bien. Mais si vous écrivez digitalWrite(pin, HIGH) en pensant “j’allume”, vous éteignez. Et inversement.

// ❌ ERREUR CLASSIQUE
digitalWrite(relai1, HIGH);  // Pense "ON", en réalité OFF

// ✅ CORRECT — définir des constantes lisibles
#define RELAI_ON  LOW
#define RELAI_OFF HIGH

digitalWrite(relai1, RELAI_ON);  // Limpide

Câblage 220V : NO, NC, COM expliqués

Sur chaque canal du module, vous avez trois borniers à vis :

  • COM (Commun) : la borne pivot du contact. C’est ici que vous amenez la phase 220 V venant du tableau électrique (après le disjoncteur).
  • NO (Normalement Ouvert) : déconnecté de COM quand le relais est au repos, connecté quand le relais est activé. C’est ce bornier que vous utiliserez dans 95 % des cas — votre lampe est éteinte par défaut et s’allume quand l’Arduino le décide.
  • NC (Normalement Fermé) : connecté à COM au repos, déconnecté quand activé. Utile pour la logique inverse (alarme qui sonne par défaut, désactivée par badge par exemple) ou la sécurité fail-safe.

Schéma de câblage type pour une lampe 220V :

STEG Phase ───┬─[Disjoncteur 16A]─[Diff 30mA]─┬──→ COM
              │                                │
STEG Neutre ──┴────────────────────────────────┼──→ Lampe (borne N)
                                               │
                                       NO ─────┴──→ Lampe (borne L)

Neutre/Terre ──→ Châssis lampe (carcasse métal)

+5V Externe ──→ JD-VCC
GND Externe ──→ GND module
+5V Arduino ──→ VCC module (côté logique)
GND Arduino ──→ GND module (commun)
D2 Arduino  ──→ IN1

Code Arduino : du canal unique aux 8 canaux

Voici un sketch complet, propre, qui pilote les 8 canaux avec gestion d’état, anti-claquements et série monitor de debug :

/*
 * Pilotage Module Relais 8 Canaux
 * Logique inversée : LOW = relais activé, HIGH = relais désactivé
 * Auteur : exemple Didactico — pour usage pédagogique
 */

#define NB_RELAIS 8
#define RELAI_ON  LOW
#define RELAI_OFF HIGH

// Broches Arduino utilisées (évitez D0, D1 — UART)
const uint8_t pinsRelais[NB_RELAIS] = {2, 3, 4, 5, 6, 7, 8, 9};
bool etatRelais[NB_RELAIS] = {false, false, false, false, false, false, false, false};

// Délai minimum entre deux commutations pour éviter l'usure prématurée
const unsigned long DELAI_MIN_COMMUT = 200; // ms
unsigned long derniereCommut[NB_RELAIS] = {0};

void setup() {
  Serial.begin(9600);
  
  // Sécurité maximale : on configure HIGH AVANT de passer en OUTPUT
  // Sinon, pendant 1-2 µs, la broche flotte et le relais peut claquer
  for (uint8_t i = 0; i < NB_RELAIS; i++) {
    digitalWrite(pinsRelais[i], RELAI_OFF);
    pinMode(pinsRelais[i], OUTPUT);
    digitalWrite(pinsRelais[i], RELAI_OFF); // Double sécurité
  }
  
  Serial.println(F("Module relais 8 canaux pret"));
  Serial.println(F("Tapez 1-8 pour basculer, 0 pour tout eteindre"));
}

void commuterRelais(uint8_t numero, bool etat) {
  if (numero >= NB_RELAIS) return;
  
  unsigned long maintenant = millis();
  if (maintenant - derniereCommut[numero] < DELAI_MIN_COMMUT) {
    Serial.print(F("Trop rapide sur canal "));
    Serial.println(numero + 1);
    return;
  }
  
  digitalWrite(pinsRelais[numero], etat ? RELAI_ON : RELAI_OFF);
  etatRelais[numero] = etat;
  derniereCommut[numero] = maintenant;
  
  Serial.print(F("Canal "));
  Serial.print(numero + 1);
  Serial.println(etat ? F(" : ON") : F(" : OFF"));
}

void toutEteindre() {
  for (uint8_t i = 0; i < NB_RELAIS; i++) {
    commuterRelais(i, false);
    delay(50); // Évite pic de courant si chaîne de relais sur même alim
  }
}

void loop() {
  if (Serial.available()) {
    char c = Serial.read();
    if (c >= '1' && c <= '8') {
      uint8_t n = c - '1';
      commuterRelais(n, !etatRelais[n]); // Toggle
    } else if (c == '0') {
      toutEteindre();
    }
  }
}

Points importants du code

Notez l’ordre dans setup() : on écrit HIGH (relais désactivé) avant de configurer la broche en OUTPUT. Ce détail évite que pendant la transition INPUT→OUTPUT, la broche tire transitoirement à 0 et active brièvement le relais — claquement parasite au démarrage qui surprend tout le monde.

Le délai minimum entre deux commutations protège mécaniquement les contacts. Un relais qui clique 10 fois par seconde s’use en quelques heures.

PRODUIT RECOMMANDÉ

Module Relais 8 Canaux 5V Arduino

Module 8 canaux avec optocoupleur, relais SRD-05VDC-SL-C 10A, idéal domotique et automatisation — livraison 24-48h partout en Tunisie depuis Sfax.

Voir le module relais →

Charges inductives : le piège du retour de courant

Une lampe à incandescence ou un radiateur sont des charges purement résistives. Vous ouvrez le contact, le courant s’arrête, fin de l’histoire. Mais un moteur, une pompe, un transformateur, un solénoïde, un relais lui-même, sont des charges inductives. Lors de l’ouverture du contact, l’énergie magnétique stockée dans la bobine provoque une surtension transitoire qui peut atteindre plusieurs centaines de volts et créer un arc électrique entre les contacts qui s’écartent. Cet arc :

  • Brûle progressivement la couche d’argent des contacts (oxydation, micro-soudures)
  • Génère des parasites radioélectriques (RFI) qui plantent votre Arduino
  • Réduit la durée de vie de 100 000 cycles à parfois 10 000

Solution côté DC : la diode roue libre

Pour une charge inductive en courant continu (servomoteur, électrovanne 12 V), placez une diode 1N4007 en parallèle inverse sur la charge : cathode au +, anode au -. Quand le contact s’ouvre, la diode offre un chemin de bouclage au courant inductif.

Solution côté AC : le snubber RC

En courant alternatif, la diode ne sert à rien. Utilisez un snubber : une résistance 100 Ω 1 W en série avec un condensateur 100 nF / 400 V (X2 anti-parasites obligatoire) câblés en parallèle sur les contacts NO-COM du relais. Le snubber absorbe l’énergie inductive et étouffe l’arc. Composants peu coûteux, effet spectaculaire sur la durée de vie.

3 applications réelles et complètes

Application 1 — Domotique multi-pièces Bluetooth HC-05

Une maison à 5 pièces, 8 circuits indépendants : salon, chambre, cuisine, terrasse, couloir, chauffe-eau, ventilateur, pompe d’aquarium. Arduino UNO + module HC-05 Bluetooth + module relais 8 canaux + application Android (Bluetooth Electronics ou Arduino Bluetooth Controller).

Architecture : l’app Android envoie un caractère ASCII via Bluetooth (‘1’, ‘2’, … ‘8’ pour toggle, ‘A’ pour tout éteindre). Le HC-05 transmet à l’UART de l’Arduino qui exécute la commande. Coût matériel total : moins de 70 DT chez Didactico. Coût d’un système commercial équivalent : 800 DT minimum.

Application 2 — Pompe d’arrosage automatique avec capteur d’humidité de sol

Un seul canal sur les 8 utilisés, mais c’est l’application la plus utile en agriculture tunisienne. Capteur d’humidité capacitif (SEN0193 ou similaire) plongé dans le sol → entrée analogique A0. Sous un seuil (à étalonner empiriquement, typiquement 450 sur 0-1023), le relais alimente une pompe 220V immergée.

const int seuilSec = 450;        // ADC : sol sec
const int seuilHumide = 700;     // ADC : sol humide (arrêt)
const unsigned long dureeMaxPompe = 30000UL; // 30 sec sécurité
const unsigned long pauseEntreCycles = 3600000UL; // 1h

unsigned long debutPompe = 0;
unsigned long finPompe = 0;
bool pompeActive = false;

void loop() {
  int humidite = analogRead(A0);
  unsigned long maintenant = millis();
  
  if (!pompeActive
      && humidite < seuilSec
      && (maintenant - finPompe) > pauseEntreCycles) {
    digitalWrite(pinPompe, RELAI_ON);
    pompeActive = true;
    debutPompe = maintenant;
  }
  
  if (pompeActive
      && (humidite > seuilHumide
          || (maintenant - debutPompe) > dureeMaxPompe)) {
    digitalWrite(pinPompe, RELAI_OFF);
    pompeActive = false;
    finPompe = maintenant;
  }
  
  delay(5000);
}

Le watchdog dureeMaxPompe est essentiel : si le capteur tombe en panne, la pompe ne tournera jamais plus de 30 secondes consécutives. Sans cette sécurité, vous risquez l’inondation.

Application 3 — Programmateur ESP32 + NTP

Pour un éclairage public miniature, une enseigne, un poulailler avec lumière progressive, l’ESP32 (à privilégier sur l’UNO pour le WiFi natif) synchronise son horloge sur un serveur NTP (pool.ntp.org). Les horaires d’allumage/extinction sont programmés en dur ou via interface web. Précision : 1 seconde, dérive nulle car re-synchronisation périodique.

Les 10 règles de sécurité ABSOLUES

  1. Coupez le disjoncteur général avant tout câblage côté 220 V. Vérifiez l’absence de tension au multimètre — ne faites jamais confiance à un interrupteur seul.
  2. Disjoncteur différentiel 30 mA obligatoire en amont. Sans lui, une fuite à la terre vous électrocute en 100 ms. C’est la seule chose qui sauve une vie.
  3. Section de câble adaptée à l’intensité : 0,75 mm² jusqu’à 6 A (lampes), 1,5 mm² jusqu’à 16 A (prises, gros électroménager), 2,5 mm² jusqu’à 20 A. JAMAIS de câble inférieur côté secteur.
  4. Borniers à vis bien serrés au tournevis : un faux contact chauffe, fond, prend feu. Tirez sur le fil après serrage pour vérifier.
  5. Boîtier isolant fermé autour du module relais. PVC, ABS, polycarbonate. Pas de bois (humidité), pas de carton, pas de boîtier métal sans mise à la terre.
  6. Distance d’isolation de 8 mm minimum entre pistes 220 V et pistes basse tension. Sur la plupart des modules chinois, cette distance n’est pas respectée — entoilez avec de la résine époxy ou achetez un module certifié CE.
  7. Ne dépassez jamais 60 % du calibre du relais en charge continue. Un relais 10 A = 6 A max en pratique. La fiche technique optimiste du fabricant est testée 5 secondes, pas 5 ans.
  8. Mise à la terre de tout châssis métallique (boîtier, carcasse d’appareil) reliée à la terre du tableau via un fil vert/jaune.
  9. Étiquetez chaque canal du module au feutre indélébile : “canal 3 → pompe aquarium”. Dans 6 mois, vous ne vous rappellerez plus.
  10. Testez à vide d’abord. Branchez la commande Arduino, écoutez les clics, vérifiez la continuité au multimètre. Câblez le secteur en DERNIER.

Normes électriques tunisiennes essentielles

La Tunisie applique la norme NT 88.34 (équivalent IEC 60364) pour les installations basse tension domestiques. Points-clés :

  • Tension nominale : 230 V ± 10 % (donc 207 à 253 V) à 50 Hz
  • Régime de neutre : TT (neutre relié à la terre côté STEG)
  • Couleurs des conducteurs : rouge ou marron pour la phase, bleu pour le neutre, vert-jaune pour la terre. Respectez ces couleurs au câblage du module relais.
  • Section minimum éclairage : 1,5 mm² — Section minimum prises : 2,5 mm²
  • Disjoncteur différentiel 30 mA obligatoire en tête de circuits de prises et salle de bain

Pour une installation permanente dans une habitation, le contrôle par un installateur agréé STEG reste indispensable pour la conformité et l’assurance habitation.

FAQ

Puis-je alimenter le module 8 canaux directement depuis le port USB de l’Arduino ?

Non, surtout pas. 8 bobines actives consomment environ 560 mA. Le port USB d’un ordinateur fournit 500 mA maximum, et l’Arduino lui-même consomme déjà 50 à 100 mA. Vous risquez la chute de tension, le reset intempestif, voire d’endommager le port USB. Utilisez une alimentation 5 V / 2 A externe pour le JD-VCC et gardez l’USB uniquement pour la communication.

Pourquoi mes relais s’activent tout seuls au démarrage ?

Trois causes possibles : (1) vous configurez la broche en OUTPUT avant d’écrire HIGH dessus — inversez l’ordre. (2) Le jumper JD-VCC/VCC est mal positionné. (3) Bruit secteur ou alimentation mal filtrée — ajoutez un condensateur 1000 µF en parallèle sur l’alimentation 5 V du module.

Combien de temps dure un relais SRD-05VDC en pratique ?

La fiche dit 100 000 cycles à charge nominale et 10 millions à vide. En conditions réelles tunisiennes (charge 50-70 %, charges inductives, climat chaud et humide), comptez 20 000 à 50 000 cycles avant oxydation perceptible. Avec snubber RC, vous doublez facilement cette durée de vie. Pour une installation permanente, préférez le HF115F.

Module relais ou SSR (relais statique) ?

SSR (Solid State Relay) = pas de mécanique, pas de bruit, commutation au zéro de tension (moins de parasites), durée de vie quasi infinie. Mais plus cher, dissipation thermique nécessaire (radiateur), risque de claquage en cas de surtension. Pour de la domotique basique avec lampes et prises, le relais électromécanique reste plus économique et tolérant aux erreurs.

Mon Arduino plante quand le relais commute. Pourquoi ?

Quasi-certainement parasites de commutation sur charge inductive. Solutions : (1) snubber RC en parallèle sur la charge AC, (2) condensateur 100 nF céramique entre VCC et GND du module, (3) câbles courts et éloignés du câblage 220 V, (4) alimentation Arduino indépendante de celle du module relais, (5) si tout échoue, optocoupleur supplémentaire entre Arduino et IN du module.

Peut-on piloter du triphasé 380V avec ce module ?

Non, pas directement. Les contacts sont calibrés 250 V AC monophasé. Pour du triphasé industriel (380-400 V), il faut des contacteurs de puissance (type Schneider LC1D) que l’on commande via le relais bas niveau. Le relais Arduino ferme le circuit de bobine 24 V du contacteur, qui lui-même ferme les trois phases.

Existe-t-il un risque pour les étudiants qui font ce TP ?

Oui, c’est pour cela que dans les laboratoires de l’ENIT, l’INSAT, l’ISBS ou l’ISET, les TP sur module relais sont systématiquement faits sous tension TBTS (Très Basse Tension de Sécurité) — typiquement 12 V ou 24 V — avec une lampe basse tension à la place de l’ampoule secteur. Ce n’est qu’après validation du câblage et du code que le passage au 220 V s’effectue, sous supervision d’un enseignant.

Conclusion : entre l’envie et la responsabilité

Le module relais 8 canaux est une porte d’entrée fabuleuse vers la domotique, l’automatisme industriel léger et l’IoT. Pour 25 à 40 DT chez Didactico, vous obtenez un outil qui aurait coûté plusieurs centaines de dinars il y a vingt ans. Mais derrière l’enthousiasme du prototypage, la réalité physique demeure : le 220 V tue. Respectez les 10 règles. Câblez hors tension. Mettez un différentiel 30 mA. Faites valider votre installation finale.

Étudiant ENIT, INSAT, ISBS, ISET — ou amateur passionné — vous trouverez chez Didactico tous les composants nécessaires : modules relais 1, 2, 4, 8 et 16 canaux, optocoupleurs séparés, snubbers RC, transformateurs 220/12V, capteurs d’humidité, modules HC-05 Bluetooth et ESP32. Livraison sous 24 à 48 heures partout en Tunisie depuis notre dépôt de Sfax. Le FabLab Sfax est aussi un excellent endroit pour faire valider vos premiers montages avant la mise en service.

Bon prototypage, et surtout : coupez toujours le disjoncteur.

🛒 Matériel nécessaire pour ce guide

Tout le matériel de ce tutoriel est disponible chez Didactico — livraison 24-48h partout en Tunisie, paiement à la livraison.

Voir toute la catégorie « Composants électroniques » →

📘 Guides liés : Bouton Poussoir Arduino : Débounce, Pull-up et Interruptions en Tunisie

🛒 Passez à la pratique
Retrouvez nos modules relais en stock chez Didactico, livraison partout en Tunisie.
Voir la boutique →