11. Infrapunavastaanotin/ kaukosäätimen vastaanotin

Alunperin julkaistu: 17.6.2017

Viimeksi muokattu: torstai 4.2.2021

Arduinosetissä mukana tullut infrapunavastaanotin otetaan nyt käyttöön ja tehdään Arduinolle ohjelma, joka tulkitsee lähetetyt infrapunaviestit. Ehkä selvemmin kuitenkin sanottu jos puhutaan kaukosäätimen vastaanottimesta.

Vastaanottimen komponenttina käytetään kolmijalkaista VS1838 IR-vastaanotinta, minkä pinnijärjestys on sama mikä lähes kaikissa IR-vastaanottimista löytyy:

Out-pinni kytketään Arduinon haluttuun pinniin, tässä tapauksessa pinniin numero 7.

Kytkentä

Kytkentä kokonaisuudessaan on hyvin yksinkertainen, alla olevan kuvan mukainen:

Vastaanottimelle kytketään 5 volttia (punainen), maajohto (musta) sekä OUT-signaalin johto (keltainen), mistä Arduino lukee IR-vastaanottimen havaitseman datan.

Ohjelma

Arduinon ohjelma aloitetaan lataamalla tarvittavat kirjastot internetistä osoitteesta http://z3t0.github.io/Arduino-IRremote/ . Kun tiedosto on ladattu, niin se lisätään Arduino IDE:n sisällä Sketch valikosta:

Seuraavaksi tehdään koodi, joka tulkitsee kauko-ohjaimen komennot:

#include <IRremote.h>

// Pinni mihin IR-vastaanotin on kytketty
int receive = 7;

// Kirjaston vaatimat muuttujat
IRrecv irrecv(receive);
decode_results results;

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

void loop() {
  if(irrecv.decode(&results)) // Onko jotain dataa vastaanotettu?
  {
    // Tarkastetaan mikä nappi oli kyseessä
    getTheIRCode();
    irrecv.resume();
  }
  else
  {
    // ei tehdä mitään
  }

}

void getTheIRCode()
{
  switch(results.value)

  {

  case 0xFFA25D:  
    Serial.println(" CH-            "); 
    break;

  case 0xFF629D:  
    Serial.println(" CH             "); 
    break;

  case 0xFFE21D:  
    Serial.println(" CH+            "); 
    break;

  case 0xFF22DD:  
    Serial.println(" PREV           "); 
    break;

  case 0xFF02FD:  
    Serial.println(" NEXT           "); 
    break;

  case 0xFFC23D:  
    Serial.println(" PLAY/PAUSE     "); 
    break;

  case 0xFFE01F:  
    Serial.println(" VOL-           "); 
    break;

  case 0xFFA857:  
    Serial.println(" VOL+           "); 
    break;

  case 0xFF906F:  
    Serial.println(" EQ             "); 
    break;

  case 0xFF6897:  
    Serial.println(" 0              "); 
    break;

  case 0xFF9867:  
    Serial.println(" 100+           "); 
    break;

  case 0xFFB04F:  
    Serial.println(" 200+           "); 
    break;

  case 0xFF30CF:  
    Serial.println(" 1              "); 
    break;

  case 0xFF18E7:  
    Serial.println(" 2              "); 
    break;

  case 0xFF7A85:  
    Serial.println(" 3              "); 
    break;

  case 0xFF10EF:  
    Serial.println(" 4              "); 
    break;

  case 0xFF38C7:  
    Serial.println(" 5              "); 
    break;

  case 0xFF5AA5:  
    Serial.println(" 6              "); 
    break;

  case 0xFF42BD:  
    Serial.println(" 7              "); 
    break;

  case 0xFF4AB5:  
    Serial.println(" 8              "); 
    break;

  case 0xFF52AD:  
    Serial.println(" 9              "); 
    break;

  default: 
    Serial.println(" other button   ");

  }

  delay(500);
}

Mikäli koodin kirjoittamisen jälkeen kääntämisvaiheessa tulee virheilmoituksia, niin täytyy RobotIRremote -kirjasto poistaa Arduinon asennuskansiosta.

Kun koodi on saatu onnistuneesti Arduinolle ladattua, nähdään vastaanotetut kaukosäätimen komennot sarjamonitorista:

Kuten nähdään, niin ei ole kovin vaikea homma, koska taustatyötä on tehty paljon muiden toimesta. Siitä iso kiitos heille.

Seuraava osa: 12. RFID-tagien luku Arduinolla

Linkkejä:
https://arduino-info.wikispaces.com/IR-RemoteControl