Was ist der Unterschied zwischen dem Raspberry Pi-Kameramodul und Noir?

Infrarot am Raspberry Pi: Senden & Kameras

Rating: 4.88 (8704 votes)

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.

Verfügt der Raspberry Pi über IR?
Der Raspberry Pi kann mit jedem seiner GPIO-Pins IR-Signale empfangen und senden .

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.txt

Suchen 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 19

Für das Senden von Befehlen aktivieren Sie:

dtoverlay=gpio-ir-tx,gpio_pin=26 # Beispiel für Senden auf Pin 26

Passen 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 now

2. 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-keytable

Sie 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 -t

Wenn 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 lirc

Als 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/lirc0

Speichern Sie die Datei und starten Sie das System erneut neu:

sudo reboot now

Nach 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/lirc0

Drü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`:

irrecord

Folgen 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.conf

Ersetzen Sie `<<name_ihrer_config_datei>>` durch den tatsächlichen Namen der von `irrecord` erstellten Datei.

Verfügt der Raspberry Pi über IR?
Der Raspberry Pi kann mit jedem seiner GPIO-Pins IR-Signale empfangen und senden .

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 irw

Wenn 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.

Wozu dient die Raspberry Pi AI-Kamera?
Die Raspberry Pi KI-Kamera nutzt den Sony IMX500 Bildsensor, um jeder Kameraanwendung latenzarme und leistungsstarke KI-Funktionen zu bieten. Die enge Integration mit dem Kamera-Software-Stack von Raspberry Pi ermöglicht es Benutzern, mit minimalem Aufwand eigene neuronale Netzwerkmodelle zu implementieren.

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:

KameratypIR-FilterTageslichtbildNachtsicht mit IR-Beleuchtung
StandardkameraJa (fest)Natürliche FarbenNicht möglich (IR wird blockiert)
NoIR-KameraNeinUnnatürliche Farben (rötlich/pink)Möglich (sehr empfindlich)
Kamera mit motorisiertem IR-CutSchaltbarNatü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!

Avatar photo

Andenmatten Soltermann

Hallo! Ich bin Andenmatten Soltermann, ein Schweizer Fotograf, der leidenschaftlich die Essenz der Welt durch seine Linse einfängt. Geboren und aufgewachsen in den majestätischen Schweizer Alpen, haben die deutsche Sprache und atemberaubende Landschaften meine kreative Vision geprägt. Meine Liebe zur Fotografie begann mit einer alten analogen Kamera, und seitdem widme ich mein Leben der Kunst, visuelle Geschichten zu erzählen, die berühren und verbinden.In meinem Blog teile ich praktische Tipps, Techniken und Erfahrungen, um dir zu helfen, deine fotografischen Fähigkeiten zu verbessern – egal, ob du ein neugieriger Anfänger oder ein erfahrener Profi bist. Von der Beherrschung des natürlichen Lichts bis hin zu Ratschlägen für wirkungsvolle Bildkompositionen ist es mein Ziel, dich zu inspirieren, die Welt mit neuen Augen zu sehen. Mein Ansatz verbindet Technik mit Leidenschaft, immer auf der Suche nach dem Funken, der ein Foto unvergesslich macht.Wenn ich nicht hinter der Kamera stehe, findest du mich auf Bergpfaden, auf Reisen nach neuen Perspektiven oder beim Genießen der Schweizer Traditionen, die mir so am Herzen liegen. Begleite mich auf dieser visuellen Reise und entdecke, wie Fotografie die Art und Weise, wie du die Welt siehst, verändern kann.

Go up