Komponen · 4 mnt baca

Penerima IR dan Remote: Proyek Kendali Jarak Jauh dengan Arduino

Bagaimana cara kerja penerima inframerah (IR)? Pengkabelan VS1838B, membaca kode tombol dengan library IRremote, protokol NEC, mengendalikan LED dan relay dengan remote, mengirim IR dengan LED IR, serta pemakaian di ESP32 dan Pico.

Remote TV, AC, dan perangkat audio bekerja dengan cahaya inframerah (IR). Tambahkan penerima IR yang harganya nyaris tidak ada ke Arduino, dan kamu bisa membaca tombol hampir semua remote di rumahmu lalu memakainya untuk mengendalikan lampu, LED, motor, atau musik. Tidak perlu pairing, aplikasi, atau internet; cukup arahkan remote ke board dan tekan tombol. Inilah jalan termudah dan termurah menuju proyek kendali jarak jauh pertamamu.

Penerima IR inframerah VS1838B
Penerima inframerah (VS1838B): di dalam kubah hitam ada dioda peka cahaya dan rangkaian kecil yang menerjemahkan sinyal; kakinya ada 3.

Bagaimana cara kerja remote inframerah?

LED IR di ujung remote memancarkan cahaya sekitar 940 nm yang tidak bisa dilihat mata. Cahaya ini tidak menyala terus; ia menumpang pada sinyal pembawa yang berkedip 38.000 kali per detik. Rangkaian di dalam penerima hanya memperhatikan cahaya yang berkedip pada frekuensi itu, sehingga sinar matahari dan lampu tidak bisa mengganggu sinyal. Penerima mengubah kedipan itu menjadi pulsa digital yang bersih dan menarik output-nya ke LOW selama sinyal ada.

Tombol mana yang ditekan dikodekan dalam panjang pulsa dan jeda di antaranya. Ada berbagai “bahasa” untuk ini, yang disebut protokol: yang paling umum adalah NEC (satu byte alamat dan satu byte perintah), dan protokol Sony, RC5 (Philips), serta Samsung juga sering dipakai. Untungnya, library yang menerjemahkannya; kamu tinggal membaca kode tombolnya.

Untuk mengecek apakah remote berfungsi, arahkan kamera ponselmu ke LED remote lalu tekan tombol. Cahaya inframerah yang tidak terlihat mata akan muncul di layar kamera sebagai kedipan putih keunguan.

Spesifikasi (VS1838B)

FiturNilai
Frekuensi pembawa38 kHz
Panjang gelombangSekitar 940 nm
Catu daya2,7–5,5 V
Jangkauan8–10 m (tergantung baterai remote dan sudutnya)
Sudut pandangSekitar ±35°
OutputLOW selama ada sinyal (active LOW)
PinOUT, GND, VCC

Pengkabelan penerima IR

Pin penerimaArduino UnoESP32Raspberry Pi Pico
OUT (S)D2GPIO 15GP16
GND (–)GNDGNDGND
VCC (+)5V3V33V3
Pada VS1838B polos, urutan pinnya dengan kubah menghadapmu adalah OUT, GND, VCC dari kiri ke kanan; pada modul yang dipasang di board, ikuti label yang tercetak di board. Kalau VCC dan GND tertukar, penerima akan panas dan rusak dalam hitungan detik.

Membaca kode tombol dengan library IRremote

Di Library Manager, cari IRremote dan instal library buatan Armin Joachimsmeyer. Kode di bawah bekerja dengan versi 4.x; setiap kali kamu menekan tombol, kode ini mencetak protokol, alamat, dan kode perintah ke Serial Monitor. Kalau kamu melihat perintah seperti IRrecv dan decode(&results) di contoh lama di internet, itu milik versi lama.

C++ (Arduino IDE)
1#include <IRremote.hpp>
2
3const int IR_PIN = 2;
4
5void setup() {
6  Serial.begin(9600);
7  IrReceiver.begin(IR_PIN, ENABLE_LED_FEEDBACK);   // sinyal gelince dahili LED yanar / onboard LED blinks on signal
8}
9
10void loop() {
11  if (IrReceiver.decode()) {
12    Serial.print("Komut / command: 0x");
13    Serial.println(IrReceiver.decodedIRData.command, HEX);
14    IrReceiver.printIRResultShort(&Serial);        // protokol ve adres / protocol and address
15    IrReceiver.resume();                           // sonraki tuşa hazırlan / ready for the next key
16  }
17}

Tekan tombol remote-mu satu per satu dan catat kodenya. Remote kecil 21 tombol yang ada di kit biasanya memakai protokol NEC, dan kodenya kebanyakan seperti di bawah ini; meski begitu, pastikan dengan membaca kode remote-mu sendiri:

TombolPerintah (NEC)
CH-0x45
CH0x46
CH+0x47
PREV0x44
NEXT0x40
PLAY/PAUSE0x43
VOL-0x07
VOL+0x15
00x16
10x0C
20x18
30x5E

Mengendalikan LED dan relay dengan remote

Begitu tahu kodenya, kamu bisa memberi setiap tombol tugas. Di contoh di bawah, tombol “1” menyalakan dan mematikan relay secara bergantian, sedangkan VOL+ dan VOL- mengatur kecerahan LED dengan PWM. Ketika tombol ditahan, remote mengirim sinyal ulang; untuk tugas nyala-mati kamu perlu mengabaikan sinyal ulang ini, kalau tidak relay-nya akan berkedip nyala-mati. Untuk pengkabelan relay, baca Apa Itu Modul Relay?

C++ (Arduino IDE)
1#include <IRremote.hpp>
2
3const int IR_PIN = 2;
4const int LED_PIN = 9;       // PWM pini / PWM pin
5const int RELAY_PIN = 7;     // aktif LOW röle / active-LOW relay
6
7bool relayOn = false;
8int brightness = 128;
9
10void setup() {
11  pinMode(LED_PIN, OUTPUT);
12  pinMode(RELAY_PIN, OUTPUT);
13  digitalWrite(RELAY_PIN, HIGH);
14  IrReceiver.begin(IR_PIN);
15}
16
17void loop() {
18  if (!IrReceiver.decode()) return;
19  bool repeat = IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT;   // tuş basılı tutuluyor / key held down
20  switch (IrReceiver.decodedIRData.command) {
21    case 0x0C:                               // "1": röleyi aç-kapa / toggle the relay
22      if (!repeat) {
23        relayOn = !relayOn;
24        digitalWrite(RELAY_PIN, relayOn ? LOW : HIGH);
25      }
26      break;
27    case 0x15:                               // VOL+: daha parlak / brighter
28      brightness = min(brightness + 15, 255);
29      break;
30    case 0x07:                               // VOL-: daha sönük / dimmer
31      brightness = max(brightness - 15, 0);
32      break;
33  }
34  analogWrite(LED_PIN, brightness);
35  IrReceiver.resume();                       // sonraki tuşa hazırlan / ready for the next key
36}
Di Arduino Uno, library IRremote memakai Timer2. Artinya PWM di pin 3 dan 11 serta fungsi tone() yang dipakai untuk buzzer bisa bentrok dengan library ini; hubungkan LED ke pin 5, 6, 9, atau 10.

Mengirim sinyal IR dengan Arduino

Arduino tidak hanya bisa mendengarkan remote; ia sendiri bisa menjadi remote. Hubungkan LED IR (940 nm) ke pin 3 Uno lewat resistor 100 Ω; untuk menambah jangkauan, LED bisa kamu kendalikan lewat transistor. Pertama, baca remote perangkat yang ingin kamu kendalikan dengan kode di atas untuk mengetahui alamat dan perintahnya, lalu kirim kode yang sama dari Arduino:

C++ (Arduino IDE)
1#include <IRremote.hpp>
2
3const int IR_SEND_PIN = 3;    // IR LED, 100 Ω direnç ile / IR LED with a 100 Ω resistor
4
5void setup() {
6  IrSender.begin(IR_SEND_PIN);
7}
8
9void loop() {
10  IrSender.sendNEC(0x00, 0x46, 0);   // adres, komut, tekrar sayısı / address, command, repeats
11  delay(5000);
12}

IR dengan ESP32 dan Raspberry Pi Pico

VS1838B bekerja dengan baik di 3,3 V, jadi bisa dihubungkan langsung ke ESP32 dan Pico. Library IRremote mendukung ESP32; penerimanya bisa kamu hubungkan ke pin input mana saja, misalnya GPIO 15. Dengan ESP32 kamu bisa meneruskan tekanan tombol remote ke perangkat lain lewat Wi-Fi, atau membuat “remote pintar” yang mengirim perintah dari ponselmu ke TV dengan LED IR. Di Pico dengan MicroPython, dipakai library micropython_ir buatan Peter Hinch:

MicroPython
1from machine import Pin
2from ir_rx.nec import NEC_8          # micropython_ir kütüphanesi / library (Peter Hinch)
3import time
4
5def on_key(command, address, ctrl):
6    if command >= 0:                 # negatif değerler tekrar ya da hata / negatives mean repeat or error
7        print("Komut / command: 0x{:02X}".format(command))
8
9ir = NEC_8(Pin(16, Pin.IN), on_key)  # GP16 → OUT
10
11while True:
12    time.sleep(1)

Ide proyek penerima IR dan remote

  • Lampu yang dikendalikan remote: nyalakan lampu listrik PLN lewat relay dengan tombol cadangan di remote TV-mu.
  • Remote warna: ganti warna LED RGB dengan tombol angka.
  • Mobil robot dengan remote: mobil yang dua motornya kamu kemudikan dengan tombol panah.
  • Kotak melodi: berikan nada yang berbeda untuk setiap tombol angka; untuk bagian suaranya, baca Apa Itu Buzzer?
  • Remote yang bisa belajar: rekam kode remote lain dan kirim semuanya dari satu Arduino.
  • Kunci berkode: buka kunci dengan servo ketika urutan tombol yang benar dimasukkan.

Kesalahan umum dan cara mengatasinya

  • Tidak ada kode yang masuk sama sekali: kabel OUT ada di pin yang berbeda dengan kode, kaki penerima terbalik, atau baterai remote habis; cek remote dengan kamera ponsel.
  • Kode contoh tidak bisa dikompilasi: contoh lama di internet dibuat untuk IRremote 2.x; versi 4.x memakai IrReceiver.begin() dan IrReceiver.decode().
  • Muncul kode acak: penerima mungkin menghadap sinar matahari langsung atau lampu neon; pindahkan ke tempat teduh.
  • Tombol nyala-mati bekerja dua kali: sinyal ulang tidak diabaikan; periksa flag IRDATA_FLAGS_IS_REPEAT.
  • tone() atau PWM di pin 3 dan 11 berperilaku aneh: di Uno, keduanya memakai timer yang sama (Timer2) dengan IRremote.
  • Jangkauan sangat pendek ketika mengirim dengan LED IR: kendalikan LED dengan arus lebih besar lewat transistor dan arahkan ke perangkatnya.

Penerima IR adalah cara paling sederhana dan termurah untuk mulai nirkabel; remote lama yang tergeletak di rumah pun mendapat hidup kedua di proyek barumu. Di aplikasi BlueGrays ada proyek membaca kode remote, menyalakan LED, memainkan melodi dari remote, mengendalikan lampu listrik PLN, dan membuat remote universal ESP32, lengkap dengan skema rangkaian dan kode.

Pertanyaan umum

Seberapa jauh penerima IR bisa menangkap sinyal?

Penerima seperti VS1838B bisa menangkap sinyal sampai 8–10 meter dengan remote yang bagus dan jalur pandang yang bebas. Jangkauannya memendek ketika baterai remote melemah, sudutnya makin besar, dan sekelilingnya makin terang.

Apakah semua remote bisa dipakai dengan Arduino?

Hampir semua remote inframerah yang memakai 38 kHz bisa, dan IRremote menerjemahkan sebagian besar protokol yang umum. Dengan remote yang memakai 36, 40, atau 56 kHz, jangkauannya mungkin lebih pendek. Remote yang bekerja dengan gelombang radio (seperti 433 MHz) tidak bisa dibaca dengan penerima IR.

Apakah penerima IR bekerja di bawah sinar matahari?

Filter di dalam penerima sebagian besar memblokir cahaya yang tetap, tetapi sinar matahari langsung bisa membuat penerima jenuh dan sangat mengurangi jangkauannya. Di luar ruangan, taruh penerima di tempat teduh atau di dalam tabung pelindung kecil.

Apakah remote IR bisa bekerja menembus dinding?

Tidak. Cahaya inframerah tidak bisa menembus dinding; harus ada jalur pandang antara remote dan penerima, atau permukaan tempat cahaya bisa memantul. Untuk mengendalikan perangkat di ruangan lain, pakai modul RF atau Wi-Fi.

Versi IRremote mana yang sebaiknya dipakai?

Pakai versi 4.x terbaru, yang memakai IrReceiver.begin(), IrReceiver.decode(), dan decodedIRData.command. Perintah IRrecv irrecv(pin) dan decode(&results) yang terlihat di contoh lama di internet milik versi 2.x dan tidak kompatibel dengan versi baru.

Bisakah ponselku dipakai sebagai remote?

Beberapa ponsel Android punya pemancar IR bawaan dan bisa menjadi remote dengan aplikasi yang tepat. Kalau ponselmu tidak punya IR, kamu bisa membuat halaman web di ESP32 dan mengirim perintah dari ponsel ke perangkat lewat LED IR.

Lihat semua proyek
Membaca Kode Remote Control IR
#16Pemula
Premium

Membaca Kode Remote Control IR

Setiap tombol di remote TV-mu mengirim kode rahasia lewat cahaya yang tidak bisa kamu lihat. Penerima inframerah menangkap cahaya itu, dan Arduino menulis kode setiap tombol yang kamu tekan ke layar k

4.5(39)
55
Nyala/Mati LED dengan Penerima IR dan Remote Control
#17Menengah
Premium

Nyala/Mati LED dengan Penerima IR dan Remote Control

Seperti mengendalikan tiga lampu terpisah tanpa beranjak dari kursi: tombol 1, 2, dan 3 di remote menyalakan LED biru, merah, dan hijau, sedangkan tombol 4, 5, dan 6 mematikannya dengan urutan yang sa

4.7(45)
66
Memainkan Melodi dengan Remote IR dan Buzzer
#18Pemula
Premium

Memainkan Melodi dengan Remote IR dan Buzzer

Buat kotak musik yang memainkan lagu dengan tombol remote TV. Penerima inframerah menangkap sinyal remote; satu tombol memainkan lagu video game yang ceria lewat buzzer, tombol lain lagu anak-anak yan

4.8(57)
74
Menyalakan Bohlam 220V dengan Remote Control
#21Mahir
Premium

Menyalakan Bohlam 220V dengan Remote Control

Nyalakan dan matikan bohlam sungguhan di rumahmu dengan remote TV, tanpa beranjak dari sofa. Arduino membaca sinyal cahaya tak terlihat dari remote; tombol power membuat relay berbunyi klik dan menyal

4.4(22)
30
Sistem Keamanan Laser
#23Mahir
Premium

Sistem Keamanan Laser

Persis seperti adegan perampokan dengan laser di film: sinar laser menyorot sensor cahaya, dan begitu ada orang masuk dan memutus sinarnya, LED merah menyala dan buzzer mulai berbunyi. Alarmnya tidak

4.8(60)
77
Remote Control dengan Penerima IR ESP32 (dengan Layar LCD)
#124Menengah
Premium

Remote Control dengan Penerima IR ESP32 (dengan Layar LCD)

Di proyek ini, kita memakai modul penerima IR TSOP4838 untuk menangkap sinyal dari remote TV, AC, atau remote inframerah lain dengan ESP32. Dengan library IRremote v4, kita menampilkan kode mentah bukan nol yang sudah didekode di layar LCD I2C. Contoh ini dimaksudkan untuk mengenali kode remote control; contoh ini tidak mencakup menyalakan, mematikan, atau mengatur kecerahan LED dengan remote. Titik awal yang bagus untuk mengubah remote lama menjadi kendali rumah pintar.

4.7(19)
30
Remote Universal IR ESP32 (Penerima IR + Remote Control + 3 LED + Buzzer + OLED)
#143Mahir
Premium

Remote Universal IR ESP32 (Penerima IR + Remote Control + 3 LED + Buzzer + OLED)

Dengan ESP32, kamu bisa membaca remote control IR standar dan memakainya untuk mengendalikan perangkatmu sendiri! Penerima inframerah (protokol NEC, 38 kHz) menangkap sinyal dari remote IR 20 tombol, dan setiap tombol punya aksinya sendiri: tombol 1, 2, dan 3 menyalakan dan mematikan tiga LED; tombol PWR mematikan semuanya; angka 4–9 menampilkan karakter khusus. OLED SSD1306 menampilkan tombol terakhir dengan font besar beserta penjelasan aksinya.

4.5(9)
16
Sistem Peringatan Laser
#22Menengah
Premium

Sistem Peringatan Laser

Kamu memasang pagar sinar tak terlihat, persis seperti di film. Laser menyorot sensor cahaya di sisi seberang; begitu ada orang lewat dan memutus sinarnya, LED menyala dan buzzer berbunyi, dan ketika

4.8(64)
83