Skip to content Skip to sidebar Skip to footer

IR Remote Arduino Cara Terima Data Dari VS1838B atau TL1838

IR Remote Arduino Cara Terima Data Dari VS1838B atau TL1838 - Sebelumnya saya sudah membuat artikel komponen IR Remote TSOP1738 buatan Vishay.

Hari ini saya mencoba penerima infrared yang sangat murah yaitu VS1838B atau TL1838. Komponen ini sangat banyak dan mudah dicari. Modul-modul remote control arduino umumnya memakai penerima infrared ini. 

Untuk dapat membaca data infrared yang datang, kita terlebih dahulu mengetahui protokol yang digunakan. Protokol secara sederhananya adalah bahasa komunikasi yang digunakan.

Ada 4 Protokol IR Remote yang paling umum digunakan yaitu protokol NEC, SONY, RC5 dan RC6. Salah satu penerima inframerah atau ir receiver remote control adalah TSOP1738 .
VS1838B Pin Out


A. Latar Belakang

VS1838B merupakan salah satu receiver IR yang diproduksi oleh Shenzhen Lanfeng Technology (LFN). Komponen ini telah memiliki photo dioda dan IC tertanam   dalam satu kemasan, jadi dapat digunakan langsung pada microprocessor atau mikrokontroller.


Fitur TSOP1738:
  • Paket resin epoksi dan desain anti-interferensi pelindung eksternal;
  • Tegangan kerja yang lebar, 2.7-5.5V;
  • Konsumsi daya rendah, penerimaan sudut lebar dan jarak jauh;
  • Kemampuan anti-interferensi yang kuat, dapat menahan interferensi lingkungan;
  • Output sesuai dengan TTL, level CMOS, level rendah efektif.

Rating Nilai Maksimum:

  • Tegangan Supply  hingga 5.5V
  • Jarak deteksi hingga 15M
  • Arus Supply hingga 1.5mA
  • Tegangan Output hingga 4.5V


B. Rangkaian VS1838B Arduino

Sekarang mari kita buat pengujian terhadap VS1838B ir remote arduino. Untuk dapat berkomunikasi antara VS1838B dan Arduino, silahkan hubungkan keduanya seperti pada rangkaian berikut.

Rangkaian VS1838B Arduino Uno


Jika anda pemula dan merasa belum terbiasa dengan rangkaian diatas, anda dapat mencoba ir receiver module yang telah banyak dijual dipasaran.

C. Library IR Remote

Setelah rangkaian IR Remote Arduino selesai dibuat, silahkan download library untuk arduino ir. Library ini akan memudahkan kita mengkonversi sinyal yang diterima oleh photo detektor menjadi data Hexadesimal.


Setelah itu, masukkan library yang sudah di download dengan cara:
  • Buka Arduino IDE
  • Klik Sketch -> Include Library -> add .ZIP library
  • Arahkan dan Pilih library yang telah anda download
  • Lalu klik OK

Pada library ini telah terdapat perintah-perintah dasar yang sangat berguna dalam pengeporasian kode. Berikut adalah perintah-perintahnya.

Perintah Untuk Penerima:
  • IRrecv irrecv(receivePin)
    Buat objek penerima, menggunakan nama pilihan Anda.
  • irrecv.enableIRIn()
    Mulailah proses penerimaan. Ini akan mengaktifkan interupsi pengatur waktu yang mengkonsumsi sejumlah kecil CPU setiap 50 ┬Ás.
  • irrecv.decode(&results)
    Mencoba menerima kode IR. Mengembalikan nilai benar jika kode telah diterima, atau salah jika belum ada yang diterima. Ketika kode diterima, informasi disimpan ke dalam "hasil".
    results.decode_type: Akan menjadi salah satu dari berikut ini: NEC, SONY, RC5, RC6, atau UNKNOWN.
    results.value: Kode IR aktual (0 jika tipe TIDAK DIKETAHUI)
    results.bits: Jumlah bit yang digunakan oleh kode ini
    results.rawbuf: Sebuah array waktu pulsa IR
    results.rawlen: Jumlah item yang disimpan dalam array
  • irrecv.resume()
    Setelah menerima, ini harus dipanggil untuk mengatur ulang penerima dan mempersiapkannya untuk menerima kode lain.
  • irrecv.blink13(true)
    Aktifkan kedipan LED saat selama penerimaan. Karena Anda tidak dapat melihat cahaya inframerah, mengedipkan LED dapat berguna saat memecahkan masalah, atau hanya untuk memberikan umpan balik visual.

Perintah Untuk Pengirim:
  • IRsend irsend;
    Buat objek transmisi. Nomor pin tetap selalu digunakan, tergantung pada timer mana yang digunakan perpustakaan.
  • irsend.sendNEC(IRcode, numBits);
    Kirim kode dalam format NEC.
  • irsend.sendSony(IRcode, numBits);
    Kirim kode dalam format SONY.
  • irsend.sendRC5(IRcode, numBits);
    Kirim kode dalam format RC5.
  • irsend.sendRC6(IRcode, numBits);
    Kirim kode dalam format RC6.
  • irsend.sendRaw(rawbuf, rawlen, frequency);
    Kirim kode mentah. Biasanya Anda akan mendapatkan konten rawbuf dan rawlen dengan menggunakan penerima berkali-kali dan merata-ratakan hasilnya.

    Beberapa penyesuaian mungkin diperlukan untuk kinerja terbaik. Frekuensi adalah frekuensi filter bandpass yang diharapkan di penerima, di mana 38 adalah yang paling umum digunakan.

D. Progam VS1838B Arduno

1. Program Dasar Menerima Data IR Remote

Baik... setelah kita memasukkan library, kita akan melihat program dasar dari penerimaan data. Berikut adalah program dasarnya. Silahkan upload ke Arduino.

Progam:

#include <IRremote.h>
const int RECV_PIN = 2; //Tentukan pin 2 sebagai input dari VS1838B
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
//Mulai aktifkan protokol IR
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
//Menampilkan data pada seria monitor
Serial.println(results.value, HEX);
// Menerima data selanjutnya
irrecv.resume();
}
}

Setelah upload selesai, buka serial monitor arduino IDE. Pastikan baudrate dipilih pada nilai 9600 (bagian kanan bawah serial monitor).

Sekarang arahkan dan tekan salah satu remote. Maka pada serial monitor akan menampilkan alamat dengan nilai Hexadesimal.


2. Melihat Jenis Protokol IR Remote

Sekarang, kita akan mencoba melihat protokol yang digunakan oleh remote anda. Seperti yang dijelaskan diatas, ada 4 protokol IR remote yang digunakan yaitu NEC, SONY, RC5 dan RC6.

Program dibawah ini akan membaca jenis protokol pada remote yang anda gunakan, kemudian akan ditampilkan pada serial monitor. Silahkan upload program berikut.

Program:

#include <IRremote.h>
const int RECV_PIN = 2; //Tentukan pin 2 sebagai input dari VS1838B
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); //Mulai aktifkan protokol IR
irrecv.blink13(true); //Hidupkan LED internal jika ada data masuk
}
void loop() {
if (irrecv.decode(&results)) {
if (results.decode_type == NEC) {
Serial.print("Protokol NEC: ");
} else if (results.decode_type == SONY) {
Serial.print("Protokol SONY: ");
} else if (results.decode_type == RC5) {
Serial.print("Protokol RC5: ");
} else if (results.decode_type == RC6) {
Serial.print("Protokol RC6: ");
} else if (results.decode_type == UNKNOWN) {
Serial.print("Protokol tidak diketahui: ");
}
Serial.println(results.value, HEX);
irrecv.resume(); // Menerima data selanjutnya
}
}

Setelah upload selesai, silahkan tekan tombol pada remote dan arahkan ke IR Remote Arduino     VS1838B. Anda akan melihat jenis protokol yang anda gunakan pada serial monitor.


3. Menghidupkan LED RGB Menggunakan Remote

Setelah anda memahami dua progrma diatas, kita akan mencoba menghidupkan 3 LED menggunakan remote.

Untuk menghidupkan 3 LED Merah Hijau dan Biru kita butuh tiga tombol. Katakanlah kita telah  menentukan 3 alamat hex untuk remote:

  • Data hex 0xFF30CF untuk warna merah
  • Data hex 0xFF18E7 untuk warna hijau
  • Data hex 0xFF7A85 untuk warna biru

Untuk rangkaiannya, silhkan hubungkan LED Merah ke pin 12, LED Hijau pada pin 11, dan LED biru pada pin 10. Jangan lupa gunakan resistor 330R.

Silahkan anda upload program berikut pada Arduino anda. Silahkan anda tekan tombol 1, 2, atau 3 remote anda. 

Program:

#include <IRremote.h>
const int RECV_PIN = 2; //Tentukan pin 2 sebagai input dari VS1838B
int ledMerah = 12;
int ledHijau = 11;
int ledBiru = 10;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); //Mulai aktifkan protokol IR
irrecv.blink13(true); //Hidupkan LED internal jika ada data masuk
pinMode(ledMerah, OUTPUT);
pinMode(ledHijau, OUTPUT); pinMode(ledBiru, OUTPUT);
}
void loop() {
//Data hex 0xFF30CF untuk warna merah
//Data hex 0xFF18E7 untuk warna hijau
//Data hex 0xFF7A85 untuk warna biru
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if (results.value == 0xFF30CF)
{
digitalWrite(ledMerah, HIGH);
digitalWrite(ledHijau, LOW);
digitalWrite(ledBiru, LOW);
}
if (results.value == 0xFF18E7)
{
digitalWrite(ledMerah, LOW);
digitalWrite(ledHijau, HIGH);
digitalWrite(ledBiru, LOW);
}
if (results.value == 0xFF7A85)
{
digitalWrite(ledMerah, LOW);
digitalWrite(ledHijau, LOW);
digitalWrite(ledBiru, HIGH);
}
irrecv.resume(); // Menerima data selanjutnya
}
}


E. VS1838B Datasheet

Untuk lebih lengkap tentang VS1838B, anda dapat melihat datasheet VS1838B dibawah ini.

Terima kasih telah mengunjungi website Chip Piko. Semoga bermanfaat.

Sumber: www.pjrc.com

Post a Comment for "IR Remote Arduino Cara Terima Data Dari VS1838B atau TL1838"