Infrarouge IR: Module de relais électronique sans fil multicanaux (8 canaux) avec Arduino
Objectifs
Savoir utiliser une carte relais
Savoir exploiter plusieurs touches d’une télécommande IR
Savoir utiliser un récepteur/émetteur IR avec Arduino
Savoir commander plusieurs appareils sans fil indépendants
Etc.
Fonctionnement
Le mini-projet dédié au contrôle d’une carte relais 8 canaux en utilisant une télécommande infrarouge (IR). L’émetteur (la télécommande) permet de contrôler d’une façon indépendante la mise en marche ou en arrêt de l’un ou l’ensemble des relais. Nous utiliserons des LED alimentées à 5V afin d’observer l’état des relais. On peut également utiliser une charge AC/DC (Exemples : Monteur AC/DC, lampe, ventilateur, chauffage électrique, etc.) à la place d’une LED.
Émetteur IR ou télécommande
Nous avons utilisé une télécommande constituée de 21 boutons (7×3). Uniquement 8 boutons (« 1 » à « 8 ») seront effectivement utilisés pour le contrôle des relais. Ci-dessous le tableau des codes de la télécommande :
Chaque touche de la télécommande permet la mise en marche ou l’arrêt du canal correspondant. L’appui sur la touche inverse l’état du relais, puis garde en mémoire l’état actuel. Ci-dessous un exemple et l’extrait du code Arduino consacré à la touche « 1 ».
Si l’état précédent est égal à« 0 », le relais il passe à « 1 » puis il maintient la valeur « 1 »
Si l’état précédent est égal à« 1 », le relais il passe à « 0 » puis il maintient la valeur « 0 »
... case 0xFF30CF: // Canal 1
if (Chan_1_etat==0) { // Mise en arrêt du relais (canal 1) digitalWrite(Chan_1, LOW);
// Initialisation de l'état Chan_1_etat=1; } else { // Mise en marche du relais (canal 1) digitalWrite(Chan_1, HIGH);
// Initialisation de l'état Chan_1_etat=0; } break;
case 0xFF18E7: // Canal 2 ...
Programme Arduino
#include "IRremote.h"
// Numéro du pin sortie du récepteur long int res_val; const int receiver = 11;
// Indicateurs des états des cannaux (logique négative) int Chan_1_etat=1; int Chan_2_etat=1; int Chan_3_etat=1; int Chan_4_etat=1; int Chan_5_etat=1; int Chan_6_etat=1; int Chan_7_etat=1; int Chan_8_etat=1;
// Liaison Arduino-Relais des 8 cannaux const int Chan_1 = 2; const int Chan_2 = 3; const int Chan_3 = 4; const int Chan_4 = 5; const int Chan_5 = 6; const int Chan_6 = 7; const int Chan_7 = 8; const int Chan_8 = 9;
// Déclaration d'un objet IRrecv IRrecv irrecv(receiver); decode_results results;