Pelajaran 21/31: Menggunakan Remote Control Inframerah dengan Arduino | SunFounder Robojax
Pendahuluan
Dalam pelajaran ini, kita menjelajahi dunia menarik dari komunikasi inframerah (IR) dengan membangun proyek yang mendekode sinyal dari remote kontrol standar menggunakan Arduino. Proyek ini memungkinkan Anda untuk mendeteksi tombol mana yang ditekan pada remote IR dan memicu tindakan yang sesuai, seperti menyalakan buzzer. Kemampuan untuk berinteraksi dengan remote IR membuka berbagai aplikasi praktis, mulai dari otomatisasi rumah sederhana hingga sistem kontrol khusus.
Berikut adalah beberapa ide inspiratif tentang apa yang dapat Anda bangun dengan teknologi ini:
- Pengganti Remote Universal: Buat remote khusus untuk TV, sistem audio, atau perangkat lain yang dikendalikan IR.
- Otomatisasi Rumah: Kendalikan lampu, kipas, atau peralatan lain dengan menekan tombol pada remote standar.
- Proyek Interaktif: Bangun sistem keamanan yang memicu alarm saat tombol tertentu ditekan.
- Kontrol Robotika: Gunakan remote IR untuk mengendalikan gerakan dan tindakan robot secara nirkabel.
- Alat Bantu Aksesibilitas: Kembangkan remote tombol besar yang sederhana untuk individu dengan mobilitas terbatas.
Perangkat Keras & Komponen
Proyek ini dibangun dengan beberapa komponen sederhana, yang semuanya biasanya termasuk dalam kit pemula seperti kit SunFounder 3-in-1. Anda akan membutuhkan:
- Papan Arduino (misalnya, Uno)
- Modul penerima IR (misalnya, TSOP38238 atau sejenisnya)
- Remote kontrol IR standar (dengan baterai CR2025)
- Buzzer pasif
- Kabel jumper dan papan breadboard
Panduan Pengkabelan
Berikut adalah diagram pengkabelan sederhana untuk proyek ini. Penerima IR adalah komponen kunci. Saat Anda melihat permukaan melengkung penerima, tata letak pin adalah sebagai berikut:
- Pin Kanan: Hubungkan ke pin 5V pada Arduino.
- Pin Tengah: Hubungkan ke pin GND pada Arduino.
- Pin Kiri (Sinyal): Hubungkan ke pin digital 11 pada Arduino.
Selain itu, untuk bagian aksi dari proyek ini, hubungkan kaki positif (lebih panjang) dari buzzer ke pin digital 2 dan kaki lainnya ke GND.
Penjelasan Kode
Proyek ini mengandalkan pustaka IRremote untuk menangani tugas kompleks dalam mendekode sinyal inframerah. Kode ini disusun untuk pertama-tama mempelajari kode spesifik dari remote Anda dan kemudian menggunakannya untuk memicu tindakan. Mari kita uraikan bagian-bagian yang dapat dikonfigurasi oleh pengguna.
Pertama, kita mendefinisikan pin tempat kabel sinyal penerima IR terhubung. Ini adalah konfigurasi penting yang harus Anda sesuaikan dengan pengkabelan fisik Anda.
const int IR_RECEIVE_PIN = 11; // Tentukan nomor pin untuk Sensor IR
Dalam fungsi setup(), penerima IR diinisialisasi menggunakan pin yang baru saja kita definisikan. Ini memberi tahu pustaka untuk mulai mendengarkan sinyal pada pin tersebut.
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Mulai penerima IR
Inti dari logika pengambilan tindakan ada di dalam loop(). Kode memeriksa apakah sebuah tombol telah ditekan dan mendekodenya. Fungsi decodeKeyValue() adalah fungsi khusus yang menerjemahkan kode heksadesimal mentah dari remote menjadi string yang dapat dibaca manusia seperti "POWER" atau "MUTE". Ini adalah bagian yang akan Anda modifikasi agar sesuai dengan remote spesifik Anda. Kode contoh mendefinisikan buzzerPin dan menyalakannya hanya ketika tombol "POWER" ditekan.
const int buzzerPin = 2; // Tentukan pin untuk buzzer
// ... di dalam loop()
if (decodedValue == "POWER") {
digitalWrite(buzzerPin, HIGH); // Nyalakan buzzer
} else {
digitalWrite(buzzerPin, LOW); // Matikan buzzer
}
Cara Menggunakan: Fungsi decodeKeyValue() adalah kunci untuk menyesuaikan proyek ini. Untuk menggunakannya dengan remote Anda sendiri, Anda harus terlebih dahulu menjalankan kode dengan Serial Monitor terbuka. Tekan setiap tombol pada remote Anda dan catat nilai heksadesimal yang dicetak untuk masing-masing. Kemudian, perbarui pernyataan switch dalam fungsi decodeKeyValue() untuk memetakan nilai-nilai tersebut ke nama yang bermakna. Anda kemudian dapat menggunakan nama-nama ini dalam pernyataan if Anda untuk memicu tindakan yang berbeda, seperti yang dilakukan contoh untuk tombol "POWER".
Proyek Langsung & Demonstrasi
Setelah kode diunggah, buka Serial Monitor dengan baud rate 9600. Arahkan remote Anda ke penerima IR dan tekan sebuah tombol. Serial Monitor akan menampilkan nama tombol yang sesuai (misalnya, "POWER", "MUTE"). Untuk melihat aksi yang terjadi, tekan tombol "POWER". Anda akan mendengar buzzer menyala. Menekan tombol lain, seperti "MUTE", akan mematikan buzzer. Ini menunjukkan konsep yang sederhana namun kuat: menggunakan remote kontrol untuk memicu output digital pada Arduino Anda.
Bab
- [00:00] Pengenalan Kendali Inframerah Jarak Jauh dengan Arduino
- [01:25] Gambaran Umum Penerima dan Pemancar IR
- [02:24] Memahami Modul Penerima IR dan Pengkabelan
- [03:31] Menginstal Pustaka IRremote
- [04:22] Membuka dan Menjelaskan Kode Decoding
- [07:29] Mengunggah Kode dan Menguji Tombol Remote
- [08:41] Menambahkan Aksi: Mengendalikan Buzzer
- [10:37] Pratinjau Proyek IR yang Akan Datang
/*
Lesson 21/31: Decoding Infrared from remote
Get this code and watch video Download and resource page https://robojax.com/RJT604
YouTube video https://www.youtube.com/watch?v=EAlqaVy8fYY
*/
#include <IRremote.h>
const int IR_RECEIVE_PIN = 11; // Define the pin number for the IR Sensor
String lastDecodedValue = ""; // Variable to store the last decoded value
void setup() {
Serial.begin(9600); // Start serial communication at 9600 baud rate
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Start the IR receiver
}
void loop() {
if (IrReceiver.decode()) {
String decodedValue = decodeKeyValue(IrReceiver.decodedIRData.command);
if (decodedValue != "ERROR") {
Serial.println(decodedValue);
delay(100);
}
IrReceiver.resume(); // Enable receiving of the next value
}
}
String decodeKeyValue(long result)
{
switch(result){
case 0x16:
return "0";
case 0xC:
return "1";
case 0x18:
return "2";
case 0x5E:
return "3";
case 0x8:
return "4";
case 0x1C:
return "5";
case 0x5A:
return "6";
case 0x42:
return "7";
case 0x52:
return "8";
case 0x4A:
return "9";
case 0x9:
return "+";
case 0x15:
return "-";
case 0x7:
return "EQ";
case 0xD:
return "U/SD";
case 0x19:
return "CYCLE";
case 0x44:
return "PLAY/PAUSE";
case 0x43:
return "FORWARD";
case 0x40:
return "BACKWARD";
case 0x45:
return "POWER";
case 0x47:
return "MUTE";
case 0x46:
return "MODE";
case 0x0:
return "ERROR";
default :
return "ERROR";
}
}
Common Course Links
Common Course Files
Hal-hal yang mungkin Anda butuhkan
-
Amazon
-
eBay
Sumber daya & referensi
Belum ada sumber daya.
Berkas📁
Pustaka Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB