4
// Arduino: generatore infrarossi, come clonare un telecomando 17bis - generatore infrarossi come clonare un telecomando Un generatore di infrarossi non si differenzia, nell’aspetto, da un normale diodo bianco ma emette una luce non visibile all’occhio umano. In questo esercizio e’ stato utilizzato un modulo keyes 005 ma sarebbe possibile usare in sua vece, un normale emettitore di infrarossi limitato da una resistenza da 100 ohm (come nello schema piu’ avanti rappresentato). Il modulo keyes KY 005 e’ una basetta sulla quale e’ stato saldato un generatore. La basetta non contiene solo il generatore, ma anche la relativa resistenza di limitazione per cui e’ possibile collegarla direttamente ad Arduino. Per clonare un telecomando e’ necessario disporre del telecomando originale al fine di rilevare i codici che si vogliono replicare. In questo esercizio piloteremo un televisore riproducendo i segnali di: on/off, canale successivo e canale precedente. Per rilevare i codici originali sara’ necessario ricostruire il circuito illustrato nel precedente esercizio 16. Non si usera’ pero’ il programma dell’esercizio16 ma il seguente, piu’ semplice e piu’ efficace: //----------------------------programma per rilevare i codici di comando-------------------------------------- #include <IRremote.h> int RECV_PIN = 3; // Pin di ricezione IRrecv irrecv(RECV_PIN); void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Inizializzazione del ricevitore } void loop() { decode_results results; if (irrecv.decode(&results)) { // Tipi di codifica: // results.decode_type == NEC // results.decode_type == SONY // results.decode_type == HEX // results.decode_type == RC5 // results.decode_type == RC6 if (results.decode_type == NEC) Serial.println(results.value); irrecv.resume(); // riceve il prossimo comando } } //--------------------------------------------------------------------------------------------- Prima di compilare il suddetto programma bisogna scaricare ed installare la libreria IRremote.zip, reperibile qui: https://www.pjrc.com/teensy/td_libs_IRremote.html Per installarla bisogna aprire l’IDE, andare in sketch-> importa libreria-> add library-> download-> selezionare la cartella zippata irremote e premere apri. Subito dopo averla aperta bisogna chiudere e riaprire l’ IDE per renderla operativa.

e17bis Telecomando Tv

Embed Size (px)

DESCRIPTION

e17bis Telecomando Tv

Citation preview

  • // Arduino: generatore infrarossi, come clonare un telecomando

    17bis - generatore infrarossi come clonare un telecomando

    Un generatore di infrarossi non si differenzia, nellaspetto, da un normale diodo bianco ma emette una luce non visibile allocchio umano. In questo esercizio e stato utilizzato un modulo keyes 005 ma sarebbe possibile usare in sua vece, un normale emettitore di infrarossi limitato da una resistenza da 100 ohm (come nello schema piu avanti rappresentato). Il modulo keyes KY 005 e una basetta sulla quale e stato saldato un generatore. La basetta non contiene solo il generatore, ma anche la relativa resistenza di limitazione per cui e possibile collegarla direttamente ad Arduino. Per clonare un telecomando e necessario disporre del

    telecomando originale al fine di rilevare i codici che si vogliono replicare. In questo esercizio piloteremo un televisore riproducendo i segnali di: on/off, canale successivo e canale precedente.

    Per rilevare i codici originali sara necessario ricostruire il circuito illustrato nel precedente esercizio 16. Non si usera pero il programma dellesercizio16 ma il seguente, piu semplice e piu efficace: //----------------------------programma per rilevare i codici di comando--------------------------------------

    #include int RECV_PIN = 3; // Pin di ricezione IRrecv irrecv(RECV_PIN); void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Inizializzazione del ricevitore

    } void loop() { decode_results results; if (irrecv.decode(&results)) { // Tipi di codifica: // results.decode_type == NEC // results.decode_type == SONY // results.decode_type == HEX // results.decode_type == RC5 // results.decode_type == RC6 if (results.decode_type == NEC) Serial.println(results.value); irrecv.resume(); // riceve il prossimo comando

    } } //--------------------------------------------------------------------------------------------- Prima di compilare il suddetto programma bisogna scaricare ed installare la libreria IRremote.zip, reperibile qui: https://www.pjrc.com/teensy/td_libs_IRremote.html Per installarla bisogna aprire lIDE, andare in sketch-> importa libreria-> add library-> download-> selezionare la cartella zippata irremote e premere apri. Subito dopo averla aperta bisogna chiudere e riaprire lIDE per renderla operativa.

  • // Arduino: generatore infrarossi, come clonare un telecomando

    Una volta compilato il programma si puo procedere alla decodifica dei comandi. I segnali emessi appartengono a differenti famiglie di codifica (nec, sony, rc5, rc6) per cui, per prima cosa bisogna individuare la famiglia. Si compila quindi il programma utilizzando dapprima la famiglia SONY (sostituire SONY a NEC nella riga 19: if (result.decode_type==SONY)) e poi si prova a premere qualche pulsante del telecomando. Se sul monitor seriale non compare nulla significa che non abbiamo indovinato la famiglia e quindi si ricompila e si riprova utilizzando unaltra famiglia di codifica. Se riprovando compare qualcosa significa che abbiamo azzeccato la famiglia e che ora possiamo individuare i codici che ci interessano. Ogni volta che premiamo un pulsante sul monitor compaiono molti numeri, (vedi figura a lato). I numeri che ci interessano sono quelli che compaiono esattamente nel momento in cui premiamo il pulsante. Nel nostro esempio il codice che ci interessa e il 551489775. Una volta individuato il codice lo trascriviamo per poterlo poi utilizzare nel programma di simulazione del telecomando.

    Unultima dritta prima di procedere alla fase di costruzione del simulatore: i segnali ad infrarossi sono visibili allocchio elettronico di una macchina fotografica (ad esempio di un telefono). Per sapere quindi se funziona il circuito emettitore (per sapere se il generatore emette un qualche segnale) e quindi sufficiente guardarlo attraverso lo schermo di una dispositivo fotografico. Nota: Questo esercizio e questa nota sono parte di una serie che vede protagonisti arduino ed

    alcuni dei componenti ad esso collegabili. Per la maggior parte degli esercizi e anche disponibile un filmato su youtube.

    Esercizi facenti parte della raccolta

    Filmati presenti su youtube

    Informazioni su arduino e sui componenti collegabili

    Breve manuale di programmazione

    Materiali

    Un modulo keyes 005 oppure un generatore di infrarossi ed una resistenza da 100 ohm

    3 pulsanti

    3 resistenze da 10k ohm

    Un po di cavetteria

  • // Arduino: generatore infrarossi, come clonare un telecomando

    Schema

    Programma /* i codici per accendere / spegnere e cambiare canale devono essere rilevati dal telecomando normalmente utilizzato per gestire la tv (vedi programma in prima pagina) e quindi inseriti nelle variabili: accendespegni, canalesu, canalegiu */ #include IRsend irsend; // Inizializza il led ad infrarossi per il quale non deve essere dichiarata alcuna // porta di output poiche' la libreria IRremote gli assegna automaticamente la porta numero 3 long valore = 0; //variabile nella quale viene inserito il valore (il codice) del comando da generare long accendispegni = 551489775; // codice del comando "accendi/spegni" long canalesu = 551485695; // codice del comando "canale successivo" long canalegiu = 551518335; // codice del comando "canale precedente" int pulsante = 0; // variabile in cui si acquisisce lo stato del pulsante in esame void invia (void) //************ routine di invio del segnale ************* { for (int i = 1; i

  • // Arduino: generatore infrarossi, come clonare un telecomando

    void setup() { pinMode (7, INPUT); // porta collegata al pulsante accendispegni pinMode (6, INPUT); // porta collegata al pulsante canalesu pinMode (5, INPUT); // porta collegata al pulsante canalegiu

    } void loop() { pulsante = digitalRead (7); //verifica pulsante accendispegni if (pulsante == HIGH) { valore = accendispegni; invia(); } pulsante = digitalRead (6); //verifica pulsante canalesu if (pulsante == HIGH) { valore = canalesu; invia(); } pulsante = digitalRead (5); //verifica pulsante canalegiu if (pulsante == HIGH) { valore = canalegiu; invia(); } }