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.

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.
Spesifikasi (VS1838B)
| Fitur | Nilai |
|---|---|
| Frekuensi pembawa | 38 kHz |
| Panjang gelombang | Sekitar 940 nm |
| Catu daya | 2,7–5,5 V |
| Jangkauan | 8–10 m (tergantung baterai remote dan sudutnya) |
| Sudut pandang | Sekitar ±35° |
| Output | LOW selama ada sinyal (active LOW) |
| Pin | OUT, GND, VCC |
Pengkabelan penerima IR
| Pin penerima | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| OUT (S) | D2 | GPIO 15 | GP16 |
| GND (–) | GND | GND | GND |
| VCC (+) | 5V | 3V3 | 3V3 |
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.
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:
| Tombol | Perintah (NEC) |
|---|---|
| CH- | 0x45 |
| CH | 0x46 |
| CH+ | 0x47 |
| PREV | 0x44 |
| NEXT | 0x40 |
| PLAY/PAUSE | 0x43 |
| VOL- | 0x07 |
| VOL+ | 0x15 |
| 0 | 0x16 |
| 1 | 0x0C |
| 2 | 0x18 |
| 3 | 0x5E |
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?
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}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:
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:
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.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
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

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

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

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

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

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.

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.

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
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

