Cari Kode

Pelajaran 21/31: Menggunakan Remote Control Inframerah dengan Arduino | SunFounder Robojax

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.

remote_inframerah
pin_penerima_IR

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

pengkabelan_kontrol_remote_ir

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

Gambar

IR_receiver_pins
IR_receiver_pins
infrare_remote
infrare_remote
ir_remote_control_wiring
ir_remote_control_wiring
904-Lesson 21/31: Arduino code fpor decoding Infrared from remote signal
Bahasa: C++
/*
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";
    }
}

Hal-hal yang mungkin Anda butuhkan

Sumber daya & referensi

Belum ada sumber daya.

Berkas📁

Pustaka Arduino (zip)