Telecomando IR con Arduino e ricevitore TSOP1738
Decodifichiamo i tasti di un normale telecomando a infrarossi e usiamo i codici ricevuti per comandare LED, relè e altri dispositivi collegati ad Arduino.
Cosa realizzeremo
Il progetto originale nasce come lettore e sistema di controllo IR: con il primo sketch leggiamo sul Monitor Seriale il valore trasmesso dal telecomando; con il secondo associamo alcuni valori a un’uscita di Arduino, nell’esempio il pin 9.
Materiale necessario
🧰 Kit Arduino consigliato
Molti progetti del sito utilizzano LED, resistenze, sensori e breadboard. Per iniziare può essere comodo avere un kit completo.
👉 Guarda il kit Arduino consigliatoLink di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
📘 Vuoi imparare Arduino passo dopo passo?
Nei miei libri trovi spiegazioni progressive, schemi e progetti pratici pensati anche per chi parte da zero.
👉 Scopri i miei libri su ArduinoLink di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
Come funziona un telecomando IR
Un telecomando non invia semplicemente una luce infrarossa continua: il LED IR trasmette una sequenza modulata che rappresenta il comando premuto. Un ricevitore come il TSOP1738 è progettato per rilevare segnali con portante intorno a 38 kHz e fornire ad Arduino un’uscita digitale già demodulata.
Schema di collegamento
Schema originale del progetto. Porta 5 V e GND sulla breadboard e verifica sempre la piedinatura del ricevitore che possiedi.
Simulazione del circuito
La pagina originale include anche una simulazione Tinkercad del progetto.
▶️ Apri la simulazione Tinkercad1. Leggere il codice del telecomando
La prima fase consiste nel caricare lo sketch di ricezione, aprire il Monitor Seriale a 9600 baud e premere un pulsante del telecomando. Il programma stampa il valore ricevuto in formato esadecimale.
#include <IRremote.h> // use the library
int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
void setup()
{
Serial.begin(9600); // for serial monitor output
irrecv.enableIRIn(); // Start the receiver
pinMode(9, OUTPUT); // Pin 9 output
}
void loop()
{
if (irrecv.decode(&results)) // have we received an IR signal?
{
Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
irrecv.resume();// receive the next value
}
}
2. Premere un tasto e annotare il valore
- Apri il Monitor Seriale.
- Punta il telecomando verso il TSOP1738.
- Premi il pulsante che vuoi utilizzare.
- Annota il valore visualizzato.
- Ripeti l’operazione per tutti i tasti che vuoi associare a funzioni Arduino.
Nell’esempio storico, premendo il tasto 6 venivano letti i valori 406 oppure 10406.
3. Usare il codice ricevuto per comandare Arduino
Nello sketch originale il valore letto viene confrontato in esadecimale. I codici 0x406 e 0x10406, associati al tasto 6 del telecomando usato nel test, portano HIGH il pin 9; i valori 0x404 e 0x10404, associati al tasto 4, lo riportano LOW.
#include <IRremote.h> // use the library
int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
void setup()
{
Serial.begin(9600); // for serial monitor output
irrecv.enableIRIn(); // Start the receiver
pinMode(9, OUTPUT); // Pin 9 output
}
void loop()
{
if (irrecv.decode(&results)) // have we received an IR signal?
{
Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
irrecv.resume();// receive the next value
}
if ( results.value == 0x406 || results.value == 0x10406 ){ //tasto 6 sul telecomando
digitalWrite(9, HIGH); // set the LED on
}
if ( results.value == 0x404 || results.value == 0x10404 ){ //tasto 4 sul telecomando
digitalWrite(9, LOW); // set the LED 0ff
}
}
IRrecv, decode_results, enableIRIn() e decode(&results). Le versioni moderne della libreria IRremote hanno modificato l’API; se compili oggi con una release recente potrebbe quindi essere necessario aggiornare il codice.Download originali
Conserviamo anche i file scaricabili presenti nella vecchia pagina.
⬇️ Libreria IRremote storica del progetto
Nota storica sull’errore TKD2
La pagina originale riportava nel 2016 un problema legato al messaggio TKD2 was not declared in this scope e suggeriva di eliminare la vecchia cartella RobotIRremote dalla directory delle librerie Arduino.
Ricevitore e trasmettitore: qual è la differenza?
| Componente | Funzione |
|---|---|
| TSOP1738 | Riceve e demodula i comandi provenienti da un telecomando IR. |
| LED infrarosso | Può trasmettere comandi IR se pilotato con il circuito e il software appropriati. |
| Arduino | Decodifica i comandi ricevuti oppure genera i dati da trasmettere. |
Idee per ampliare il progetto
- accendere e spegnere più LED;
- pilotare un modulo relè;
- comandare un servo;
- realizzare un menu controllato da telecomando;
- memorizzare i codici di più pulsanti;
- realizzare un piccolo telecomando universale IR con ricevitore e LED trasmettitore.
Debug rapido
- controlla VCC, GND e pin di uscita del ricevitore;
- verifica la piedinatura specifica del tuo TSOP1738;
- apri il Monitor Seriale alla velocità impostata nello sketch;
- prova il telecomando a distanza ravvicinata;
- se il codice non compila, controlla soprattutto la versione della libreria IRremote;
- se i valori sono diversi da quelli dell’esempio, è normale: usa quelli generati dal tuo telecomando.
Cosa devi ricordare
- Ogni pulsante del telecomando genera un comando IR che Arduino può identificare.
- Il TSOP1738 è un ricevitore IR demodulato per segnali intorno a 38 kHz.
- I codici dell’esempio non sono universali: vanno letti dal proprio telecomando.
- Una volta conosciuto il codice, puoi associarlo a qualsiasi funzione del programma.
- Il codice storico può richiedere adattamenti con le versioni moderne di IRremote.
Domande frequenti
Posso usare qualsiasi telecomando?
Puoi provare molti comuni telecomandi a infrarossi. I codici ricevuti dipendono dal telecomando e dal protocollo utilizzato.
Devo usare per forza i codici 406 e 404?
No. Sono soltanto i valori ottenuti nel progetto originale. Devi leggere i codici prodotti dal tuo telecomando e inserirli nello sketch.
Perché lo sketch vecchio non compila con IRremote?
La libreria è cambiata nel tempo e l’API moderna non coincide con quella utilizzata dal progetto storico. Puoi conservare il codice originale come riferimento oppure convertirlo alla versione attuale della libreria.
Posso comandare un relè invece del LED?
Sì, usando un modulo relè adatto ad Arduino e rispettando le necessarie precauzioni elettriche, soprattutto se il relè controlla tensioni pericolose.

