Récepteur IR et télécommande : projets télécommandés avec Arduino
Comment fonctionne un récepteur infrarouge (IR) ? Câblage du VS1838B, lecture des codes de touches avec IRremote, protocole NEC, commande de LED et de relais à la télécommande, émission IR avec une LED infrarouge, ESP32 et Pico.
Les télécommandes de télé, de climatiseur et de chaîne hi-fi fonctionnent avec de la lumière infrarouge (IR). Ajoute à ton Arduino un récepteur IR qui coûte trois fois rien, et tu pourras lire les touches de presque toutes les télécommandes de la maison pour piloter lampes, LED, moteurs ou musique. Pas d'appairage, pas d'application, pas d'Internet : il suffit de viser la carte et d'appuyer sur une touche. C'est le moyen le plus simple et le moins cher de réaliser ton premier projet télécommandé.

Comment fonctionne une télécommande infrarouge ?
La LED IR au bout de la télécommande émet une lumière d'environ 940 nm, invisible à l'œil. Cette lumière n'est pas allumée en continu : elle est portée par un signal qui clignote 38 000 fois par seconde. Le circuit du récepteur ne tient compte que de la lumière qui scintille à cette fréquence : le soleil et les lampes ne peuvent donc pas brouiller le signal. Le récepteur transforme ce scintillement en impulsions numériques nettes et met sa sortie à LOW tant que le signal est présent.
La touche appuyée est codée par la durée des impulsions et des silences entre elles. Il existe pour cela plusieurs « langages », appelés protocoles : le plus courant est le NEC (un octet d'adresse et un octet de commande), et ceux de Sony, RC5 (Philips) et Samsung sont aussi fréquents. Heureusement, la bibliothèque s'occupe du décodage : tu n'as qu'à lire le code de la touche.
Caractéristiques techniques (VS1838B)
| Caractéristique | Valeur |
|---|---|
| Fréquence porteuse | 38 kHz |
| Longueur d'onde | Environ 940 nm |
| Alimentation | 2,7–5,5 V |
| Portée | 8–10 m (selon la pile de la télécommande et l'angle) |
| Angle de réception | Environ ±35° |
| Sortie | LOW quand un signal est présent (active à l'état bas) |
| Broches | OUT, GND, VCC |
Câblage du récepteur IR
| Broche du récepteur | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| OUT (S) | D2 | GPIO 15 | GP16 |
| GND (–) | GND | GND | GND |
| VCC (+) | 5V | 3V3 | 3V3 |
Lire les codes des touches avec la bibliothèque IRremote
Dans le gestionnaire de bibliothèques, cherche IRremote et installe la bibliothèque d'Armin Joachimsmeyer. Le code ci-dessous fonctionne avec la version 4.x ; à chaque appui, il affiche dans le moniteur série le protocole, l'adresse et le code de commande. Si tu vois des commandes comme IRrecv et decode(&results) dans d'anciens exemples sur Internet, elles appartiennent à une vieille version.
1#include <IRremote.hpp>
2
3const int IR_PIN = 2;
4
5void setup() {
6 Serial.begin(9600);
7 IrReceiver.begin(IR_PIN, ENABLE_LED_FEEDBACK); // sinyal gelince dahili LED yanar / onboard LED blinks on signal
8}
9
10void loop() {
11 if (IrReceiver.decode()) {
12 Serial.print("Komut / command: 0x");
13 Serial.println(IrReceiver.decodedIRData.command, HEX);
14 IrReceiver.printIRResultShort(&Serial); // protokol ve adres / protocol and address
15 IrReceiver.resume(); // sonraki tuşa hazırlan / ready for the next key
16 }
17}Appuie sur les touches de ta télécommande une à une et note les codes. Les petites télécommandes à 21 touches fournies dans les kits utilisent généralement le protocole NEC, et leurs codes ressemblent le plus souvent à ceux du tableau ; vérifie-les tout de même en lisant ta propre télécommande :
| Touche | Commande (NEC) |
|---|---|
| CH- | 0x45 |
| CH | 0x46 |
| CH+ | 0x47 |
| PREV | 0x44 |
| NEXT | 0x40 |
| PLAY/PAUSE | 0x43 |
| VOL- | 0x07 |
| VOL+ | 0x15 |
| 0 | 0x16 |
| 1 | 0x0C |
| 2 | 0x18 |
| 3 | 0x5E |
Piloter une LED et un relais à la télécommande
Une fois les codes connus, tu peux attribuer une tâche à chaque touche. Dans l'exemple ci-dessous, la touche « 1 » bascule un relais, et VOL+ et VOL- règlent la luminosité d'une LED en PWM. Quand une touche reste enfoncée, la télécommande envoie des signaux de répétition ; pour une fonction marche-arrêt, il faut les ignorer, sinon le relais n'arrête pas de basculer. Pour le câblage du relais, vois Qu'est-ce qu'un module relais ?
1#include <IRremote.hpp>
2
3const int IR_PIN = 2;
4const int LED_PIN = 9; // PWM pini / PWM pin
5const int RELAY_PIN = 7; // aktif LOW röle / active-LOW relay
6
7bool relayOn = false;
8int brightness = 128;
9
10void setup() {
11 pinMode(LED_PIN, OUTPUT);
12 pinMode(RELAY_PIN, OUTPUT);
13 digitalWrite(RELAY_PIN, HIGH);
14 IrReceiver.begin(IR_PIN);
15}
16
17void loop() {
18 if (!IrReceiver.decode()) return;
19 bool repeat = IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT; // tuş basılı tutuluyor / key held down
20 switch (IrReceiver.decodedIRData.command) {
21 case 0x0C: // "1": röleyi aç-kapa / toggle the relay
22 if (!repeat) {
23 relayOn = !relayOn;
24 digitalWrite(RELAY_PIN, relayOn ? LOW : HIGH);
25 }
26 break;
27 case 0x15: // VOL+: daha parlak / brighter
28 brightness = min(brightness + 15, 255);
29 break;
30 case 0x07: // VOL-: daha sönük / dimmer
31 brightness = max(brightness - 15, 0);
32 break;
33 }
34 analogWrite(LED_PIN, brightness);
35 IrReceiver.resume(); // sonraki tuşa hazırlan / ready for the next key
36}Envoyer des signaux IR avec Arduino
L'Arduino ne se contente pas d'écouter les télécommandes : il peut en devenir une. Branche une LED IR (940 nm) sur la broche 3 de l'Uno via une résistance de 100 Ω ; pour plus de portée, commande la LED par un transistor. Lis d'abord avec le code précédent la télécommande de l'appareil à piloter pour connaître son adresse et sa commande, puis envoie le même code depuis l'Arduino :
1#include <IRremote.hpp>
2
3const int IR_SEND_PIN = 3; // IR LED, 100 Ω direnç ile / IR LED with a 100 Ω resistor
4
5void setup() {
6 IrSender.begin(IR_SEND_PIN);
7}
8
9void loop() {
10 IrSender.sendNEC(0x00, 0x46, 0); // adres, komut, tekrar sayısı / address, command, repeats
11 delay(5000);
12}L'IR avec l'ESP32 et le Raspberry Pi Pico
Le VS1838B fonctionne très bien en 3,3 V : il se branche directement sur l'ESP32 et le Pico. La bibliothèque IRremote prend en charge l'ESP32 ; tu peux relier le récepteur à n'importe quelle broche d'entrée, comme la GPIO 15. Avec un ESP32, tu peux transmettre en Wi-Fi les appuis de la télécommande à d'autres appareils, ou créer une « télécommande intelligente » qui envoie à la télé, via une LED IR, les ordres venus de ton téléphone. Sur le Pico en MicroPython, on utilise la bibliothèque micropython_ir de Peter Hinch :
1from machine import Pin
2from ir_rx.nec import NEC_8 # micropython_ir kütüphanesi / library (Peter Hinch)
3import time
4
5def on_key(command, address, ctrl):
6 if command >= 0: # negatif değerler tekrar ya da hata / negatives mean repeat or error
7 print("Komut / command: 0x{:02X}".format(command))
8
9ir = NEC_8(Pin(16, Pin.IN), on_key) # GP16 → OUT
10
11while True:
12 time.sleep(1)Idées de projets avec un récepteur IR et une télécommande
- Lampe télécommandée : allume une lampe secteur via un relais avec une touche libre de la télécommande de la télé.
- Télécommande de couleurs : change la couleur d'une LED RGB avec les touches numériques.
- Voiture robot télécommandée : une voiture dont tu diriges les deux moteurs avec les flèches.
- Boîte à mélodies : associe une mélodie différente à chaque touche numérique ; pour le son, vois Qu'est-ce qu'un buzzer ?
- Télécommande qui apprend : enregistre les codes d'autres télécommandes et renvoie-les depuis un seul Arduino.
- Serrure à code : ouvre une serrure avec un servo quand la bonne séquence de touches est saisie.
Erreurs fréquentes et solutions
- Aucun code n'arrive : le fil OUT est sur une autre broche que celle du code, les pattes du récepteur sont inversées, ou la pile de la télécommande est vide ; vérifie la télécommande avec l'appareil photo du téléphone.
- L'exemple ne compile pas : les vieux exemples d'Internet sont écrits pour IRremote 2.x ; la version 4.x utilise IrReceiver.begin() et IrReceiver.decode().
- Des codes aléatoires apparaissent : le récepteur est peut-être face au soleil ou à un tube fluorescent ; mets-le à l'ombre.
- La touche marche-arrêt agit deux fois : les répétitions ne sont pas ignorées ; vérifie le drapeau IRDATA_FLAGS_IS_REPEAT.
- tone() ou le PWM des broches 3 et 11 déraillent : sur l'Uno, ils partagent le même timer (Timer2) qu'IRremote.
- Portée très faible en émission avec une LED IR : commande la LED par un transistor pour lui donner plus de courant et oriente-la vers l'appareil.
Un récepteur IR est le moyen le plus simple et le moins cher de passer au sans-fil ; même les vieilles télécommandes qui traînent au fond d'un tiroir retrouvent une seconde vie dans tes nouveaux projets. Dans l'application BlueGrays, tu trouveras des projets pour lire les codes d'une télécommande, allumer et éteindre des LED, jouer des mélodies, commander une lampe secteur et réaliser une télécommande universelle avec ESP32, avec schémas et code.
Questions fréquentes
À quelle distance un récepteur IR capte-t-il le signal ?
Les récepteurs comme le VS1838B captent le signal jusqu'à 8–10 mètres avec une bonne télécommande et sans obstacle. La portée diminue quand la pile s'affaiblit, que l'angle augmente et que l'environnement est très lumineux.
Toutes les télécommandes fonctionnent-elles avec Arduino ?
Presque toutes les télécommandes infrarouges à 38 kHz fonctionnent, et IRremote décode la plupart des protocoles courants. Avec des télécommandes à 36, 40 ou 56 kHz, la portée peut être plus courte. Les télécommandes radio (433 MHz par exemple) ne se lisent pas avec un récepteur IR.
Un récepteur IR fonctionne-t-il en plein soleil ?
Le filtre du récepteur bloque largement la lumière constante, mais le soleil direct peut saturer le récepteur et réduire fortement la portée. En extérieur, place le récepteur à l'ombre ou dans un petit tube de protection.
Une télécommande IR fonctionne-t-elle à travers un mur ?
Non. La lumière infrarouge ne traverse pas les murs ; il faut une vue directe entre la télécommande et le récepteur, ou une surface sur laquelle la lumière peut rebondir. Pour piloter un appareil dans une autre pièce, on utilise des modules radio ou le Wi-Fi.
Quelle version d'IRremote faut-il utiliser ?
Utilise la version actuelle 4.x, avec IrReceiver.begin(), IrReceiver.decode() et decodedIRData.command. Les commandes IRrecv irrecv(pin) et decode(&results) des anciens exemples appartiennent à la version 2.x et ne sont pas compatibles avec la nouvelle.
Puis-je utiliser mon téléphone comme télécommande ?
Certains téléphones Android ont un émetteur IR intégré et servent de télécommande avec la bonne application. Si ton téléphone n'a pas d'IR, tu peux créer une page web sur un ESP32 et envoyer les ordres du téléphone à l'appareil via une LED IR.
Projets à réaliser après cet article
Voir tous les projets
Lire les codes d'une télécommande IR
Le projet qui lit les valeurs HEX des signaux infrarouges de la télécommande avec le module récepteur IR dans Serial Monitor. Enseigne l'utilisation de la bibliothèque IRremote.

Allumer et éteindre des LED avec un récepteur IR et une télécommande
Projet de contrôle IR permettant d'allumer et d'éteindre 3 LED de manière indépendante à l'aide de différentes touches de la télécommande. Il permet d'apprendre à faire correspondre les codes de la té

Jouer des mélodies avec une télécommande IR et un buzzer
Projet qui joue les mélodies de Mario, de la fête des mères et du Nouvel An avec un buzzer en appuyant sur différentes touches de la télécommande IR. Il combine le déclenchement de fonctions et la pro

Allumer une ampoule 220 V avec une télécommande
Projet qui permet d'allumer et d'éteindre une ampoule de 220 V par l'intermédiaire d'un relais avec les touches d'alimentation et de sourdine d'une télécommande infrarouge. Il combine la commande infr

Système de sécurité laser
Système de sécurité avancé qui déclenche l'alarme lorsque le faisceau laser est interrompu et qui peut être réinitialisé par un bouton-poussoir ou une commande IR. Enseigne les sources d'entrée multip

Télécommande avec récepteur IR ESP32 (avec écran LCD)
Dans ce projet, nous utilisons le module récepteur IR TSOP4838 pour capter, à l'aide d'un ESP32, les signaux provenant d'une télécommande de télévision, de climatisation ou de tout autre appareil à infrarouge. Grâce à la bibliothèque IRremote v4, nous affichons et enregistrons le code unique de chaque touche sur l'écran LCD I2C. Nous utilisons ensuite ces codes pour allumer, éteindre et régler la luminosité d'une LED via la télécommande. Un excellent point de départ pour la domotique.

Télécommande universelle ESP32 IR (récepteur IR + télécommande + 3 LED + buzzer + écran OLED)
Avec l'ESP32, tu peux lire les signaux d'une télécommande IR standard et contrôler ton propre appareil ! Dans ce projet, nous capturons les signaux d'une télécommande IR à 20 touches à l'aide d'un récepteur infrarouge (protocole NEC 38 kHz). Nous avons défini une action différente pour chaque touche : les touches 1/2/3 activent ou désactivent trois LED distinctes, la touche PWR les éteint toutes, et les chiffres 4 à 9 affichent des informations spécifiques sur l'écran OLED. Sur l'écran OLED SSD1

Système d'alerte laser
Projet de sécurité qui détecte l'interruption du faisceau laser via une LDR et avertit par un buzzer et une LED. Il enseigne la logique de la détection de l'interruption de la lumière avec une paire l
Autres articles
Apprends comment fonctionne une télécommande de télé, comment brancher un récepteur IR sur un Arduino, lire les codes des touches, piloter lampes et LED à la télécommande et envoyer des signaux IR depuis l'Arduino.

