Home » Blog » Tutorial Arduino Remote Control Infrared HX1838 NEC Protocol – Bahasa Indonesia

Tutorial Arduino Remote Control Infrared HX1838 NEC Protocol – Bahasa Indonesia

Remote Control Infrared banyak diterapkan dengan perangkat apapun, diantaranya untuk mengendalikan TV, radio, AC dan sebagainya.

Modul remote control infrared masih digunakan, meskipun ada cara yang lebih canggih seperti Wifi untuk mengendalikan perangkat dari jarak jauh. Melalui jaringan Wifi, perangkat bisa dikendalikan baik melalui browser ataupun smartphone.

Namun jika sinyal Wifi, baik dari router maupun smartphone, tidak tersedia, kita ingin memiliki cara lain agar kita tetap bisa mengendalikan perangkat kita.

Misalnya dengan modul remote control infra red ini. Yah bisa digunakan sebagai alat kendali utama atau pelengkap.

Tutorial video ini menjelaskan secara detil mengenai modul HX 1838, salah satu modul remote control infrared tersebut. Tutorial cara melakukan perangkaian dan membuat kode program dibagi menjadi tiga.

Bagian pertama menjelaskan rangkaian dan kode progam sederhana hanya dengan menggunakan modul remote control-nya.

Bagian kedua menjelaskan bagaimana remote control HX 1838 bisa digunakan untuk mengendalikan lampu LED.

Bagian ketiga menjelaskan bagaimana remote control yang lainnya juga bisa digunakan untuk mengendalikan lampu LED.

Skema

Library

GitHub – Arduino-IRremote/Arduino-IRremote: Infrared remote library for Arduino: send and receive infrared signals with multiple protocols

Kode 1


// Protus Tanuhandaru
// www.progresstech.co.id

#include <IRremote.h> // Memanggil library remote control infrared
int penerima = 2; // PIN 2 sebagai penerima sinyal dari Infrared receiver
IRrecv penerimaIR(penerima); // Melakukan inisiasi untuk menerima sinyal infrared
decode_results hasil;  //Hasil di-decode dan disimpan dalam variabel

void setup() {
  Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
  penerimaIR.enableIRIn(); // Memulai proses penerimaan data
}

void loop() {
  if(penerimaIR.decode(&hasil)) { // Memberikan 0 jika tidak ada data. 1 jika ada

    // Menampilkan konten melalui Serial Monitor
    Serial.print("Kode IR: "); 
    Serial.print(hasil.value, HEX); 
    Serial.print(" | Jumlah bit : "); 
    Serial.print(hasil.bits); 
    Serial.print(" | Raw BUF : "); 
    Serial.print(uint32_t(hasil.rawbuf)); 
    Serial.print(" | Jumlah items : "); 
    Serial.println(hasil.rawlen); 

    // Melakukan perbandingan berdasarkan jenis protokol remote control infrared
    switch (hasil.decode_type){
            case NEC: Serial.println("NEC"); break ;
            case SONY: Serial.println("SONY"); break ;
            case RC5: Serial.println("RC5"); break ;
            case RC6: Serial.println("RC6"); break ;
            case DISH: Serial.println("DISH"); break ;
            case SHARP: Serial.println("SHARP"); break ;
            case JVC: Serial.println("JVC"); break ;
            case SANYO: Serial.println("SANYO"); break ;
            case SAMSUNG: Serial.println("SAMSUNG"); break ;
            case LG: Serial.println("LG"); break ;
            case WHYNTER: Serial.println("WHYNTER"); break ;
            case PANASONIC: Serial.println("PANASONIC"); break ;
            case DENON: Serial.println("DENON"); break ;
          default:
            case UNKNOWN: Serial.println("UNKNOWN"); break ;
          }
    
    penerimaIR.blink13(true); // Menyalakan LED yang ada pada board Arduino
    penerimaIR.resume(); // Mengulangi proses pengiriman dan penerimaan untuk nilai berikutnya
  }
}

Kode 2

// Protus Tanuhandaru
// www.progresstech.co.id

#include <IRremote.h> // Memanggil library remote control infrared
int penerima = 2; // PIN 2 sebagai penerima sinyal dari Infrared receiver
int PIN_LED = 13; // PIN 13 sebagai PIN LED
IRrecv penerimaIR(penerima); // Melakukan inisiasi untuk menerima sinyal infrared
decode_results hasil;  //Hasil di-decode dan disimpan dalam variabel
#define tombolNyala 0xFFA25D
#define tombolMati 0xFF629D

void setup() {
  Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
  pinMode(PIN_LED,OUTPUT); //PIN 13 sebagai output yang menyalakan atau mematikan LED
  penerimaIR.enableIRIn(); //Memulai proses penerimaan data infrared
}

void loop() {
  if(penerimaIR.decode(&hasil)) { // Memberikan 0 jika tidak ada data. 1 jika ada
    
    Serial.print("Kode IR: ");
    Serial.print(hasil.value, HEX); 
    Serial.print(" | Jumlah bit : ");
    Serial.print(hasil.bits);
    Serial.print(" | Array : ");
    Serial.print(uint32_t(hasil.rawbuf));
    Serial.print(" | Jumlah items : ");
    Serial.println(hasil.rawlen);

    // Melakukan perbandingan berdasarkan jenis protokol remote control infrared
    switch (hasil.decode_type){
            case NEC: Serial.println("NEC"); break ;
            case SONY: Serial.println("SONY"); break ;
            case RC5: Serial.println("RC5"); break ;
            case RC6: Serial.println("RC6"); break ;
            case DISH: Serial.println("DISH"); break ;
            case SHARP: Serial.println("SHARP"); break ;
            case JVC: Serial.println("JVC"); break ;
            case SANYO: Serial.println("SANYO"); break ;
            case SAMSUNG: Serial.println("SAMSUNG"); break ;
            case LG: Serial.println("LG"); break ;
            case WHYNTER: Serial.println("WHYNTER"); break ;
            case PANASONIC: Serial.println("PANASONIC"); break ;
            case DENON: Serial.println("DENON"); break ;
          default:
            case UNKNOWN: Serial.println("UNKNOWN"); break ;
          }

    // Perbandingan nilai tombol
    switch(hasil.value) {
      case tombolNyala : digitalWrite(PIN_LED, HIGH);
      break;
      case tombolMati : digitalWrite(PIN_LED, LOW);
      break;
    }
    penerimaIR.resume(); // Mengulangi proses pengiriman dan penerimaan untuk nilai berikutnya
  }
}

Kode 3

// Protus Tanuhandaru
// www.progresstech.co.id

#include <IRremote.h> // Memanggil library remote control infrared
int penerima = 2; // PIN 2 sebagai penerima sinyal dari Infrared receiver
int PIN_LED = 13; // PIN 13 sebagai PIN LED
IRrecv penerimaIR(penerima); // Melakukan inisiasi untuk menerima sinyal infrared
decode_results hasil;  //Hasil di-decode dan disimpan dalam variabel
#define tombolNyala 0xFFA25D
#define tombolMati 0xFF629D
#define tombolNyalaRemoteLain 0xCF3E11E
#define tombolMatiRemoteLain 0xCF3619E

void setup() {
  Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
  pinMode(PIN_LED,OUTPUT); //PIN 13 sebagai output yang menyalakan atau mematikan LED
  penerimaIR.enableIRIn(); // Memulai proses penerimaan data
}

void loop() {
  if(penerimaIR.decode(&hasil)) { // Memberikan 0 jika tidak ada data. 1 jika ada
    
    Serial.print("Kode IR: ");
    Serial.print(hasil.value, HEX); 
    Serial.print(" | Jumlah bit : ");
    Serial.print(hasil.bits);
    Serial.print(" | Array : ");
    Serial.print(uint32_t(hasil.rawbuf));
    Serial.print(" | Jumlah items : ");
    Serial.println(hasil.rawlen);

    // Melakukan perbandingan berdasarkan jenis protokol remote control infrared
    switch (hasil.decode_type){
            case NEC: Serial.println("NEC"); break ;
            case SONY: Serial.println("SONY"); break ;
            case RC5: Serial.println("RC5"); break ;
            case RC6: Serial.println("RC6"); break ;
            case DISH: Serial.println("DISH"); break ;
            case SHARP: Serial.println("SHARP"); break ;
            case JVC: Serial.println("JVC"); break ;
            case SANYO: Serial.println("SANYO"); break ;
            case SAMSUNG: Serial.println("SAMSUNG"); break ;
            case LG: Serial.println("LG"); break ;
            case WHYNTER: Serial.println("WHYNTER"); break ;
            case PANASONIC: Serial.println("PANASONIC"); break ;
            case DENON: Serial.println("DENON"); break ;
          default:
            case UNKNOWN: Serial.println("UNKNOWN"); break ;
          }

    // Perbandingan nilai tombol
    switch(hasil.value) {
      case tombolNyala : digitalWrite(PIN_LED, HIGH);
      break;
      case tombolNyalaRemoteLain : digitalWrite(PIN_LED, HIGH);
      break;
      case tombolMati : digitalWrite(PIN_LED, LOW);
      break;
      case tombolMatiRemoteLain : digitalWrite(PIN_LED, LOW);
      break;
    }
    penerimaIR.resume(); // Mengulangi proses pengiriman dan penerimaan untuk nilai berikutnya
  }
}

Leave a Reply

Your email address will not be published. Required fields are marked *