Lezione 21/31: Utilizzo del Telecomando a Infrarossi con Arduino | SunFounder Robojax
Introduzione
In questa lezione esploreremo l'affascinante mondo della comunicazione a infrarossi (IR) costruendo un progetto che decodifica i segnali di un telecomando standard utilizzando un Arduino. Questo progetto ti permette di rilevare quale pulsante viene premuto su un telecomando IR e attivare azioni di conseguenza, come accendere un cicalino. La capacità di interfacciarsi con i telecomandi IR apre un'ampia gamma di applicazioni pratiche, dalla semplice automazione domestica ai sistemi di controllo personalizzati.
Ecco alcune idee stimolanti su cosa puoi costruire con questa tecnologia:
- Sostituzione universale del telecomando: Crea un telecomando personalizzato per la tua TV, il sistema audio o altri dispositivi controllati a infrarossi.
- Automazione domestica: Controlla luci, ventilatori o altri elettrodomestici premendo un pulsante su un telecomando standard.
- Progetti interattivi: Costruisci un sistema di sicurezza che attiva un allarme quando viene premuto un pulsante specifico.
- Controllo robotico: Usa un telecomando IR per controllare senza fili il movimento e le azioni di un robot.
- Ausili per l'accessibilità: Sviluppa un telecomando semplice con pulsanti grandi per persone con mobilità ridotta.
Hardware e componenti
Questo progetto è costruito attorno a pochi componenti semplici, tutti tipicamente inclusi nei kit per principianti come il kit SunFounder 3-in-1. Avrai bisogno di:
- Una scheda Arduino (es. Uno)
- Un modulo ricevitore IR (es. TSOP38238 o simile)
- Un telecomando IR standard (con batteria CR2025)
- Un cicalino passivo
- Cavi jumper e una breadboard
Guida al cablaggio
Ecco il semplice schema di cablaggio per questo progetto. Il ricevitore IR è il componente chiave. Quando guardi la superficie curva del ricevitore, la disposizione dei pin è la seguente:
- Pin destro: Collegalo al pin 5V dell'Arduino.
- Pin centrale: Collegalo al pin GND dell'Arduino.
- Pin sinistro (segnale): Collegalo al pin digitale 11 dell'Arduino.
Inoltre, per la parte di azione del progetto, collega il terminale positivo (più lungo) del cicalino al pin digitale 2 e l'altro terminale a GND.
Spiegazione del codice
Questo progetto si basa sulla libreria IRremote per gestire il complesso compito di decodificare i segnali a infrarossi. Il codice è strutturato per apprendere prima i codici specifici del tuo telecomando e poi usarli per attivare azioni. Analizziamo le parti configurabili dall'utente.
Prima definiamo il pin a cui è collegato il filo del segnale del ricevitore IR. Questa è una configurazione cruciale che deve corrispondere al tuo cablaggio fisico.
const int IR_RECEIVE_PIN = 11; // Definisci il numero del pin per il sensore IR
Nella funzione setup(), il ricevitore IR viene inizializzato usando il pin appena definito. Questo dice alla libreria di iniziare ad ascoltare i segnali su quel pin.
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Avvia il ricevitore IR
Il cuore della logica di azione è nel loop(). Il codice controlla se un tasto è stato premuto e lo decodifica. La funzione decodeKeyValue() è una funzione personalizzata che traduce il codice esadecimale grezzo del telecomando in una stringa leggibile come "POWER" o "MUTE". Questa è la parte che dovrai modificare per adattarla al tuo telecomando specifico. Il codice di esempio definisce un buzzerPin e lo accende solo quando viene premuto il pulsante "POWER".
const int buzzerPin = 2; // Definisci il pin per il cicalino
// ... dentro il loop()
if (decodedValue == "POWER") {
digitalWrite(buzzerPin, HIGH); // Accendi il cicalino
} else {
digitalWrite(buzzerPin, LOW); // Spegni il cicalino
}
Come usarlo: La funzione decodeKeyValue() è la chiave per personalizzare questo progetto. Per usarla con il tuo telecomando, devi prima eseguire il codice con il Monitor Seriale aperto. Premi ogni pulsante sul telecomando e annota il valore esadecimale stampato per ciascuno. Poi aggiorna l'istruzione switch nella funzione decodeKeyValue() per mappare quei valori a nomi significativi. Puoi quindi usare questi nomi nelle tue istruzioni if per attivare diverse azioni, proprio come fa l'esempio per il pulsante "POWER".
Progetto dal vivo e dimostrazione
Una volta caricato il codice, apri il Monitor Seriale a una velocità di trasmissione di 9600 baud. Punta il telecomando verso il ricevitore IR e premi un pulsante. Il Monitor Seriale mostrerà il nome del tasto corrispondente (es. "POWER", "MUTE"). Per vedere l'azione in effetto, premi il pulsante "POWER". Sentirai il cicalino accendersi. Premendo qualsiasi altro pulsante, come "MUTE", il cicalino si spegnerà. Questo dimostra un concetto semplice ma potente: usare un telecomando per attivare uscite digitali sul tuo Arduino.
Capitoli
- [00:00] Introduzione al Controllo Remoto a Infrarossi con Arduino
- [01:25] Panoramica del Ricevitore e Trasmettitore IR
- [02:24] Comprensione del Modulo Ricevitore IR e del Cablaggio
- [03:31] Installazione della Libreria IRremote
- [04:22] Apertura e Spiegazione del Codice di Decodifica
- [07:29] Caricamento del Codice e Test dei Tasti del Telecomando
- [08:41] Aggiunta di un'Azione: Controllo di un Cicalino
- [10:37] Anteprima dei Prossimi Progetti IR
/*
Lesson 21/31: Decoding Infrared from remote
Get this code and watch video Download and resource page https://robojax.com/RJT604
YouTube video https://www.youtube.com/watch?v=EAlqaVy8fYY
*/
#include <IRremote.h>
const int IR_RECEIVE_PIN = 11; // Define the pin number for the IR Sensor
String lastDecodedValue = ""; // Variable to store the last decoded value
void setup() {
Serial.begin(9600); // Start serial communication at 9600 baud rate
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Start the IR receiver
}
void loop() {
if (IrReceiver.decode()) {
String decodedValue = decodeKeyValue(IrReceiver.decodedIRData.command);
if (decodedValue != "ERROR") {
Serial.println(decodedValue);
delay(100);
}
IrReceiver.resume(); // Enable receiving of the next value
}
}
String decodeKeyValue(long result)
{
switch(result){
case 0x16:
return "0";
case 0xC:
return "1";
case 0x18:
return "2";
case 0x5E:
return "3";
case 0x8:
return "4";
case 0x1C:
return "5";
case 0x5A:
return "6";
case 0x42:
return "7";
case 0x52:
return "8";
case 0x4A:
return "9";
case 0x9:
return "+";
case 0x15:
return "-";
case 0x7:
return "EQ";
case 0xD:
return "U/SD";
case 0x19:
return "CYCLE";
case 0x44:
return "PLAY/PAUSE";
case 0x43:
return "FORWARD";
case 0x40:
return "BACKWARD";
case 0x45:
return "POWER";
case 0x47:
return "MUTE";
case 0x46:
return "MODE";
case 0x0:
return "ERROR";
default :
return "ERROR";
}
}
Common Course Links
Common Course Files
Cose di cui potresti avere bisogno
-
Amazon
-
eBay
Risorse e riferimenti
Nessuna risorsa ancora.
File📁
Librerie Arduino (zip)
-
Codice sorgente del kit di apprendimento Smart Car 3-in-1 di SunFounder
3in1-kit-main-v2.zip12.80 MB