ESP32 - Télécommande infrarouge

Vous avez probablement rencontré la télécommande infrarouge, également appelée télécommande IR, lors de l'utilisation d'appareils comme les téléviseurs et les climatiseurs à la maison... Dans ce guide, nous apprendrons à utiliser la télécommande infrarouge (IR) et un récepteur infrarouge pour contrôler l'ESP32. En détail, nous apprendrons :

Contrôleur IR - Récepteur IR - ESP32

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×IR Remote Controller and Receiver Kit
1×CR2025 Battery
1×Breadboard
1×Jumper Wires
1×(Recommended) ESP32 Screw Terminal Adapter

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos de la télécommande IR

Un système de contrôle IR comprend deux composants : une télécommande IR et un récepteur IR.

  • La télécommande IR est utilisée pour envoyer des commandes à l'aide de signaux infrarouges.
  • Le récepteur IR capture et interprète ces signaux pour contrôler l'appareil.

Un kit IR comprend généralement les deux composants mentionnés ci-dessus : une télécommande IR et un récepteur IR.

Télécommande IR

La télécommande IR est un appareil portable qui émet des signaux infrarouges. Elle est conçue avec un clavier comportant plusieurs boutons :

  • Chaque bouton de la télécommande est assigné à une fonction ou commande spécifique.
  • Lorsqu'un bouton est pressé, la télécommande émet un signal infrarouge contenant un code ou motif unique lié au bouton pressé.
  • Ces signaux infrarouges se situent dans le spectre infrarouge et ne sont pas visibles à l'œil humain.
Contrôleur IR
image source: diyables.io

Récepteur IR

Le module récepteur IR est un capteur qui détecte et reçoit les signaux infrarouges émis par la télécommande.

Le récepteur infrarouge détecte les signaux infrarouges entrants et les convertit en code (commande) représentant le bouton pressé sur la télécommande.

Le récepteur IR peut être un capteur ou un module. Vous pouvez utiliser les choix suivants :

  • Module de réception IR uniquement
  • Capteur de réception IR uniquement
  • Capteur de réception IR + Adaptateur
Module capteur récepteur IR
image source: diyables.io
Adaptateur de capteur récepteur IR
image source: diyables.io

Brochage du récepteur IR

Le module ou capteur de réception IR a trois broches :

  • Broche VCC : Connectez cette broche à la broche 3,3V ou 5V de l'ESP32 ou à une source d'alimentation externe.
  • Broche GND : Connectez cette broche à la broche GND de l'ESP32 ou à une source d'alimentation externe.
  • Broche OUT (Sortie) : Cette broche est la broche de sortie du module récepteur IR. Connectée à une broche d'entrée numérique sur l'ESP32.

Comment ça marche

Lorsque l'utilisateur appuie sur un bouton de la télécommande IR

  • La télécommande IR encode la commande correspondant au bouton en signal infrarouge via un protocole spécifique
  • La télécommande IR émet le signal infrarouge codé
  • Le récepteur IR reçoit le signal infrarouge codé
  • Le récepteur IR décode le signal infrarouge codé en commande
  • L'ESP32 lit la commande provenant du récepteur IR
  • L'ESP32 associe la commande à la touche pressée

Lorsqu'un bouton est pressé sur la télécommande IR, la séquence d'événements suivante se produit :

  • La télécommande IR encode la commande du bouton en un signal infrarouge en utilisant un protocole spécifique.
  • Le signal infrarouge codé est émis par la télécommande IR.
  • Le récepteur IR capture et reçoit le signal infrarouge codé.
  • Le récepteur IR décode le signal infrarouge, le reconvertissant en la commande originale.
  • L’ESP32 lit et récupère la commande du récepteur IR.
  • L’ESP32 associe ensuite la commande reçue au bouton correspondant qui a été pressé sur la télécommande IR.

En essence, ces étapes décrivent comment l'appui sur un bouton de la télécommande IR est transformé en une commande reconnaissable que l'ESP32 peut comprendre et traiter.

Régénérer la réponse

Cela peut sembler compliqué, mais ne vous inquiétez pas. Grâce à la bibliothèque conviviale DIYables_IRcontroller library, cela devient incroyablement facile à réaliser.

Diagramme de câblage

Schéma de câblage entre l'ESP32 et le module récepteur IR

Schéma de câblage de la télécommande IR ESP32

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

Schéma de câblage entre ESP32 et capteur récepteur IR

Schéma de câblage de la télécommande IR ESP32

This image is created using Fritzing. Click to enlarge image

Schéma de câblage entre l'ESP32 et le capteur récepteur IR et l'adaptateur

Avant de connecter le capteur récepteur IR à l'ESP32, vous avez la possibilité de le connecter à l'adaptateur. Cela permet une intégration et une configuration plus faciles du capteur récepteur IR avec l'ESP32.

Adaptateur récepteur de télécommande IR ESP32
image source: diyables.io

Comment programmer pour une télécommande infrarouge

  • Inclure la bibliothèque :
#include <DIYables_IRcontroller.h> // Bibliothèque pour le récepteur IR
  • Déclarez un objet DIYables_IRcontroller_17 ou DIYables_IRcontroller_21 correspondant aux télécommandes IR de 17 touches ou 21 touches :
DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // le temps d'antirebond est de 200 ms // OU DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200); // le temps d'antirebond est de 200 ms
  • Initialisez le contrôleur IR.
irController.begin();
  • Dans la boucle, vérifiez si une touche est pressée ou non. Si oui, récupérez la touche.
Key17 key = irController.getKey(); // si utilisation d'une télécommande IR à 17 touches // OU Key21 key = irController.getKey(); // si utilisation d'une télécommande IR à 21 touches
  • Après avoir détecté une pression de touche, vous pouvez effectuer des actions en fonction de chaque touche.

Code ESP32

  • Code ESP32 pour la télécommande IR à 17 touches DIYables
/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN 19 // The ESP32 pin GPIO19 connected to IR controller DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms void setup() { Serial.begin(9600); irController.begin(); } void loop() { Key17 key = irController.getKey(); if (key != Key17::NONE) { switch (key) { case Key17::KEY_1: Serial.println("1"); // TODO: YOUR CONTROL break; case Key17::KEY_2: Serial.println("2"); // TODO: YOUR CONTROL break; case Key17::KEY_3: Serial.println("3"); // TODO: YOUR CONTROL break; case Key17::KEY_4: Serial.println("4"); // TODO: YOUR CONTROL break; case Key17::KEY_5: Serial.println("5"); // TODO: YOUR CONTROL break; case Key17::KEY_6: Serial.println("6"); // TODO: YOUR CONTROL break; case Key17::KEY_7: Serial.println("7"); // TODO: YOUR CONTROL break; case Key17::KEY_8: Serial.println("8"); // TODO: YOUR CONTROL break; case Key17::KEY_9: Serial.println("9"); // TODO: YOUR CONTROL break; case Key17::KEY_STAR: Serial.println("*"); // TODO: YOUR CONTROL break; case Key17::KEY_0: Serial.println("0"); // TODO: YOUR CONTROL break; case Key17::KEY_SHARP: Serial.println("#"); // TODO: YOUR CONTROL break; case Key17::KEY_UP: Serial.println("UP"); // TODO: YOUR CONTROL break; case Key17::KEY_DOWN: Serial.println("DOWN"); // TODO: YOUR CONTROL break; case Key17::KEY_LEFT: Serial.println("LEFT"); // TODO: YOUR CONTROL break; case Key17::KEY_RIGHT: Serial.println("RIGHT"); // TODO: YOUR CONTROL break; case Key17::KEY_OK : Serial.println("OK"); // TODO: YOUR CONTROL break; default: Serial.println("WARNING: undefined key:"); break; } } }
/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN 19 // The ESP32 pin GPIO19 connected to IR controller DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms void setup() { Serial.begin(9600); irController.begin(); } void loop() { Key21 key = irController.getKey(); if (key != Key21::NONE) { switch (key) { case Key21::KEY_CH_MINUS: Serial.println("CH-"); // TODO: YOUR CONTROL break; case Key21::KEY_CH: Serial.println("CH"); // TODO: YOUR CONTROL break; case Key21::KEY_CH_PLUS: Serial.println("CH+"); // TODO: YOUR CONTROL break; case Key21::KEY_PREV: Serial.println("<<"); // TODO: YOUR CONTROL break; case Key21::KEY_NEXT: Serial.println(">>"); // TODO: YOUR CONTROL break; case Key21::KEY_PLAY_PAUSE: Serial.println(">||"); // TODO: YOUR CONTROL break; case Key21::KEY_VOL_MINUS: Serial.println("–"); // TODO: YOUR CONTROL break; case Key21::KEY_VOL_PLUS: Serial.println("+"); // TODO: YOUR CONTROL break; case Key21::KEY_EQ: Serial.println("EQ"); // TODO: YOUR CONTROL break; case Key21::KEY_100_PLUS: Serial.println("100+"); // TODO: YOUR CONTROL break; case Key21::KEY_200_PLUS: Serial.println("200+"); // TODO: YOUR CONTROL break; case Key21::KEY_0: Serial.println("0"); // TODO: YOUR CONTROL break; case Key21::KEY_1: Serial.println("1"); // TODO: YOUR CONTROL break; case Key21::KEY_2: Serial.println("2"); // TODO: YOUR CONTROL break; case Key21::KEY_3: Serial.println("3"); // TODO: YOUR CONTROL break; case Key21::KEY_4: Serial.println("4"); // TODO: YOUR CONTROL break; case Key21::KEY_5: Serial.println("5"); // TODO: YOUR CONTROL break; case Key21::KEY_6: Serial.println("6"); // TODO: YOUR CONTROL break; case Key21::KEY_7: Serial.println("7"); // TODO: YOUR CONTROL break; case Key21::KEY_8: Serial.println("8"); // TODO: YOUR CONTROL break; case Key21::KEY_9: Serial.println("9"); // TODO: YOUR CONTROL break; default: Serial.println("WARNING: undefined key:"); break; } } }

Étapes rapides

  • Si c'est la première fois que vous utilisez l'ESP32, consultez comment configurer l'environnement pour l'ESP32 sur Arduino IDE.
  • Cliquez sur l'icône Libraries dans la barre latérale gauche de l'Arduino IDE.
  • Recherchez "DIYables_IRcontroller", puis trouvez la bibliothèque DIYables_IRcontroller de DIYables.
  • Cliquez sur le bouton Install pour installer la bibliothèque DIYables_IRcontroller.
Bibliothèque ESP32 DIYables_IRcontroller
  • Vous serez invité à installer la dépendance de la bibliothèque comme le montre l'image ci-dessous :
Bibliothèque IRremote ESP32
  • Cliquez sur le bouton Install All pour installer la dépendance.
  • Copiez le code ci-dessus et ouvrez-le avec l'Arduino IDE.
  • Cliquez sur le bouton Upload dans l'Arduino IDE pour charger le code sur l'ESP32.
  • Appuyez sur les touches de la télécommande une par une.
  • Vérifiez le résultat sur le moniteur série.
  • Lorsque vous appuyez sur les touches d'une télécommande IR de 21 touches une par une, voici le résultat :
COM6
Send
9 8 7 6 5 4 3 2 1 0 200+ 100+ EQ + – || >> << CH+ CH CH-
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vous avez désormais la capacité de personnaliser le code et de contrôler différents appareils comme des LED, des ventilateurs, des pompes, des actionneurs, et plus encore à l'aide de télécommandes infrarouges. Cela signifie que vous pouvez apporter des modifications au code pour faire réagir ces dispositifs à vos commandes envoyées via la télécommande.

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!