In diesem Tutorial lernen wir, wie man einen Servomotor mit einer IR-Fernbedienung und einem Arduino steuert. Servomotoren werden in vielen Projekten eingesetzt, zum Beispiel in der Robotik, Automatisierung und bei ferngesteuerten Fahrzeugen. Durch die Integration eines IR-Sensors mit einem Arduino-Board können wir Befehle von einer IR-Fernbedienung empfangen und damit die Position oder Geschwindigkeit des Servomotors steuern.
Die Steuerung eines Servomotors mit einer IR-Fernbedienung eröffnet viele Möglichkeiten. Du kannst damit einen ferngesteuerten Roboterarm bauen, einen Schwenk-Neige-Mechanismus für eine Kamera realisieren oder sogar ein ferngesteuertes Auto steuern. Deiner Kreativität sind keine Grenzen gesetzt!
Bevor wir ins Detail gehen, schauen wir uns die Komponenten an, die du für dieses Projekt benötigst.
Benötigte Komponenten
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Unten findest du die für dieses Projekt benötigten Komponenten. Wenn du bereits eine IR-Fernbedienung hast, brauchst du das IR Remote Receiver Kit nicht, sondern nur das IR Receiver Module. Allerdings sind nicht alle IR-Fernbedienungen geeignet. Wenn du hingegen das Kit kaufst oder besitzt, benötigst du das IR Receiver Module nicht, da es im Kit enthalten ist.

Arduino Uno

Dupont-Kabelset

Breadboard

USB-Kabel für Arduino UNO

IR Receiver Module

IR Remote Receiver Kit

Servo

Arduino IDE
Anschluss der Komponenten
In diesem Abschnitt verbinden wir die Komponenten mit dem Arduino. Das Bild unten zeigt dir die komplette Verdrahtung. Wir beginnen mit der Stromversorgung des Breadboards.

Anschluss des Breadboards
Verbinde zuerst den mit Ground (GND) markierten Pin am Arduino mit einem schwarzen oder blauen Kabel mit der Ground-Schiene des Breadboards (blau markiert). Dann verbinde den mit 5V (Power) markierten Pin am Arduino mit einem roten Kabel mit der Power-Schiene des Breadboards (rot markiert).

Anschluss des IR-Sensors
Wir beginnen mit dem Signalkabel, um den IR-Sensor anzuschließen. Suche den mit S oder Signal markierten Pin am IR-Sensor-Modul und verbinde ihn mit einem gelben Kabel mit Pin 8 am Arduino.
Als nächstes verbinden wir die Stromversorgung. Typischerweise ist Plus der mittlere Pin am IR-Sensor-Modul. Verbinde diesen Pin mit einem roten Kabel mit der positiven Stromschiene des Breadboards. Schließlich verbinde den verbleibenden, dritten Pin am IR-Sensor-Modul mit der negativen Stromschiene des Breadboards.

Anschluss des Servomotors
Das letzte Bauteil, das angeschlossen wird, ist der Servomotor. Verbinde zuerst das braune Kabel des Servomotors mit einem braunen oder schwarzen Kabel mit der negativen Stromschiene des Breadboards. Dann verbinde das rote Kabel des Servos mit der positiven Stromschiene, am besten mit einem roten Kabel.

Zum Schluss verbinden wir das orangefarbene Signalkabel des Servos mit Pin 9 am Arduino-Board.

Wenn du mit der Verkabelung der Komponenten fertig bist, überprüfe am besten noch einmal, ob alles richtig angeschlossen ist. Achte besonders auf die Stromverbindungen. Wir wollen keinen Kurzschluss verursachen.
Als nächstes zeige ich dir den benötigten Code.
Arduino-Code schreiben
Unten findest du den vollständigen Code zur Übersicht. Damit kannst du den Servo mit den NEXT- oder PREV-Tasten der Fernbedienung in 10-Grad-Schritten nach links oder rechts drehen. Lass uns den Code in einzelne Teile zerlegen und erklären, was sie machen.
#include <IRremote.hpp>
#include <Servo.h>
#define IR_RECEIVE_PIN 8
#define SERVO_PIN 9
Servo servo;
const int range = 780;
const int mid = 1600;
int pos = 90;
int speed = 10;
void rotate(int angle) {
angle = map(angle, 0, 180, mid - range, mid + range);
servo.writeMicroseconds(angle);
}
void setup() {
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
servo.attach(SERVO_PIN);
rotate(pos);
}
void loop() {
if (IrReceiver.decode()) {
uint16_t command = IrReceiver.decodedIRData.command;
if (command == 8) { // NEXT
pos = min(pos + speed, 180);
} else if (command == 2) { // PREV
pos = max(pos - speed, 10);
}
rotate(pos);
IrReceiver.resume();
}
}
Definitionen
Zuerst binden wir zwei Bibliotheken ein. Die IRremote library, die benötigt wird, um die Befehle der IR-Fernbedienung zu verstehen. Und die Servo library, die uns hilft, den Servo zu steuern.
#include <IRremote.hpp> #include <Servo.h>
Danach definieren wir Konstanten, IR_RECEIVE_PIN und SERVO_PIN , die festlegen, welche Pins am Arduino für das Auslesen des IR-Signals und die Steuerung des Servos verwendet werden.
#define IR_RECEIVE_PIN 8 #define SERVO_PIN 9
Anschließend definieren wir das servo -Objekt und zwei Konstanten (range und mid), die den Bewegungsbereich des Servos festlegen, sowie mid für die Mittelposition des Servos. Zusätzlich deklarieren wir zwei Variablen (pos, speed), die die aktuelle Position des Servos und die Geschwindigkeit (bzw. die Winkelschritte) beschreiben, mit denen er sich bewegt.
Servo servo; const int range = 780; const int mid = 1600; int pos = 90; int speed = 10;
Servo drehen
Um den Servo auf einen bestimmten Winkel zu drehen, definieren wir eine spezielle rotate() -Funktion. Sie wandelt im Wesentlichen den angegebenen Winkel, der zwischen 0 und 180 Grad liegen muss, in die entsprechende Pulsdauer um, die zur Steuerung des Servos benötigt wird.
void rotate(int angle) {
angle = map(angle, 0, 180, mid - range, mid + range);
servo.writeMicroseconds(angle);
}
Für mehr Details siehe unser Tutorial zu den Unterschieden zwischen continuous and positional servos. Achte besonders auf den Abschnitt, der erklärt, wie du deinen Servo feinjustierst.
Setup
In der setup() -Funktion teilen wir der IR-Receiver-Bibliothek und der Servo-Bibliothek einfach mit, welche Pins für den IR-Empfänger und die Servo-Steuerung verwendet werden. Außerdem drehen wir den Servo auf die 90-Grad-Position. Beachte, dass wir hier von einem normalen Positionsservo ausgehen.
void setup() {
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
servo.attach(SERVO_PIN);
rotate(pos);
}
Hauptschleife
Abschließend implementieren wir die loop() -Funktion, die kontinuierlich läuft.
void loop() {
if (IrReceiver.decode()) {
uint16_t command = IrReceiver.decodedIRData.command;
if (command == 8) { // NEXT
pos = min(pos + speed, 180);
} else if (command == 2) { // PREV
pos = max(pos - speed, 10);
}
rotate(pos);
IrReceiver.resume();
}
}
Wir beginnen damit, auf ein Signal vom IR-Empfänger zu warten, indem wir IrReceiver.decode() aufrufen. Wenn wir einen Befehl empfangen haben, dekodieren wir ihn mit IrReceiver.decodedIRData.command.
Je nach Wert des Befehls erhöhen wir dann entweder die Position, aber nicht über 180 Grad, oder verringern die Position, aber nicht unter 0 Grad. Dafür sind die Funktionen min() und max() zuständig.
Welcher Befehlswert welcher Taste auf der IR-Fernbedienung entspricht, hängt von der verwendeten Fernbedienung ab ! Siehe unser Tutorial zu How to use an IR receiver and remote with Arduino, um zu erfahren, wie du die Befehls-Codes deiner Fernbedienung herausfindest. In meinem Fall ist 8 die Taste für den nächsten Titel und 2 die Taste für den vorherigen Titel auf meiner Fernbedienung.
Zum Schluss drehen wir den Servo auf die gewünschte Position mit rotate(pos) und teilen dem IR-Empfänger mit, dass er auf einen neuen Befehl warten soll, mit IrReceiver.resume().
Tipps
Beachte, dass du den Schrittwinkel oder die Geschwindigkeit, mit der sich der Servo zwischen den Positionen bewegt, erhöhen oder verringern kannst, indem du den Wert der speed -Variable anpasst. Du könntest das sogar direkt mit der Fernbedienung machen, indem du zwei weitere Befehle hinzufügst, zum Beispiel:
void loop() {
if (IrReceiver.decode()) {
uint16_t command = IrReceiver.decodedIRData.command;
if (command == 31) { // VOL+
speed = min(speed + 1, 90);
} else if (command == 23) { // VOL-
speed = max(speed - 1, 1);
} else if (command == 8) { // NEXT
pos = min(pos + speed, 180);
} else if (command == 2) { // PREV
pos = max(pos - speed, 10);
}
rotate(pos);
IrReceiver.resume();
}
}
Hier verwende ich die Lautstärketasten meiner Fernbedienung, um die Geschwindigkeit zu steuern. Wie zuvor können die Befehls-Codes deiner Fernbedienung von meinen abweichen, und du musst den Code entsprechend anpassen.
Anwendungen
Roboterarm
Nutze den Servomotor, um die Bewegung eines Roboterarms zu steuern. Der Arm kann so programmiert werden, dass er verschiedene Aufgaben ausführt, wie zum Beispiel Gegenstände aufheben, bewegen oder sogar Spiele spielen.
Fensterjalousien-Steuerung
Automatisiere das Öffnen und Schließen von Fensterjalousien mit dem Servomotor und der IR-Fernbedienung. So kannst du mit einem Knopfdruck die Menge an Sonnenlicht im Raum steuern.
Futterautomat für Haustiere
Baue einen automatischen Futterautomaten, der zu bestimmten Zeiten Futter ausgibt. Mit der IR-Fernbedienung kannst du den Fütterungsvorgang bei Bedarf auch manuell auslösen.
Pflanzenbewässerungssystem
Baue ein Pflanzenbewässerungssystem, das mit dem Servomotor den Wasserfluss steuert. Mit der IR-Fernbedienung kannst du das System aktivieren und deine Pflanzen aus der Ferne gießen.
Smartes Türschloss
Baue ein smartes Türschloss, das mit dem Servomotor die Tür verriegelt und entriegelt. Mit der IR-Fernbedienung kannst du das Schloss aus der Ferne steuern oder ein Tastenfeld für sicheren Zugang einrichten.
Stimmungsbeleuchtung
Erstelle eine Stimmungsbeleuchtung, bei der der Servomotor die Helligkeit oder Farbe der Lichter anpasst. Mit der IR-Fernbedienung kannst du die Lichteinstellungen ändern und verschiedene Atmosphären schaffen.
Automatisierte Vorhänge
Steuere das Öffnen und Schließen von Vorhängen mit dem Servomotor und der IR-Fernbedienung. So kannst du ganz einfach die Lichtmenge im Raum anpassen oder für Privatsphäre sorgen.
Roboter-Aquarienreiniger
Baue einen Roboter-Aquarienreiniger, der mit dem Servomotor im Aquarium herumfährt und es reinigt. Mit der IR-Fernbedienung kannst du seine Bewegungen und Reinigungsmuster steuern.
Interaktive Kunstinstallation
Erstelle eine interaktive Kunstinstallation, bei der der Servomotor bewegliche Teile oder Skulpturen steuert. Mit der IR-Fernbedienung kannst du verschiedene Bewegungen auslösen und die Betrachter einbinden.
Fazit
In diesem Tutorial haben wir gelernt, wie man einen Servomotor mit einer IR-Fernbedienung steuert. Mit den Schritten aus dieser Anleitung kannst du diese Funktion ganz einfach in deine eigenen Projekte integrieren.
Wir haben damit begonnen, die benötigten Komponenten zusammenzustellen, darunter ein Arduino Uno, ein Dupont-Kabelset, ein Breadboard, ein IR-Empfängermodul, ein IR Remote Receiver Kit und die Arduino IDE. Diese Komponenten sind essenziell für den Aufbau der Schaltung.
Anschließend haben wir die Komponenten miteinander verbunden. Wir haben das Breadboard mit dem Arduino Uno verbunden und darauf geachtet, dass alle Verbindungen korrekt sind. Dann haben wir den IR-Sensor ans Breadboard und den Servomotor an den Arduino Uno angeschlossen. Diese Verbindungen ermöglichen es dem Arduino, Signale von der IR-Fernbedienung zu empfangen und den Servomotor entsprechend zu steuern.
Nachdem die Hardware eingerichtet war, haben wir den Arduino-Code geschrieben. Wir haben die notwendigen Variablen und Bibliotheken definiert und dann den Code implementiert, um den Servomotor basierend auf den empfangenen IR-Signalen zu drehen. Außerdem haben wir die Anfangsposition des Servos in der Setup-Funktion festgelegt und in der Hauptschleife kontinuierlich auf IR-Signale gewartet.
Zum Schluss haben wir noch ein paar Tipps gegeben, wie du die Servosteuerung mit einer IR-Fernbedienung erweitern kannst. Dazu gehören die Nutzung verschiedener Tasten für unterschiedliche Bewegungen, das Anpassen der Servogeschwindigkeit und das Einbinden weiterer Sensoren oder Module in dein Projekt.
Zusammenfassend lässt sich sagen: Die Steuerung eines Servomotors mit einer IR-Fernbedienung eröffnet viele Möglichkeiten für deine Arduino-Projekte. Egal, ob du einen Roboterarm, ein Kamera-Gimbal oder ein anderes Projekt mit präziser Motorsteuerung bauen möchtest – dieses Tutorial gibt dir das nötige Wissen für den Einstieg.
Wenn du noch Fragen hast oder einzelne Schritte aus diesem Tutorial unklar sind, schau bitte in den Abschnitt mit den häufig gestellten Fragen unten. Viel Spaß beim Basteln!
Häufig gestellte Fragen
Hier findest du einige häufige Fragen zur Steuerung eines Servomotors mit einer IR-Fernbedienung:
F: Kann ich jede IR-Fernbedienung für dieses Projekt verwenden?
A: Ja, du kannst jede IR-Fernbedienung verwenden, solange sie mit dem Arduino kompatibel ist. Die meisten IR-Fernbedienungen nutzen das NEC-Protokoll, das von der IR-Bibliothek des Arduino unterstützt wird. Falls du eine andere Art von Fernbedienung hast, musst du den Code entsprechend anpassen. In den meisten Fällen musst du die Codes im Sketch an die Befehle deiner Fernbedienung anpassen. Details findest du unter here.
F: Wie finde ich die Codes für die Tasten meiner IR-Fernbedienung heraus?
A: Um die Codes für die Tasten deiner IR-Fernbedienung zu finden, kannst du das IRrecvDumpV2 example sketch aus der IR-Bibliothek des Arduino verwenden. Alternativ folge unserem tutorial.
Lade den Sketch auf deinen Arduino, öffne den Serial Monitor und drücke die Tasten auf deiner Fernbedienung. Die Codes werden im Serial Monitor angezeigt. Diese Codes kannst du dann in deinem Arduino-Code verwenden, um die Tasten bestimmten Servobewegungen zuzuordnen.
F: Kann ich mehrere Servomotoren mit einer IR-Fernbedienung steuern?
A: Ja, du kannst mehrere Servomotoren mit einer IR-Fernbedienung steuern. Du musst jeden Servomotor an einen eigenen Pin am Arduino anschließen und den Code so anpassen, dass jeder Servo unabhängig angesteuert werden kann. Du kannst verschiedene Tasten der Fernbedienung für verschiedene Servos verwenden.
F: Wie kann ich den Bewegungsbereich des Servomotors anpassen?
A: Der Bewegungsbereich des Servomotors kann angepasst werden, indem du die Werte in den servo.attach() – und servo.write() -Funktionen im Arduino-Code änderst. Die servo.attach() -Funktion legt den Bewegungsbereich des Servos fest, während die servo.write() -Funktion den Winkel angibt, auf den der Servo bewegt werden soll. Für alternative Methoden schau dir unser Tutorial zu continuous and positional servos an.
F: Kann ich einen anderen Mikrocontroller statt Arduino verwenden?
A: Ja, du kannst auch einen anderen Mikrocontroller verwenden, solange er die benötigten Bibliotheken unterstützt und genügend digitale Pins für den Anschluss von Servomotor und IR-Empfänger hat. Der Code in diesem Tutorial ist für Arduino geschrieben, kann aber für andere Mikrocontroller angepasst werden.
F: Kann ich einen anderen Motortyp statt eines Servomotors verwenden?
A: Nein, dieses Projekt ist speziell für die Steuerung von Servomotoren ausgelegt. Servos haben eine eingebaute Positionsregelung, was sie ideal für diese Anwendung macht. Wenn du einen anderen Motortyp steuern möchtest, brauchst du eine andere Schaltung und einen anderen Code.
F: Kann ich die Geschwindigkeit des Servomotors steuern?
A: Es kommt darauf an. Bei kontinuierlichen oder 360-Grad-Servos kannst du Geschwindigkeit und Richtung steuern (aber nicht die Position). Bei Positionsservos, wie sie in diesem Tutorial verwendet werden, kannst du die Geschwindigkeit nicht direkt steuern, aber du kannst die Winkelschritte ändern, was die Geschwindigkeit beeinflusst – allerdings führt das zu ruckartigen Bewegungen.
F: Gibt es Sicherheitsvorkehrungen beim Arbeiten mit Servomotoren?
A: Ja, achte beim Arbeiten mit Servomotoren darauf, dass du genügend Strom zur Verfügung stellst und die Servos nicht überlastest. Sei außerdem vorsichtig mit beweglichen Teilen und fasse sie nicht an, während der Motor in Betrieb ist.
Ich hoffe, diese häufig gestellten Fragen konnten deine Zweifel klären. Wenn du noch weitere Fragen hast, stelle sie gerne unten in den Kommentaren.
Links
Abschließend findest du hier eine Auswahl an Links zu weiterführenden Themen, die für dich nützlich sein könnten.
- How to Control a 360 Degree Servo Motor with Arduino
- How to Drive Servo Motors Using ESP32
- How to Control Servo Motors with Arduino (3 Examples)
- Control 360-degree Servo Motor Using ESP32
- Positional versus Continuous Servos
- Controlling Servo Motor with IR Remote
- Servo Motor Control with Remote
- Controlling a Servo with IR | Using an Infrared Library
- Controlling Servo Motor With Ir Remote Using Arduino
- Controlling Servo Motor Using IR Remote Control

