Der Raspberry Pi ist ein unglaublich vielseitiger Einplatinencomputer, der für eine Fülle von Projekten eingesetzt werden kann. Eine interessante Anwendung, die oft Fragen aufwirft, betrifft die Nutzung von Infrarot (IR). Verfügt der Raspberry Pi über integrierte IR-Fähigkeiten? Wie kann man IR-Signale senden und empfangen? Und was hat es mit IR-Filtern bei den Pi-Kameras auf sich? In diesem Artikel beleuchten wir die verschiedenen Aspekte von Infrarot in Verbindung mit dem Raspberry Pi.

Infrarot-Kommunikation: Signale senden und empfangen
Im Gegensatz zu einigen anderen Mikrocontrollern verfügt der Raspberry Pi nicht standardmäßig über integrierte Hardware für das Senden oder Empfangen von Infrarot-Signalen. Um diese Funktionalität zu nutzen, ist externe Hardware erforderlich. Glücklicherweise ist der Aufbau relativ einfach und kostengünstig.
Benötigte Hardware
Um eine universelle Infrarot-Sende- und Empfangsschaltung zu realisieren, benötigen Sie typischerweise folgende Komponenten:
- Einen IR-Empfänger (z.B. TSOP-Serie)
- Eine Infrarot-LED
- Einen NPN-Transistor (z.B. BC547)
- Widerstände (z.B. 1x 100 Ohm, 1x 1k Ohm, 1x 10k Ohm)
- Einige Jumper-Kabel oder eine Lochrasterplatine
Die Auswahl des passenden IR-Empfängers und einer passenden Infrarot-LED wurde in einem früheren Artikel ausführlich behandelt. Wichtig ist, dass die Wellenlänge der LED und die Empfangsfrequenz des Sensors möglichst gut übereinstimmen. Oft werden 950 nm LEDs und passende Sensoren verwendet, da diese leicht erhältlich sind. Eine perfekte Übereinstimmung ist jedoch nicht immer zwingend erforderlich, da die meisten IR-Sensoren auch mit leicht abweichenden Wellenlängen und Trägerfrequenzen zurechtkommen.
Die Schaltung wird über die GPIO-Pins des Raspberry Pi angeschlossen. Ein Vorteil des Raspberry Pi gegenüber beispielsweise einem Arduino ist, dass Sie prinzipiell jeden GPIO-Pin zum Senden und Empfangen von IR-Signalen nutzen können, während beim Arduino das Senden oft auf PWM-fähige Pins beschränkt ist.
Software-Einrichtung und Konfiguration
Die Software-Einrichtung für IR-Kommunikation auf dem Raspberry Pi ist etwas aufwendiger als bei einfacheren Systemen. Es reicht nicht aus, nur eine Bibliothek zu installieren; es sind mehrere Konfigurationsschritte notwendig.
1. Kernel-Overlay aktivieren
Zuerst müssen die entsprechenden Kernel-Overlays für Infrarot im System aktiviert werden. Dazu bearbeiten Sie die Konfigurationsdatei des Bootloaders:
sudo nano /boot/config.txtSuchen Sie nach den Zeilen, die mit `dtoverlay=gpio-ir` beginnen, und entfernen Sie das `#`-Symbol am Anfang der Zeile(n), die Sie benötigen. Für den Empfang von Daten aktivieren Sie:
dtoverlay=gpio-ir,gpio_pin=19 # Beispiel für Empfang auf Pin 19Für das Senden von Befehlen aktivieren Sie:
dtoverlay=gpio-ir-tx,gpio_pin=26 # Beispiel für Senden auf Pin 26Passen Sie die `gpio_pin`-Nummern an die Pins an, an die Sie Ihre Hardware angeschlossen haben. Beachten Sie, dass einige Benutzer berichtet haben, dass die gleichzeitige Aktivierung beider Overlays Probleme verursachen kann. Falls Schwierigkeiten auftreten, versuchen Sie, zunächst nur eines zu aktivieren.
Nachdem Sie die Änderungen gespeichert haben, ist ein Neustart des Systems erforderlich, damit die Overlays geladen werden:
sudo reboot now2. ir-keytable installieren und testen
Nach dem Neustart installieren Sie das Dienstprogramm `ir-keytable`, das dabei hilft, die rohen Infrarot-Zeitpunkte zu interpretieren und Tasten zuzuordnen:
sudo apt update sudo apt install ir-keytableSie können `ir-keytable` sofort testen, um zu sehen, ob der IR-Empfänger funktioniert und Signale empfängt:
sudo ir-keytable -c -p all -tWenn Sie nun eine Taste auf einer Fernbedienung drücken, die auf den Empfänger gerichtet ist, sollten auf der Konsole Ausgaben erscheinen, die anzeigen, dass ein Signal empfangen wurde. Wenn dies nicht der Fall ist, überprüfen Sie die Verkabelung und die Konfiguration in `config.txt`.
3. LIRC installieren und konfigurieren
Der Kern der IR-Kommunikation unter Linux ist LIRC (Linux Infrared Remote Control). Installieren Sie es mit:
sudo apt install lircAls Nächstes müssen Sie LIRC konfigurieren, um den richtigen Treiber und das richtige Gerät zu verwenden. Bearbeiten Sie die Hauptkonfigurationsdatei:
sudo nano /etc/lirc/lirc_options.confÄndern Sie die Zeilen für `driver` und `device` wie folgt:
driver = default device = /dev/lirc0Speichern Sie die Datei und starten Sie das System erneut neu:
sudo reboot nowNach dem Neustart können Sie testen, ob LIRC rohe IR-Signale vom Empfänger empfängt:
sudo systemctl stop lircd.service sudo mode2 -d /dev/lirc0Drücken Sie erneut Tasten auf der Fernbedienung. `mode2` sollte nun Ausgaben generieren, die die rohen Zeitmuster der empfangenen IR-Pulse darstellen (z. B. `pulse`, `space`).
4. Fernbedienung konfigurieren mit irrecord
Damit LIRC die rohen Signale einer bestimmten Fernbedienung interpretieren kann, benötigt es eine Konfigurationsdatei, die die rohen Zeitmuster bestimmten Tastennamen zuordnet. Dieses Mapping erstellen Sie mit dem Tool `irrecord`:
irrecordFolgen Sie den Anweisungen auf dem Bildschirm. Sie werden aufgefordert, verschiedene Tasten Ihrer Fernbedienung zu drücken, damit `irrecord` die entsprechenden Muster lernen kann. Am Ende des Prozesses wird eine Konfigurationsdatei erstellt (z. B. `meine-fernbedienung.conf`).
Verschieben Sie diese Datei an den von LIRC erwarteten Ort:
sudo mv <<name_ihrer_config_datei>> /etc/lirc/lircd.confErsetzen Sie `<<name_ihrer_config_datei>>` durch den tatsächlichen Namen der von `irrecord` erstellten Datei.

Ein letzter Neustart stellt sicher, dass LIRC die neue Konfigurationsdatei lädt.
5. Testen der LIRC-Konfiguration
Sie können nun überprüfen, ob LIRC die Fernbedienung erkennt und die Tasten korrekt dekodiert. Listen Sie alle konfigurierten Geräte auf:
irsend list "" ""Und nutzen Sie das Dienstprogramm `irw`, um empfangene und dekodierte Tasten in Echtzeit anzuzeigen:
sudo irwWenn Sie jetzt Tasten auf Ihrer konfigurierten Fernbedienung drücken, sollte `irw` die Namen der Tasten aus Ihrer Konfigurationsdatei ausgeben (z. B. `0000000000fe50af 00 KEY_POWER fire-tv`).
IR-Befehle in Python empfangen
Nachdem die grundlegende Einrichtung abgeschlossen ist, können Sie in eigenen Programmen auf die empfangenen IR-Befehle reagieren. Eine gängige Methode ist die Kommunikation mit dem LIRC-Daemon über einen Socket. Der LIRC-Daemon empfängt und dekodiert die Signale und stellt die Ergebnisse über den Socket zur Verfügung.
Ein einfaches Python-Skript kann eine Socket-Verbindung zu LIRC herstellen und die empfangenen Daten lesen und parsen:
import socket import sys SOCKPATH = "/var/run/lirc/lircd" sock = None def init_irw(): global sock try: sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) sock.connect(SOCKPATH) print('Socket connection established!') print('Ready...') except socket.error as e: print(f'Error connecting to LIRC socket: {e}') sys.exit(1) def getKey(): while True: try: data = sock.recv(128).decode('utf-8').strip() if len(data) > 0: break except socket.error as e: print(f'Error receiving data: {e}') return None, None # Das Format ist typischerweise: count repeat_count key_name remote_name words = data.split() if len(words) >= 4: return words[2], words[1] # key_name, repeat_count return None, None # Ungültiges Format if __name__ == '__main__': try: init_irw() while True: key, repeat_count = getKey() if key: # Optional: Auf repeat_count == '00' prüfen, um nur den ersten Tastendruck zu verarbeiten # oder repeat_count verwenden, um lange Drücke zu erkennen. # Der dir-Parameter aus dem Originalskript scheint nicht immer vom LIRC-Socket geliefert zu werden. # Stattdessen prüfen wir den repeat_count. '00' ist oft der erste Druck. if repeat_count == '00': # Beispiel: Nur beim ersten Druck reagieren print(f"Taste gedrückt: {key}") # Beispiel: Auf eine bestimmte Taste reagieren if key == 'KEY_POWER' and repeat_count == '00': print("POWER Taste wurde gedrückt!") except KeyboardInterrupt: print("\nHerunterfahren...") finally: if sock: sock.close() print("Socket geschlossen.") print("Fertig!") Dieses Skript stellt eine Verbindung zum LIRC-Socket unter `/var/run/lirc/lircd` her und wartet auf eingehende Daten. Jede Zeile, die vom Socket gelesen wird, repräsentiert einen empfangenen und von LIRC dekodierten IR-Befehl. Das Skript parst diese Zeile, extrahiert den Tastennamen und die Wiederholungsanzahl und kann dann basierend auf dem Tastennamen Aktionen ausführen.
IR-Befehle in Python senden
Das Senden von IR-Befehlen ist dank eines von LIRC bereitgestellten Befehlszeilenprogramms, `irsend`, einfacher.
Um einen Befehl von der Kommandozeile zu senden, verwenden Sie:
irsend SEND_ONCE <<name_der_fernbedienung>> <<name_der_taste>>Ersetzen Sie `<<name_der_fernbedienung>>` durch den Namen, den Sie in Ihrer `lircd.conf` Datei für die Fernbedienung vergeben haben (z. B. `fire-tv`), und `<<name_der_taste>>` durch den Namen der Taste, die Sie senden möchten (z. B. `KEY_POWER`). Stellen Sie sicher, dass das Sende-Overlay in `config.txt` aktiviert ist.
Von einem Python-Skript aus können Sie diesen Befehl einfach aufrufen:
import os remote_name = "fire-tv" button_name = "KEY_POWER" command = f"irsend SEND_ONCE {remote_name} {button_name}" print(f"Sende Befehl: {command}") os.system(command) print("Befehl gesendet.") Dieses Skript nutzt das `os` Modul, um einen Systembefehl auszuführen, der `irsend` aufruft. Dies ist eine sehr flexible Methode, um vorkonfigurierte IR-Befehle aus Ihren eigenen Programmen heraus zu senden.
Infrarot und Raspberry Pi Kameras
Neben der Kommunikation spielt Infrarot auch eine wichtige Rolle bei den Raspberry Pi Kameras, insbesondere wenn es um Aufnahmen bei schlechten Lichtverhältnissen oder im Dunkeln geht.
Was ist Infrarotlicht?
Infrarot (IR) ist elektromagnetische Strahlung mit längeren Wellenlängen als sichtbares Licht. Für das menschliche Auge ist es unsichtbar. Kamerasensoren können jedoch oft "nahes Infrarot" erkennen, das sich direkt außerhalb des sichtbaren Spektrums befindet.
IR-Cut-Filter bei Standardkameras
Würden Kamerasensoren das gesamte IR-Licht aufnehmen, das sie erkennen können, würden Bilder bei Tageslicht oft einen rötlichen oder pinkfarbenen Stich aufweisen. Um dies zu vermeiden und Bilder zu erzeugen, die dem ähneln, was das menschliche Auge sieht, sind die meisten Standardkameras mit einem sogenannten IR-Cut-Filter ausgestattet. Dieser Filter lässt nur sichtbares Licht durch und reflektiert oder blockiert unerwünschtes Infrarotlicht.

NoIR-Kameras: Empfindlich für Infrarot
Es gibt jedoch Szenarien, in denen die Aufnahme von Infrarotlicht gerade erwünscht ist. Bei sehr schlechten Lichtverhältnissen oder für Nachtsichtanwendungen möchte die Kamera so viel Licht wie möglich erfassen, einschließlich des unsichtbaren Infrarotanteils. Hier kommen Kameras ohne IR-Cut-Filter ins Spiel, oft als NoIR Kameras bezeichnet (NoIR steht für "No Infrared").
Da NoIR-Kameras keinen Filter haben, der IR blockiert, sind sie sehr empfindlich für nahes Infrarotlicht. Dies ermöglicht es ihnen, auch bei völliger Dunkelheit Bilder zu "sehen", wenn eine externe IR-Beleuchtung vorhanden ist (die für uns Menschen unsichtbar ist). Der Nachteil ist, dass Bilder, die mit einer NoIR-Kamera bei Tageslicht aufgenommen werden, unnatürliche Farben haben, da der IR-Anteil nicht herausgefiltert wird.
Kameras mit motorisiertem IR-Cut-Filter
Für Anwendungen, die sowohl gute Farbbilder bei Tageslicht als auch Nachtsicht mit IR-Beleuchtung erfordern (z. B. Überwachungskameras), gibt es Kameras mit einem schaltbaren, oft motorisierten, IR-Cut-Filter. Tagsüber ist der Filter aktiv und blockiert IR für natürliche Farben. Nachts wird der Filter weg bewegt, wodurch die Kamera IR-empfindlich wird und mit IR-Beleuchtung arbeiten kann.
Vergleich der Kameratypen
Hier ist eine Übersicht über die verschiedenen Typen von Raspberry Pi Kameras in Bezug auf ihre IR-Empfindlichkeit:
| Kameratyp | IR-Filter | Tageslichtbild | Nachtsicht mit IR-Beleuchtung |
|---|---|---|---|
| Standardkamera | Ja (fest) | Natürliche Farben | Nicht möglich (IR wird blockiert) |
| NoIR-Kamera | Nein | Unnatürliche Farben (rötlich/pink) | Möglich (sehr empfindlich) |
| Kamera mit motorisiertem IR-Cut | Schaltbar | Natürliche Farben (wenn Filter aktiv) | Möglich (wenn Filter inaktiv) |
Häufig gestellte Fragen zu IR am Raspberry Pi
Hat der Raspberry Pi eingebautes IR?
Nein, der Raspberry Pi selbst verfügt nicht über integrierte Hardware zum Senden oder Empfangen von Infrarot-Signalen. Diese Funktion muss durch externe Komponenten und die entsprechende Software (wie LIRC) hinzugefügt werden.
Was bedeutet NoIR bei Kameras?
NoIR steht für "No Infrared" und bedeutet, dass die Kamera keinen Infrarot-Sperrfilter (IR-Cut-Filter) besitzt. Dadurch ist sie empfindlich für Infrarotlicht und kann für Nachtsicht mit IR-Beleuchtung verwendet werden, liefert aber bei Tageslicht unnatürliche Farben.
Warum haben normale Kameras einen IR-Filter?
Normale Kameras haben einen IR-Filter, um das nahes Infrarotlicht zu blockieren, das von den Sensoren erfasst wird. Dies ist notwendig, um bei Tageslicht Bilder mit natürlichen und korrekten Farben zu erhalten, da das menschliche Auge Infrarot nicht sieht.
Ist die Einrichtung von IR-Kommunikation am Raspberry Pi kompliziert?
Die Einrichtung der Software (insbesondere LIRC) ist im Vergleich zu einfacheren Bibliotheken auf anderen Plattformen (wie Arduino) etwas komplexer und erfordert mehrere Schritte zur Konfiguration von Kernel-Overlays und LIRC-Dateien. Die Hardware-Seite ist hingegen recht einfach.
Kann ich meinen Raspberry Pi als Universalfernbedienung nutzen?
Ja, mit der richtigen Hardware (IR-LED und Sende-Schaltung) und der Konfiguration von LIRC zum Senden von Befehlen können Sie Ihren Raspberry Pi so programmieren, dass er IR-Signale sendet und somit andere Geräte steuert, ähnlich einer Universalfernbedienung.
Zusammenfassung
Der Raspberry Pi bietet vielfältige Möglichkeiten im Umgang mit Infrarot, auch wenn keine direkte IR-Hardware integriert ist. Für die Kommunikation (Senden und Empfangen von Fernbedienungssignalen) ist eine externe Schaltung in Kombination mit der leistungsfähigen LIRC-Software erforderlich. Die Einrichtung ist detailreich, aber einmal konfiguriert, können Sie Ihren Pi zur Steuerung anderer Geräte oder zur Reaktion auf Fernbedienungsbefehle nutzen. Im Bereich der Fotografie beeinflusst Infrarot die Kamerawahl: Standardkameras blockieren IR für natürliche Farben, während NoIR-Modelle IR-empfindlich sind und sich ideal für Nachtsicht mit IR-Beleuchtung eignen. Kameras mit schaltbaren IR-Filtern bieten das Beste aus beiden Welten. Unabhängig vom Anwendungsfall eröffnet die Interaktion mit Infrarot spannende Projekte für Ihren Raspberry Pi.
Hat dich der Artikel Infrarot am Raspberry Pi: Senden & Kameras interessiert? Schau auch in die Kategorie Ogólny rein – dort findest du mehr ähnliche Inhalte!
