Arduino e telecomando infrarossi

Vediamo come possiamo accendere/spegnere una semplice bajour oppure un qualsiasi “apparecchio” che si colleghi alla rete elettrica di casa, tramite Arduino, un sensore ricevitore ad infrarossi, un normale telecomando ad infrarossi come ad esempio quello della TV o dello stereo ecc… ed una scheda (fatta in casa) con uno o più relè.

Io per questo esempio ho usato un normalissimo portalampada E27 con due fili volanti ed una spina, voi se non avete a portata di mano qualcosa del genere, potete usare tranquillamente una normalissima bajour, sostituendogli l’interruttore con il relè della scheda.

Per quanto riguarda invece il ricevitore infrarossi l’ho recuperato da un vecchio lettore DVD da TV.

I collegamenti

Ho collegato il primo piedino del ricevitore infrarossi al pin dove andrò a leggere il segnale infrarossi ricevuto dal telecomando,
il secondo al pin Gnd,
ed il terzo al pin 5V (di solito funzionano tra 2.7V e 5.5V ).

arduino_ricevitore_infrarossi

arduino_ricevitore_infrarossi (1)

arduino_ricevitore_infrarossi (2)

arduino_ricevitore_infrarossi (3)

Adesso prepariamo l’IDE di Arduino per poter lavorare con gli infrarossi, quindi andiamo su questo sito e scarichiamo la libreria IRremote, poi scompattiamo l’archivio scaricato e mettiamo la cartella appena estratta dentro la cartella “libraries” di Arduino.

Come facciamo adesso a dire ad Arduino, come capire quale tasto del telecomando abbiamo schiacciato??

arduino_ricevitore_infrarossi (4)

Grazie alla libreria che abbiamo scaricato in precedenza, possiamo tranquillamente decodificare il segnale ricevuto dal telecomando, in un codice esadecimale associato.

Adesso per scoprire quali codici sono associati ad ogni singolo tasto del nostro telecomando, caricate questo sketch su Arduino e lanciate il serial monitor per catturare i codici del vostro telecomando:

#include <IRremote.h> 


int receiver = 11;  
IRrecv irrecv(receiver);  
decode_results results; 


void setup() 
{
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop() 
{
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    delay(500);
    irrecv.resume(); 
  }
}

Adesso provate a schiacciate un tasto e vedrete stampato a video il codice corrispondente.
Io ad esempio con il mio telecomando, schiacciando sul tasto 1 leggo 0x97BBEEEF e schiacciando sul tasto 2 invece leggo 0x93B864D.

Che poi ho scelto come tasti per accendere e spegnere la luce.

Adesso che abbiamo individuato i codici corrispondenti ai tasti di nostro interesse, dobbiamo dire ad Arduino “Quando ricevi il seguente codice aziona il relè”. Quindi caricate lo sketch qui sotto indicando nel codice il pin di output dove è collegato il relè……. io ho scelto il pin 7:

#include <IRremote.h>


#define relay 7
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;


void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(relay, OUTPUT);
}

void loop() 
{
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume();
  }

  // se ho schiacciato il tasto 1 sul mio telecomando accendo la luce
  if ( results.value == 0x97BBEEEF ) {
    digitalWrite(relay, HIGH);
  }

  // se ho schiacciato il tasto 2 sul mio telecomando spengo la luce
  if ( results.value == 0x93B864D ) {
    digitalWrite(relay, LOW);
  }
}

La scheda relè autocostruita

scheda_rele_autocostruita (1)

scheda_rele_autocostruita

A questo link invece trovate l’articolo che spiega come collegare il relè ad Arduino.

Ed in fine ho realizzato questo piccolo video:

10 Risposte a “Arduino e telecomando infrarossi”

  1. Premetto. non so se lo hai già ricevuto ho fatto un pò di caos

    Ciao, avevo bisogno di scoprire i codici di un IR per utilizzarlo con Arduino e ho visto il tuo esempio “Arduino e telecomando infrarossi”. Lo ho subito utilizzato dopo aver scaricato e installato la libreria “IR Remote, ho copiato il tuo codice su Arduino, ma durante la compilazione mi da sempre un errore

    “”
    Arduino:1.6.3 (Windows 7), Scheda:”Arduino Uno”

    C:\Program Files\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‘TKD2’ was not declared in this scope

    int RECV_PIN = TKD2; // the pin the IR receiver is connected to

    ^

    Multiple libraries were found for “IRremoteInt.h”

    Used: D:\Documenti\Arduino\Sketch\libraries\Arduino-IRremote-master

    Not used: C:\Program Files\Arduino\libraries\RobotIRremote

    “”

    Ho ricontrollato più volte il codice ma non ho trovato nulla di errato

    Puoi aiutarmi cortesemente a capire qual’è il problema?

    Grazie in anticipo

    Cordialmente

    P.S.
    Ho una discreta conoscenza di Elettronica e d Informatica , però è da poco tempo che mi stò cimentando con Arduino, è Geniale.

    Bob49

      1. Bingo, funziona tutto. Grazie molto Antonio, se avrò bisogno ti contatterò in futuro, sempre che non disturbo

        Cordialmente

        Bob

  2. Ciao a tutti, ho provato la tua guida ma quando inserisco i miei codice del telecomando lui mi dà un errore:

    Was not declared in this scope?

  3. Ciao a tutti, sto provando la tua guida inserendola nel mio programmino dove con il Bluetooth attivo i rele’ ma quando cambio i tuoi codici del telecomando con i miei lui mi dà un errore:
    Was not declared in this scope

    1. Ciao,
      sembra che manchi l’ “include” di qualche libreria….
      Hai scaricato ed aggiunto le librerie necessarie all’IDE di Arduino???

      1. Ciao, se possibile ti invierei il programma, non ho molta conoscenza sono alle prime armi,
        nel tuo programma sto cercando di far attivare il rele’ solo per mezzo secondo, a casa ho gia l’impianto ad inpulsi,non necessito di un tasto per spegnere ma ripremendo lo stesso tasto,l’impulso lo spegnerebbe, oltre a questo sto cercando di inserirlo in un programma comandato dal bluetooth ma nella verifica tutto ok invece nella pratica credo che vadano in conflitto le uscite, NON FA NULLA

        1. Ti ho inviato una mail …
          Mandami il tuo codice, provo a dargli un’occhiata.

          1. Ti ho inviato 2 email, nella seconda ti chiedo se puoi modificare il tuo programma aggiungendo il tempo nel segnale d’uscita . Ho un impianto già con il rele, lo stesso segnale accende e spegne la luce ma non deve essere in continuo ma staccarsi dopo circa mezzo secondo.

I commenti sono chiusi.