Mengendalikan LED dengan Menggunakan Remot dan IR Receiver pada Arduino

Anda pasti sudah familiar dengan remot kontrol. Atau bahkan mungkin tiap hari anda menggunakannya ketika berada di depan TV. Hanya dengan memencet tombol, maka TV bisa dipindahkan channel-nya, bisa dikerasin/dikecilin suaranya. Kali ini saya akan menulis tentang kendali LED menggunakan remot kontrol. Tulisan ini sebagai dasar kendali perangkat tanpa kabel (wireless/nirkabel). Saya tidak begitu tahu penjelasan ilmiah mendalam tentang sinar inframerah. Yang pasti dia adalah sejenis gelombang cahaya. Pancaran sinarnya lurus, jadi mengarahkan remot harus lurus ke TV. Meskipun tidak begitu lurus masih bisa berefek, itu karena pada pada IR LED terdapat penampang yang mirip penampang lampu sorot.

IR LED (Infrared Light Emitting Diode)

Komponen elektronika yang berfungsi untuk memancarkan sinar inframerah disebut IR LED. Ya, dia adalah sejenis LED, tapi ketika dialirkan listrik tidak menyala. Juga punya 2 kaki, yaitu anoda dan katoda.

Karena yang dia pancarkan adalah sinar inframerah yang tidak bisa dilihat pancarannya menggunakan mata. Ada cara untuk melihat pancaran sinar inframerah, yaitu dengan menggunakan kamera. Jika anda memencet tombol remot sambil diarahkan ke kamera handphone, maka anda bisa lihat, IR LED pada remot memancarkan cahaya yang berkedip-kedip.

Karena tidak terlihat oleh mata, maka sinar inframerah ini digunakan sebagai alat penerangan pada kamera night vision, kamera yang bisa menampilkan objek dalam kegelapan. Anda bisa lihat pada pinggiran kameranya terdapat segerombol IR LED.

IR Reveiver

Komponen elektronika yang berfungsi sebagai penerima sinar inframerah adalah IR receiver. Mempunyai 3 kaki, yaitu GND, VCC dan OUT. Berwarna hitam dan dibungkus oleh besi, mungkin supaya penerimaan hanya satu arah dan permukaan lainnya menjadi gelap sebagai peredam.

Karena sebagai penerima, maka komponen ini diletakkan pada perangkat yang akan dikendalikan menggunakan remot. Tentu saja di bagian depan TV itu ada. Kalau itu ditutupi, maka TV-nya tidak bisa diremot.

Teknologi IR ini juga dulunya dipakai pada handphone jadul sebagai media transfer data. Dulu HP Nokia saya ada IR-nya. Kalau mau trasfer data pakai IR, harus dengan HP yang ada IR-nya juga. HP harus saling dihadapin IR-nya. Kalau dalam proses transfer bergeser, maka proses transfer jadi gagal. Sangat repot ya dulu itu, waktu belum ada bluetooth. Walaupun begitu, tidak mengapa kita pelajari juga tentang IR. Karena saat ini, kontrol IR masih tetap digunakan sampai sekarang.

Prinsip Kerja

Di sini, saya tidak akan menjelaskan bagaimana prinsip kerja remot secara detail. Tapi saya bisa jelaskan sedikit bahwa setiap tombol pada remot telah diberikan kode. Ketika tombol remot ditekan, IR LED memancarkan sinyal digital yang telah di-encode. Di dalam sinyal itu terdapat kode perintah dari tombol dan header remot. Isi header diantaranya adalah protokol yang digunakan oleh remot.

IR receiver yang menerima sinyal akan membaca bagian header terlebih dahulu untuk menemukan jenis protokol yang digunakan oleh remot. Setelah itu, protokol tadi digunakan untuk menemukan kode perintah dari tombol yang ditekan pada remot. Kalau sudah menemukan kode perintah, maka perintah dilakukan. Pada TV biasanya protokol ini dikunci agar remot hanya bisa mengendalikan TV dengan merk yang sama.

Perlu diingat bahwa IR LED dan IR receiver di sini hanya berfungsi untuk memancarkan dan menerima sinar inframerah. Yang melakukan proses adalah bagian prosessor. Pada eksperimen kali ini, saya menggunakan Arduino UNO sebagai pemroses. Arduino tentunya tidak ada batasan memakai remot IR apapun.

Bahan-bahan yang digunakan :

  1. Arduino UNO R3
  2. IR receiver
  3. LED 3 buah
  4. Kabel jumper secukupnya
  5. Breadboard

Skema rangkaian kendali LED dengan remot kontrol

Gambar 1. Skema rangkaian

Pada eksperimen kali ini, saya ingin mengendalikan nyala 3 buah LED dengan menggunakan remot. Kondisi yang ingin saya buat adalah :

  1. Ketika saya menekan tombol angka 1 pada remot, maka LED A yang akan menyala.
  2. Ketika saya menekan tombol angka 2 pada remot, maka LED B yang akan menyala.
  3. Ketika saya menekan tombol angka 3 pada remot, maka LED C yang akan menyala.

Untuk mengupload program ke Arduino yang berhubungan dengan IR, library IR harus didownload terlebih dahulu. Bisa didownload pada link https://github.com/cyborg5/IRLib. Jika tidak tahu bagaimana mendownload di Github lalu menambahkan library pada aplikasi Arduino, bisa mengikuti langkah ini :

  1. Pada link di Github, temukan tombol Clone or download, lalu klik.
  2. Klik Download ZIP untuk mendownload.
  3. Setelah file ZIP didownload, dari aplikasi Arduino, klik Sketch > Import Library ... > Add Library ....
  4. Browse ke lokasi folder file ZIP tadi didownload dan klik file ZIP-nya dan klik tombol Open.
  5. Aplikasi Arduino akan membaca file ZIP tersebut dan jika telah berhasil, maka nama library akan terlihat pada menu Sketch > Import Library > IRLib-master.
  6. Klik menu IRLib-master untuk menggunakan library tersebut.

Sebelumnya harus dicari tahu, angka heksadesimal dari tombol pada remot yang ingin digunakan. Caranya adalah dengan menggunakan kode perintah ini :

#include 

int RECV_PIN = 11;

IRrecv My_Receiver(RECV_PIN);

IRdecode My_Decoder;
unsigned int Buffer[RAWBUF];

void setup()
{
Serial.begin(9600);
My_Receiver.enableIRIn();
My_Decoder.UseExtnBuf(Buffer);
}

void loop() {
if (My_Receiver.GetResults(&My_Decoder)) {
My_Decoder.decode();
Serial.println(My_Decoder.value, HEX);
My_Receiver.resume();
}
}

Berikut adalah langkah-langkah untuk mengetahui nilai heksadesimal dari tombol pada remot yang ingin digunakan :

  1. Upload programnya ke mikrokontroller.
  2. Buka Serial monitor melalui menu Tools > Serial Monitor atau tekan Ctrl+Shift+M pada keyboard.
  3. Arahkan remot ke IR receiver dan tekan sebuah tombol.
  4. Perhatikan output yang muncul pada serial monitor. Kode yang muncul itulah yang disebut kode heksadesimalnya. Tapi kadang muncul kode 0 atau ffffff. Jika muncul, jangan ambil kode yang itu.

Nah, kalau sudah menemukan kode heksadesimal tiap tombol remot yang akan digunakan, maka lanjut untuk menulis perintah pengendalian LED. Ketika ditulis pada kode, maka kode heksadesimal yang ditemukan tadi ditambahkan 0x di depannya, karena begitulah cara menulis angka heksadesimal pada bahasa C++.

#include 

int RECV_PIN = 11;
int LED_A = 10;
int LED_B = 9;
int LED_C = 8;

IRrecv My_Receiver(RECV_PIN);

IRdecode My_Decoder;
unsigned int Buffer[RAWBUF];

void setup()
{
My_Receiver.enableIRIn();
My_Decoder.UseExtnBuf(Buffer);
pinMode(LED_A, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(LED_C, OUTPUT);
}

void loop() {
if (My_Receiver.GetResults(&My_Decoder)) {
My_Decoder.decode();
switch (My_Decoder.value) {
case 0xff30cf: // Tombol angka 1
digitalWrite(LED_A, HIGH);
digitalWrite(LED_B, LOW);
digitalWrite(LED_C, LOW);
break;
case 0xff18e7: // Tombol angka 2
digitalWrite(LED_A, LOW);
digitalWrite(LED_B, HIGH);
digitalWrite(LED_C, LOW);
break;
case 0xff7a85: // Tombol angka 3
digitalWrite(LED_A, LOW);
digitalWrite(LED_B, LOW);
digitalWrite(LED_C, HIGH);
break;
}
My_Receiver.resume();
}
}

Kode program di atas sudah diupload ke mikrokontroller, dan ketika saya tekan tombol angka 1, maka LED A yang menyala. Sebagaimana kondisi yang ingin saya buat. Anda dapat berkreasi sendiri pada project anda atau mungkin mengganti LED dengan komponen lainnya, misalnya relai, stepper motor, dll.

Percobaan LED kontrol dengan remot

Gambar 2. Percobaan langsung pada breadboard

Sekian isi tulisan saya tentang eksperimen kali ini. Nantikan tulisan saya pada eksperimen selanjutnya. Tetap ikuti terus update selanjutnya untuk eksperimen yang lebih menarik. Terimakasih telah membaca tulisan ini.

Our Location

company 1
company 2
company 3
company 4