Mengontrol Perangkat dengan Remote TV menggunakan Arduino IR – Panduan Langkah demi Langkah
Dalam Tutorial Arduino IR ini kita akan mempelajari cara mengontrol perangkat elektronik menggunakan remote TV dan Arduino. Kita akan membuat beberapa contoh dimulai dari mengontrol LED sederhana, kemudian mengontrol kecepatan Kipas DC, hingga mengontrol perangkat rumah tangga tegangan tinggi. Anda dapat menonton video berikut atau membaca tutorial tertulis di bawah ini.
Bagaimana Cara Kerjanya
Kita dapat memperhatikan bahwa LED di depan Remote TV berkedip saat kita menekan tombol. Sebenarnya kita hanya dapat melihat ini melalui kamera karena ini adalah cahaya inframerah dan tidak terlihat oleh mata manusia.
Jadi berkedip berarti saat kita menekan tombol, LED inframerah mengirimkan ledakan cahaya atau pulsa yang kita terima dengan penerima inframerah.
Dalam tutorial ini kita akan menggunakan Penerima IR V 34838 yang memiliki diagram blok berikut dari mana kita dapat melihat bahwa itu akan memperkuat, memfilter dan mendemodulasi sinyal yang diterima dan memberikan output logika bersih yang dapat diterima untuk input digital Papan Arduino.
Kemudian menggunakan pustaka Arduino-IRremote milik Ken Shirriff dan contoh demo-nya kita dapat melihat dari serial monitor kode heksadesimal unik untuk setiap penekanan tombol yang dapat kita gunakan saat membuat program kita.
Tautan ke pustaka Arduino-IRremote milik Ken Shirriff: https://github.com/z3t0/Arduino-IRremote
Mengontrol LED RGB dengan Remote TV
Anda dapat mendapatkan komponen dari salah satu situs di bawah ini:
Penerima IR………………………………
LED RGB…………………………………
3x Resistor 220 Ohm………….……
Papan Arduino …………………………..
Breadboard dan Kabel Jumper ……..
Jadi kita akan mengontrol warna LED menggunakan 4 tombol berwarna dari Remote TV. Itu berarti pertama kita perlu melihat kode heksadesimal untuk setiap tombol ini dengan mengunggah contoh IRrecvDemo dan menjalankan Serial Monitor. Kita akan menekan setiap tombol ini dan mencatat kodenya.
Sekarang kita akan memodifikasi kode demo seperti ini dan menambahkan pernyataan if yang akan dieksekusi jika suatu tombol tertentu ditekan. Jadi untuk setiap tombol kita akan mengatur nilai RGB yang sesuai, dan fungsi setColor() akan menyala LED dengan warna tertentu. Untuk lebih banyak detail bagaimana LED RGB bekerja dengan Arduino Anda dapat memeriksa Tutorial RGB LED Arduino saya.
/* * Controlling a RGB LED with a TV Remote * * Modified IRrecvDemo example from Ken Shirriff IRremote Library * Ken Shirriff * https://arcfn.com * * Modified by Dejan Nedelkovski, * www.HowToMechatronics.com * */ #include <IRremote.h> int RECV_PIN = 8; // IR Receiver - Arduino Pin Number 8 IRrecv irrecv(RECV_PIN); decode_results results; int redPin = 5; int greenPin = 6; int bluePin = 7; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); } void loop() { if (irrecv.decode(&results)) { if (results.value == 0xF21D7D46) { // Red Button setColor(255, 0, 0); // Sets Red Color to the RGB LED delay(100); } if (results.value == 0x87CF1B29) { // Green Button setColor(0, 255, 0); // Green Color delay(100); } if (results.value == 0x6623D37C) { // Yellow Button setColor(255, 255, 0); // Yellow Color delay(100); } if (results.value == 0x854115F2) { // Blue Button setColor(0, 0, 255); // Blue Color delay(100); } if (results.value == 0x1639AB6E) { // Stop Button setColor(0, 0, 0); // OFF delay(100); } irrecv.resume(); // Receive the next value } delay(100); } // Custom made function for activating the RGB LED void setColor(int red, int green, int blue) { analogWrite(redPin, red); // Sends PWM signal to the Red pin analogWrite(greenPin, green); analogWrite(bluePin, blue); }Code language: Arduino (arduino)
Berikut adalah skema rangkaian dari contoh LED RGB Arduino yang dikontrol IR:
Mengontrol Kecepatan Kipas DC dengan Remote TV
Komponen yang diperlukan untuk contoh ini:
Motor DC……………….
atau Kipas DC……………….
Transistor NPN………
Dioda…………………….
Kapasitor – 1uF ……..
Resistor – 1k Ohm ..
Dalam contoh ini kita akan mengontrol kecepatan Kipas DC menggunakan tombol maju dan mundur dari Remote TV. Kita akan menggunakan skema rangkaian ini untuk mengontrol kecepatan kipas, atau sebenarnya kita akan mengontrol sinyal PWM menggunakan tombol. Untuk lebih banyak detail bagaimana skema rangkaian ini bekerja, Anda dapat memeriksa Tutorial Motor Arduino saya.
Berikut adalah kode sumber untuk contoh ini. Jadi menggunakan fungsi analogWrite() kita akan mengirim sinyal PWM ke basis transistor. Tombol PLAY akan memulai motor dengan kecepatan maksimum, atau siklus kerja sinyal PWM akan 100% dan tombol STOP akan mematikannya. Tombol maju akan meningkatkan kecepatan kipas dengan setiap penekanan dengan meningkatkan siklus kerja sinyal PWM, dan tombol mundur akan menurunkannya.
/* * Controlling a DC Fan Speed with a TV Remote * * Modified IRrecvDemo example from Ken Shirriff IRremote Library * Ken Shirriff * https://arcfn.com * * Modified by Dejan Nedelkovski, * www.HowToMechatronics.com * */ #include <IRremote.h> int RECV_PIN = 8; // IR Receiver - Arduino Pin Number 8 int pwmPin = 7; // Arduino Pin Number 7 to the Base of the Transistor int pwmValue; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver pinMode( pwmPin, OUTPUT); pwmValue = 0; // Starts the program with turned off motor } void loop() { if (irrecv.decode(&results)) { analogWrite(pwmPin, pwmValue); if (results.value == 0xAFAF8374) { // PLAY Button pwmValue = 255; // 100% Duty Cycle | Max Speed } if (results.value == 0x98519C65) { // STOP Button pwmValue = 0; // 0% Duty Cycke | Turned off } if (results.value == 0x93F1BA08) { // FORWARD Button if(pwmValue <= 245){ pwmValue = pwmValue + 10; // Increases the Duty Cycle of the PWM Signal delay(20); } } if (results.value == 0x71D086FF) { // BACKWARD Button if(pwmValue >= 20){ pwmValue = pwmValue - 10; // Decreases the Duty Cycle of the PWM Signal delay(20); } } Serial.print(pwmValue); Serial.print(" "); Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } delay(100); } Code language: Arduino (arduino)
Mengontrol Perangkat Rumah Tangga Tegangan Tinggi dengan Remote TV
Komponen yang diperlukan untuk tutorial ini:
Modul Relay 5V……. Amazon / Banggood / AliExpress
Kabel, plug, soket
Contoh akhir akan mengontrol perangkat rumah tangga tegangan tinggi menggunakan Remote TV. Untuk itu kita akan memerlukan modul relay. Saya akan menggunakan modul relay HL-52S yang memiliki rating 10 A pada 250 dan 125 V AC. Berikut adalah skema rangkaian dari contoh perangkat rumah tangga tegangan tinggi Arduino yang dikontrol IR. Dengan nomor pin 7 dari Papan Arduino kita akan mengontrol relay di mana ada soket untuk menghubungkan perangkat elektronik tegangan tinggi apa pun.
Karena kita akan menggunakan TEGANGAN TINGGI, kita harus sangat berhati-hati dan saya memperingatkan Anda di sini bahwa penggunaan yang tidak tepat atau salah dapat mengakibatkan cedera serius atau kematian dan saya tidak bertanggung jawab atas tindakan Anda. Untuk lebih banyak detail cara menggunakan relay dan cara membuat soket untuk memasang perangkat elektronik apa pun Anda dapat memeriksa Tutorial Relay Arduino saya.
Berikut adalah kode sumber dari contoh ini:
/* * Controlling High Voltage Home Appliances with a TV Remote * * Modified IRrecvDemo example from Ken Shirriff IRremote Library * Ken Shirriff * https://arcfn.com * * Modified by Dejan, * www.HowToMechatronics.com * */ #include <IRremote.h> int RECV_PIN = 8; int relayOut = 7; int buttonState ; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver pinMode( relayOut, OUTPUT); buttonState = HIGH; // Starts the program with turned off Relay. The relay input works inversly so HIGH state means deactivated relay } void loop() { buttonState = digitalRead(relayOut); if (irrecv.decode(&results)) { if (results.value == 0xAFAF8374) { // PLAY Button digitalWrite(relayOut, LOW); // Activates the relay } if (results.value == 0x98519C65) { // STOP Button digitalWrite(relayOut, HIGH); // Deactivates the relay } irrecv.resume(); // Receive the next value } Serial.print(" "); Serial.println(results.value, HEX); delay(100); }Code language: Arduino (arduino)