Anleitung: USB-IR-Sender für Raspberry Pi selbst bauen
Alter Kenwood-Receiver ohne Netzwerk, aber mit Raspberry Pi und HiFiBerry daneben? Mit einem selbstgelöteten USB-Infrarotsender für rund 15 Euro schaltest Du den KRV-6030 per Kommandozeile ein und aus und regelst die Lautstärke …
Dein alter Kenwood KRV-6030 spielt noch immer prima, hat aber keine Netzwerkbuchse und keine Schnittstelle, über die ein Computer ihn steuern könnte. Er reagiert nur auf die Infrarot-Fernbedienung. Wenn daneben ein Raspberry Pi mit HiFiBerry die Musik liefert, möchtest Du den Receiver meist trotzdem per Befehl einschalten und die Lautstärke ändern können. Genau das baust Du hier: einen kleinen Infrarotsender, der in einen USB-Port des Pi gesteckt wird, sein Signal direkt aus dem USB-Anschluss bezieht und auf einen Befehl wie kenwood POWER hin die passenden Fernbedienungssignale an den Receiver schickt.
Der KRV-6030 ist dabei nur das Beispiel. Dasselbe Prinzip funktioniert mit jedem älteren Gerät, das nur eine Infrarot-Fernbedienung hat, und am Ende des Artikels zeige ich Dir, was Du dafür anpassen musst.
Warum ein USB-Sender und nicht der GPIO-Header?
Ein HiFiBerry sitzt als Aufsteckplatine auf dem Header des Pi und belegt dort die I2S-Pins für die Audioausgabe. Ein Infrarotsender direkt am GPIO müsste sich mit dem Aufbau, den Device-Tree-Overlays und der Verkabelung rund um das HAT vertragen. Die USB-Variante umgeht das komplett: Der Sender hängt außen am Pi, braucht keine Konfiguration im Betriebssystem und lässt sich jederzeit abziehen. Außerdem erzeugt ein Mikrocontroller das 38-kHz-Signal der Fernbedienung zeitlich exakt, während der Pi nur eine Textzeile über USB schickt.
So ist der Sender aufgebaut
Die Schaltung besteht aus nur drei Teilen. Ein Arduino Pro Micro mit dem Chip ATmega32U4 ist die Steuerlogik und zugleich die Platine mit USB-Anschluss: Er meldet sich am Pi als serielle Schnittstelle /dev/ttyACM0 an und wird vollständig über USB mit Strom versorgt. Ein NPN-Transistor schaltet den Strom für die Infrarot-LED, denn ein Pin des Mikrocontrollers soll nicht selbst den LED-Strom liefern. Die LED sitzt am Ende eines kurzen Kabels und wird später vor das Infrarotfenster des Receivers geklebt.
Es gibt auch Mini-Platinen mit fest angebautem USB-A-Stecker, etwa den Digispark mit ATtiny85. Sie bringen aber keine zuverlässige serielle Schnittstelle für Linux mit und lassen sich auf der Kommandozeile deutlich umständlicher ansprechen. Den Pro Micro verbindest Du stattdessen mit einem kurzen USB-Kabel, sodass die Strecke vom Pi zum Sender trotzdem nur wenige Zentimeter lang bleibt.
Einkaufsliste
Alles zusammen kostet je nach Händler ungefähr 15 Euro. Achte beim Bestellen auf diese genauen Bezeichnungen:
- Arduino Pro Micro ATmega32U4 5V 16MHz (Affiliate Link), und zwar unbedingt die 5-Volt-Version mit 16 MHz, denn es gibt baugleiche Platinen mit 3,3 Volt, bei denen der VCC-Pin nur 3,3 Volt liefert.
- Infrarot-LED TSAL6200 940 nm 5 mm (Affiliate Link), eine Sende-LED mit 940 Nanometern Wellenlänge, wie sie auch in Fernbedienungen steckt.
- NPN-Transistor BC337-40 (Affiliate Link) im Gehäuse TO-92.
- Widerstands-Sortiment 1/4 Watt (Affiliate Link), aus dem Du einen 100-Ohm-Widerstand und einen 1-Kiloohm-Widerstand brauchst.
- Lochrasterplatine 5x7 cm (Affiliate Link) zum Aufbau der Schaltung.
- USB-A auf Micro-USB Kabel 20 cm (Affiliate Link), damit der Sender dicht am Pi hängt.
- Zweiadriges Kabel 0,14 mm² (Affiliate Link) für die Strecke zur LED und etwas Schrumpfschlauch zum Isolieren der LED-Beinchen.
Dazu brauchst Du einen Lötkolben mit Lötzinn, einen Seitenschneider und etwas Fixierknete, mit der Du die LED später ohne Kleberückstände vor dem Receiver befestigst. Ein Multimeter ist praktisch, aber nicht zwingend.
Schaltplan und Bauteilwerte
So werden die Teile verbunden. Der Pin 3 und der Pin VCC sind auf dem Pro Micro so beschriftet:
Pro Micro Pin 3 ---- 1 kOhm ---- Basis (B) BC337
Pro Micro GND ------------------ Emitter (E) BC337
Kollektor (C) BC337 ---- Kathode (-) der IR-LED
Pro Micro VCC ---- 100 Ohm ----------------------------- Anode (+) der IR-LEDBeim BC337 liest Du die Anschlüsse so ab: Halte den Transistor mit den Beinchen nach unten und der flachen Seite zu Dir, dann sind die Beinchen von links nach rechts Kollektor, Basis, Emitter. Bei der LED ist das längere Beinchen die Anode (Plus), das kürzere mit der abgeflachten Gehäuseseite die Kathode.
Die Widerstände ergeben sich aus einer kurzen Rechnung. Die TSAL6200 hat bei Stromfluss eine Flussspannung von rund 1,3 Volt, der durchgeschaltete Transistor verbraucht etwa 0,2 Volt. Mit 5 Volt Versorgung bleiben 3,5 Volt für den Vorwiderstand. Bei 100 Ohm fließen damit etwa 35 Milliampere durch die LED. Das ist für einen Abstand von wenigen Zentimetern zum Receiver mehr als genug und für die LED im getakteten Betrieb völlig unkritisch. Der 1-Kiloohm-Widerstand an der Basis begrenzt den Strom aus dem Pin auf rund 4 Milliampere und sättigt den Transistor sicher.
Schritt 1: Schaltung auf der Platine löten
Falls Dein Pro Micro ohne eingelötete Stiftleisten geliefert wurde, lötest Du sie zuerst an. Setze den Pro Micro dann so auf die Lochrasterplatine, dass der USB-Anschluss über die Platinenkante hinausragt, und verlöte alle Pins.
Danach arbeitest Du diese Verbindungen der Reihe nach ab:
- Setze den BC337 in die Nähe des Pins
3und verlöte den 1-Kiloohm-Widerstand zwischen Pin3und der Basis des Transistors. - Verbinde den Emitter des Transistors mit einem
GND-Pin des Pro Micro. - Lege den 100-Ohm-Widerstand an den Pin
VCCund führe sein freies Ende auf eine Lötinsel an der Platinenkante, an der später die Anodenader des LED-Kabels hängt. - Führe den Kollektor des Transistors auf eine zweite Lötinsel direkt daneben, an der die Kathodenader hängt.
Prüfe danach mit Blick auf die Unterseite, dass kein Lötzinn zwei benachbarte Bahnen verbindet.
Schritt 2: LED an das Kabel löten
Schneide ein Stück des zweiadrigen Kabels auf die Länge zwischen Pi und Receiver zu, halte es aber so kurz wie möglich. Schiebe auf jede Ader ein kleines Stück Schrumpfschlauch und verlöte die beiden LED-Beinchen mit den Adern: Das lange Beinchen (Anode) gehört an die Ader, die Du mit einem Filzstift markierst, das kurze Beinchen (Kathode) an die andere. Schiebe den Schrumpfschlauch über die Lötstellen und erwärme ihn, damit sich die Beinchen nicht berühren können.
Das andere Kabelende lötest Du an die Platine: die markierte Ader an die Lötinsel mit dem 100-Ohm-Widerstand, die unmarkierte Ader an die Insel mit dem Kollektor.
Schritt 3: Firmware auf den Pro Micro laden
Die Firmware spielst Du einmalig von einem Mac oder PC aus auf den Pro Micro. Installiere dafür die Arduino IDE und öffne dort Werkzeuge > Bibliotheksverwalter. Suche nach IRremote und installiere die Bibliothek von Armin Joachimsmeyer in der Version 4.x. Den Quellcode und die Dokumentation findest Du im offiziellen Repository der IRremote-Bibliothek.
Verbinde den Pro Micro mit Deinem Rechner, wähle unter Werkzeuge > Board den Eintrag Arduino Leonardo und unter Werkzeuge > Port den neuen USB-Port. Füge dann diesen Sketch ein und klicke auf Hochladen:
#include <IRremote.hpp>
const uint8_t SENDE_PIN = 3;
const uint8_t KENWOOD_ADRESSE = 0xB8;
struct Befehl {
const char *name;
uint8_t code;
};
const Befehl BEFEHLE[] = {
{"POWER", 0x9D},
{"VOL+", 0x9B},
{"VOL-", 0x9A},
{"MUTE", 0x9C},
{"PHONO", 0x90},
{"TUNER", 0x91},
{"CD", 0x92},
{"VIDEO2", 0x93},
{"TAPE1", 0x94},
{"TAPE2", 0x95},
{"VIDEO1", 0x96},
{"PRESET+", 0x99},
{"PRESET-", 0x8C},
{"BAND", 0x8F}
};
const uint8_t ANZAHL_BEFEHLE = sizeof(BEFEHLE) / sizeof(BEFEHLE[0]);
void setup() {
Serial.begin(9600);
IrSender.begin(SENDE_PIN);
}
void loop() {
if (!Serial.available()) {
return;
}
String zeile = Serial.readStringUntil('\n');
zeile.trim();
zeile.toUpperCase();
String name = zeile;
int wiederholungen = 1;
int leerzeichen = zeile.indexOf(' ');
if (leerzeichen > 0) {
name = zeile.substring(0, leerzeichen);
wiederholungen = zeile.substring(leerzeichen + 1).toInt();
if (wiederholungen < 1) {
wiederholungen = 1;
}
}
for (uint8_t i = 0; i < ANZAHL_BEFEHLE; i++) {
if (name == BEFEHLE[i].name) {
for (int n = 0; n < wiederholungen; n++) {
IrSender.sendNEC(KENWOOD_ADRESSE, BEFEHLE[i].code, 0);
delay(150);
}
return;
}
}
}Der Sketch wartet auf eine Textzeile über USB, sucht den Namen in der Befehlstabelle und sendet den zugehörigen Code im NEC-Protokoll an den Pin 3. Optional kannst Du hinter dem Namen eine Zahl angeben, dann wird der Befehl so oft hintereinander gesendet, was für mehrere Lautstärkeschritte praktisch ist. Schlägt der Upload fehl, brücke zweimal kurz hintereinander die Pins RST und GND, um den Bootloader zu starten, und lade den Sketch noch einmal hoch.
Schritt 4: Den Befehl auf dem Raspberry Pi einrichten
Stecke den Pro Micro jetzt mit dem kurzen Kabel in einen USB-Port des Pi und prüfe, ob er als serielle Schnittstelle erkannt wurde:
ls /dev/ttyACM*Erscheint dort /dev/ttyACM0, ist alles in Ordnung. Dein Benutzer muss außerdem Mitglied der Gruppe dialout sein, was beim ersten Benutzer von Raspberry Pi OS standardmäßig der Fall ist. Das kontrollierst Du mit groups. Legst Du neben dem Sender noch andere serielle USB-Geräte an, kann sich die Nummer ändern, dann findest Du mit ls /dev/serial/by-id/ einen festen Namen, den Du im Skript einträgst.
Lege nun das Hilfsskript an, das aus dem Befehl einen Textzeilen-Aufruf macht:
sudo nano /usr/local/bin/kenwoodFüge diesen Inhalt ein, speichere mit Strg + O, bestätige mit Enter und schließe den Editor mit Strg + X:
#!/bin/bash
PORT=/dev/ttyACM0
if [ -z "$1" ]; then
echo "Aufruf: kenwood BEFEHL [ANZAHL], zum Beispiel: kenwood VOL+ 5"
exit 1
fi
stty -F "$PORT" 9600 raw -echo
echo "$*" > "$PORT"Das Skript stellt die serielle Schnittstelle auf 9600 Baud und schreibt Deinen Befehl als Zeile hinein. Mache es jetzt ausführbar:
sudo chmod +x /usr/local/bin/kenwoodSchritt 5: Die LED ausrichten und testen
Teste zuerst, ob die LED überhaupt sendet. Das Infrarotlicht siehst Du mit bloßem Auge nicht, eine Handykamera zeigt es aber als schwaches violettes Blitzen. Richte die Kamera auf die LED und gib diesen Befehl ein:
kenwood VOL+ 5Die LED sollte fünfmal kurz aufleuchten. Bei manchen Handys filtert die Hauptkamera das Infrarotlicht heraus, dann hilft die Frontkamera.
Klebe die LED danach mit etwas Fixierknete direkt vor das Infrarotfenster des Receivers, also die dunkle Scheibe an der Front, hinter der der Fernbedienungssensor sitzt. Die LED soll mittig und im Abstand von etwa einem Zentimeter davor sitzen. Schalte den Receiver ein und teste:
kenwood MUTEDer Receiver sollte stummschalten. Mit kenwood POWER schaltest Du ihn aus, und derselbe Befehl schaltet ihn auch wieder ein, denn Kenwood verwendet für Ein und Aus dasselbe Signal.
Die Befehle im Überblick
Diese Codes stammen aus der IRDB, der offenen Datenbank für Infrarotcodes, und zwar aus dem Bestand der Kenwood-Receiver mit der NEC-Adresse 184 (hexadezimal 0xB8). Welche Eingänge Dein Gerät tatsächlich hat, siehst Du an den Tasten Deiner Fernbedienung.
| Befehl | Funktion | Code |
|---|---|---|
POWER | Ein und Aus | 0x9D |
VOL+ und VOL- | Lauter und leiser | 0x9B und 0x9A |
MUTE | Stummschalten | 0x9C |
PHONO, TUNER, CD | Eingang wählen | 0x90, 0x91, 0x92 |
TAPE1, TAPE2, VIDEO1, VIDEO2 | Weitere Eingänge | 0x94, 0x95, 0x96, 0x93 |
PRESET+ und PRESET- | Senderspeicher weiter und zurück | 0x99 und 0x8C |
BAND | Wellenbereich wechseln | 0x8F |
Wenn der Receiver nicht reagiert
Ich konnte die Codetabelle nicht gezielt für den KRV-6030 bestätigen, sondern habe sie aus dem Kenwood-Bestand der IRDB übernommen. Reagiert der Receiver auf nichts, obwohl die Handykamera die LED blitzen sieht, liegt es meist an einer dieser Stellen.
Ist die LED zu weit weg oder schief ausgerichtet, rücke sie näher an das Fenster. Ist die LED falsch herum angeschlossen, blitzt sie auf der Handykamera nicht. Tausche dann die beiden Adern. Misst Du zwischen VCC und GND keine 5 Volt, hast Du eine 3,3-Volt-Version des Pro Micro erwischt, und die LED bekommt zu wenig Strom.
Bleibt der Receiver trotz sichtbarem Blitzen stumm, nutzt Dein Modell vermutlich die erweiterte Variante derselben Kenwood-Adresse (in der IRDB als 184,0 geführt). Ersetze dann in der Sendeschleife des Sketches diese Zeile:
IrSender.sendNEC(KENWOOD_ADRESSE, BEFEHLE[i].code, 0);durch diese:
IrSender.sendOnkyo(KENWOOD_ADRESSE, ((uint8_t)~BEFEHLE[i].code << 8) | BEFEHLE[i].code, 0);Lade den Sketch danach erneut hoch. Die Codes bleiben dieselben, nur der Aufbau des Signals ändert sich.
Fazit: Eine Methode für alle alten Geräte
Mit einem Pro Micro, einer LED und einem Transistor hast Du jetzt eine USB-Fernbedienung, die der Pi per Textbefehl bedient und die weder GPIO-Pins noch eine Betriebssystem-Konfiguration braucht. Weil kenwood ein normaler Shell-Befehl ist, kannst Du ihn aus Skripten, Cronjobs und Automationen aufrufen, zum Beispiel auch aus Home Assistant, wie in der Anleitung Schalter zum Herunterfahren für HifiBerry in Home Assistant anlegen gezeigt.
Für ein anderes Gerät änderst Du nur die Befehlstabelle im Sketch: Suche in der IRDB das Gerät Deiner Marke, übernimm Adresse und Codes in BEFEHLE und passe bei einem anderen Protokoll als NEC die Sendefunktion an, die die IRremote-Bibliothek dafür mitbringt. Die Hardware bleibt gleich.
Weiterlesen.
-
Raspberry Pi & LinuxDyson PC1 mit Home Assistant automatisch steuern
Mit ha-dyson via HACS lässt sich der Dyson Purifier Cool PC1 vollständig in Home Assistant einbinden. Diese Anleitung zeigt, wie Du ihn sowohl nach Raumtemperatur als auch nach PM2.5-Feinstaub (Pollen) automatisch steuerst — mit einer kombinierten Automation, die immer die höhere Anforderung gewinnen lässt…
Sonoya Redaktion -
Raspberry Pi & LinuxAnleitung: Cronjobs unter Raspberry Pi OS einrichten
So richtest Du unter dem aktuellen Raspberry Pi OS (Trixie) zuverlässige Cronjobs ein: Zeitzone und Uhrzeit korrekt setzen, die crontab-Syntax verstehen und Bash-Scripts, Python-Scripts sowie virtuelle Umgebungen automatisch starten. Mit Logging, @reboot und einem Lock-File gegen Doppelausführung per flock…
Sonoya Redaktion -
Raspberry Pi & LinuxESP32 Bluetooth Proxy für Home Assistant einrichten
So baust Du mit einem ESP32, ESPHome und WLAN einen einfachen Bluetooth Range Extender für Home Assistant, damit BLE-Sensoren zuverlässiger erreichbar sind.
Sonoya Redaktion -
Raspberry Pi & LinuxMit Raspberry Pi und Server Geld verdienen: Was 2026 geht
Du hast einen Raspberry Pi oder einen Server, der ohnehin läuft, und fragst Dich, ob sich mit der ungenutzten Rechenleistung 2026 noch etwas verdienen lässt. Ich zeige Dir, was Mining, Solo-Lotterie, Bandbreiten-Sharing und Nodes wirklich bringen …
Sonoya Redaktion -
Raspberry Pi & LinuxUbuntu 26.04 LTS vom Mac steuern: So klappt es mit RDP
Die Bildschirmfreigabe des Macs spricht nur VNC, der native Desktop von Ubuntu 26.04 LTS kann nur RDP. Hier steht belegt, warum viele alte Anleitungen nicht mehr funktionieren und wie Du Ubuntu mit der kostenlosen Windows App vom Mac aus steuerst, mit Freigabe oder ohne Benutzer vor Ort …
Sonoya Redaktion -
Raspberry Pi & LinuxRaspberry Pi 5 von NVMe-SSD booten statt microSD-Karte
Wer seinen Raspberry Pi 5 ernsthaft nutzt, stößt an die Grenzen der microSD-Karte: Sie ist langsam und fällt nach vielen Schreibzugriffen gern aus. Eine NVMe-SSD am offiziellen M.2 HAT+ löst beide Probleme. Hier richten wir Schritt für Schritt ein, dass Dein Pi 5 direkt von der SSD startet…
Sonoya Redaktion