Kontrol Elektronik apa pun dengan Remote TV | Tutorial Arduino IR
Dalam Tutorial IR Arduino ini kita akan belajar cara mengontrol perangkat elektronik menggunakan remote TV dan Arduino. Kami akan membuat beberapa contoh mulai dari mengendalikan LED sederhana, kemudian mengendalikan kecepatan Kipas DC, hingga mengendalikan peralatan rumah tangga bertegangan tinggi. Anda dapat menonton video berikut atau membaca tutorial tertulis di bawah ini.
Cara Kerjanya
Kita dapat melihat bahwa LED di depan Remote TV berkedip ketika kita menekan tombol. Sebenarnya kita hanya bisa melihat ini melalui kamera karena ini adalah cahaya inframerah dan tidak terlihat oleh mata manusia.
Jadi kedipan berarti bahwa ketika kita menekan tombol, LED inframerah mengirimkan semburan cahaya atau pulsa yang kita butuhkan untuk menerimanya 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, menyaring dan mendemodulasi sinyal yang diterima dan memberikan output logika bersih yang dapat diterima untuk input digital Board Arduino.
Kemudian dengan menggunakan Perpustakaan Arduino-IRremote Ken Shirriff dan contoh demonya, kita dapat melihat dari monitor serial kode heksadesimal unik untuk setiap penekanan tombol yang dapat kita gunakan saat membuat program.
Link ke Perpustakaan Arduino-IRremote Ken Shirriff: https://github.com/z3t0/Arduino-IRremote
Mengontrol LED RGB dengan Remote TV
Anda bisa mendapatkan komponen dari salah satu situs di bawah ini:
Penerima IR………………………………
LED RGB………………………………
Resistor 3x 220 Ohm………….……
Dewan Arduino …………………………..
Breadboard dan Kabel Lompat ……..
Jadi kita akan mengontrol Warna LED menggunakan 4 tombol berwarna pada Remote TV. Artinya, pertama-tama kita perlu melihat kode heksadesimal untuk masing-masing tombol ini dengan mengunggah contoh IRRecvDemo dan menjalankan Serial Monitor. Kami akan menekan masing-masing tombol ini dan menuliskan kodenya.
Sekarang kita akan memodifikasi kode demo seperti ini dan menambahkan pernyataan if yang akan dieksekusi jika tombol tertentu ditekan. Jadi untuk setiap tombol kita akan mengatur nilai RGB yang sesuai, dan setColor() fungsi akan menyalakan LED dalam warna tertentu. Untuk detail selengkapnya tentang cara kerja LED RGB dengan Arduino, Anda dapat melihat Tutorial RGB 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 skema rangkaian LED RGB yang dikontrol IR Arduino:
Mengontrol kecepatan Kipas DC dengan Remote TV
Komponen yang dibutuhkan untuk contoh ini:
Motor DC……………….
atau Kipas Angin DC……………….
Transistor NPN………
Dioda……………………….
Kapasitor – 1uF ……..
Resistor – 1k Ohm ..
Dalam contoh ini akan mengontrol kecepatan Kipas DC menggunakan tombol maju dan mundur pada Remote TV. Kami akan menggunakan skema rangkaian ini untuk mengontrol kecepatan kipas, atau sebenarnya kami akan mengontrol sinyal PWM menggunakan tombol. Untuk lebih jelasnya bagaimana skema rangkaian ini bekerja, Anda dapat memeriksa Tutorial Motor Arduino saya.
Berikut kode sumber untuk contoh ini. Jadi menggunakan analogWrite() fungsinya kita akan mengirimkan sinyal PWM ke basis transistor. Tombol PLAY akan menghidupkan motor pada kecepatan maksimum, atau duty cycle dari sinyal PWM akan menjadi 100% dan tombol STOP akan menghentikannya. Tombol maju akan meningkatkan kecepatan kipas dengan setiap penekanan dengan meningkatkan siklus kerja sinyal PWM, dan tombol mundur akan menguranginya.
/*
* 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 Peralatan Rumah Tegangan Tinggi dengan Remote TV
Komponen yang dibutuhkan untuk tutorial ini:
Modul Relay 5V……. Amazon / Banggood / AliExpress
Kabel, steker, soket
Contoh terakhir adalah mengontrol peralatan rumah tangga bertegangan tinggi menggunakan Remote TV. Untuk itu kita membutuhkan modul relay. Saya akan menggunakan modul relay HL-52S yang memiliki rating 10 A pada 250 dan 125 V AC. Berikut skema rangkaian contoh peralatan rumah tangga tegangan tinggi yang dikontrol IR Arduino. Dengan pin nomor 7 dari Arduino Board, kami akan mengontrol relai yang di dalamnya terdapat soket untuk menghubungkan perangkat elektronik bertegangan tinggi.
Karena kita akan menggunakan TEGANGAN TINGGI, kita harus sangat berhati-hati dan saya memperingatkan Anda di sini bahwa penggunaan yang tidak tepat atau tidak benar dapat mengakibatkan cedera serius atau kematian dan saya tidak bertanggung jawab atas tindakan Anda. Untuk lebih jelasnya cara menggunakan relay dan cara membuat soket untuk mencolokkan perangkat elektronik apa pun, Anda dapat memeriksa Tutorial Relay Arduino saya.
Berikut 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)