Steuern Sie jede Elektronik mit einer TV-Fernbedienung | Arduino IR-Tutorial
In diesem Arduino IR Tutorial lernen wir, wie man elektronische Geräte mit einer TV-Fernbedienung und einem Arduino steuert. Wir werden einige Beispiele machen, angefangen bei der Steuerung einer einfachen LED über die Steuerung einer DC-Lüftergeschwindigkeit bis hin zur Steuerung von Hochspannungs-Haushaltsgeräten. Sie können sich das folgende Video ansehen oder die schriftliche Anleitung unten lesen.
Wir können feststellen, dass die LED vor der TV-Fernbedienung flackert, wenn wir eine Taste drücken. Eigentlich können wir dies nur durch eine Kamera sehen, da es sich um Infrarotlicht handelt und es für das menschliche Auge nicht sichtbar ist.
Das Flackern bedeutet also, dass die Infrarot-LED beim Drücken einer Taste einen Lichtstoß oder Impulse sendet, die wir mit einem Infrarotempfänger empfangen müssen.
In diesem Tutorial verwenden wir den V 34838 IR-Empfänger, der das folgende Blockdiagramm hat, von dem aus wir sehen können, dass er das empfangene Signal verstärkt, filtert und demoduliert und einen sauberen Logikausgang liefert, der für den digitalen Eingang des Arduino-Boards akzeptabel ist.
Wenn wir dann die Arduino-IRremote-Bibliothek von Ken Shirriff und ihr Demobeispiel verwenden, können wir auf dem seriellen Monitor einen eindeutigen Hexadezimalcode für jeden Tastendruck sehen, den wir bei der Erstellung unseres Programms verwenden können.
Link zur Arduino-IRremote-Bibliothek von Ken Shirriff:https://github.com/z3t0/Arduino-IRremote
Sie können die Komponenten von einer der folgenden Websites beziehen:
Wir steuern also die LED-Farbe mit den 4 farbigen Tasten der TV-Fernbedienung. Das bedeutet, dass wir zuerst die Hexadezimalcodes für jede dieser Schaltflächen sehen müssen, indem wir das IRrecvDemo-Beispiel hochladen und den Serial Monitor ausführen. Wir werden jede dieser Tasten drücken und ihre Codes aufschreiben.
Jetzt werden wir den Democode wie folgt ändern und if-Anweisungen hinzufügen, die ausgeführt werden, wenn eine bestimmte Schaltfläche gedrückt wird. Also setzen wir für jede Schaltfläche geeignete RGB-Werte und die setColor() Funktion lässt die LED in der jeweiligen Farbe leuchten. Weitere Informationen zur Funktionsweise einer RGB-LED mit Arduino finden Sie in meinem Arduino RGB-Tutorial.
Hier ist der Schaltplan der Arduino IR-gesteuerten RGB-LED:
Benötigte Komponenten für dieses Beispiel:
In diesem Beispiel wird die DC-Lüftergeschwindigkeit mit den Vorwärts- und Rückwärtstasten der TV-Fernbedienung gesteuert. Wir werden diese Schaltpläne verwenden, um die Geschwindigkeit des Lüfters zu steuern, oder wir werden das PWM-Signal mit den Tasten steuern. Weitere Informationen zur Funktionsweise dieses Schaltplans finden Sie in meinem Arduino Motors Tutorial.
Hier ist der Quellcode für dieses Beispiel. Also mit analogWrite() Funktion senden wir ein PWM-Signal an die Basis des Transistors. Die PLAY-Taste startet den Motor mit maximaler Geschwindigkeit, oder das Tastverhältnis des PWM-Signals beträgt 100 % und die STOP-Taste stoppt ihn. Die Vorwärts-Taste erhöht die Geschwindigkeit des Lüfters bei jedem Drücken, indem sie das Tastverhältnis des PWM-Signals erhöht, und die Rückwärts-Taste verringert es.
Für dieses Tutorial benötigte Komponenten:
Das letzte Beispiel wird die Steuerung von Hochspannungs-Haushaltsgeräten mit der TV-Fernbedienung sein. Dafür benötigen wir ein Relaismodul. Ich werde das Relaismodul HL-52S verwenden, das eine Nennleistung von 10 A bei 250 und 125 V AC hat. Hier ist der Schaltplan eines Beispiels für Arduino-IR-gesteuerte Hochspannungs-Haushaltsgeräte. Mit der Pin-Nummer 7 vom Arduino-Board steuern wir das Relais, an dem sich eine Buchse zum Anschließen eines beliebigen Hochspannungs-Elektronikgeräts befindet.
Da wir HOCHSPANNUNG verwenden, müssen wir sehr vorsichtig sein, und ich warne Sie hier, dass eine unsachgemäße oder falsche Verwendung zu schweren Verletzungen oder zum Tod führen kann, und ich übernehme keine Verantwortung für Ihre Handlungen. Weitere Informationen zur Verwendung des Relais und zum Herstellen einer Steckdose zum Anschließen eines beliebigen elektronischen Geräts finden Sie in meinem Arduino Relay Tutorial.
Hier ist der Quellcode dieses Beispiels:Wie es funktioniert
Steuern einer RGB-LED mit einer TV-Fernbedienung
/*
* 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);
}
Codesprache:Arduino (arduino) Steuern einer DC-Lüftergeschwindigkeit mit einer TV-Fernbedienung
/*
* 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);
}
Codesprache:Arduino (arduino) Steuerung von Hochspannungs-Haushaltsgeräten mit einer TV-Fernbedienung
/*
* 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);
}
Codesprache:Arduino (arduino)
Herstellungsprozess
- Universelle Fernbedienung mit Arduino, 1Sheeld und Android
- Münzprüfer mit Arduino steuern
- Batteriebetriebene TV-Fernbedienung mit 3D-bedrucktem Gehäuse
- Arduino mit Bluetooth zur Steuerung einer LED!
- Arduino Nano:Steuerung von 2 Schrittmotoren mit Joystick
- Animieren Sie einen Billy Bass Mouth mit einer beliebigen Audioquelle
- ThimbleKrox - Maussteuerung mit den Fingern
- Steuern Sie eine Kakerlake mit Arduino für unter 30 $
- Autosteuerung mit Arduino Uno und Bluetooth
- 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno