KY-005 Infrarot-Transmitter
Eine Leuchtdiode, die im infraroten Bereich ausstrahlt. Je nach Eingangsspannung, werden Vorwiderstände benötigt.
- Arduino
- Raspberry Pi
- Raspberry Pi Pico
- Micro:Bit
Dieses Modul enthält eine Leuchtdiode, die Infrarotlicht aussendet. Infrarotlicht ist für das menschliche Auge unsichtbar, aber es wird häufig in vielen praktischen Anwendungen verwendet, wie z.B. bei Fernbedienungen oder in der Objekterkennung. Die Diode arbeitet mit einer Spannung von 1,1 V und einem Strom von 20 mA. Je nach Eingangsspannung ist es wichtig, Vorwiderstände zu verwenden, um die Leuchtdiode zu schützen und einen reibungslosen Betrieb zu gewährleisten. Diese Vorwiderstände stellen sicher, dass die richtige Menge an Strom durch die Diode fließt, wodurch sie effektiv und sicher genutzt werden kann. Das Modul eignet sich hervorragend für Projekte, die Infrarotlicht benötigen, und bietet eine zuverlässige und einfache Lösung für Ihre Infrarotanwendungen.
Technische Daten | |
---|---|
Durchlassspannung (Vf) | 1,1 V |
Durchlassstrom (If) | 20 mA |
Emittierende Wellenlänge | 940 nm (nicht sichtbares Licht) |
Vorwiderstände:
Eingangsspannung | Benötigter Vorwiderstand |
---|---|
3,3 V | 120 Ω |
5 V | 220 Ω |
Anschlussbelegung
für Fortgeschrittenere
Auf der Platine gibt es die Möglichkeit, den jeweils benötigten Widerstand direkt aufzulöten. Die Stelle zum Auflöten des Widerstandes befindet sich direkt über den Anschlusspins auf dem PCB.
Beim Auflöten des Widerstandes ändert sich die Anschlussbelegung wie folgt:
Arduino | Sender |
---|---|
Pin 3 | Signal |
GND | GND+Widerstand |
- | GND |
für Anfänger
Arduino | Sender |
---|---|
Pin 3 | Signal |
- | GND+Widerstand |
GND+Widerstand | GND |
Codebeispiel
Mit Hilfe der beiden Sensormodule KY-005 und KY-022 lässt sich ein System mit Infrarot-Fernbedienung und Infrarot-Empfänger aufbauen. Hierzu werden neben den beiden Modulen auch zwei Arduinos benötigt. Diese fungieren hierbei dann jeweils als Sender und als Empfänger der Signale.
Um das folgende Codebeispiel auf Ihren Arduino zu laden, empfehlen wir die Verwendung der Arduino IDE. In der IDE können Sie den passenden Port und das richtige Board für Ihr Gerät auswählen. Für das folgende Codebeispiel wird eine zusätzliche Library benötigt:
IRremote von Ken Shirriff | veröffentlicht unter der MIT Lizenz
Diese Bibliotheken können Sie bequem über den Bibliotheken-Manager der Arduino IDE hinzufügen.
Bei Infrarot-Sendesystemen gibt es verschiedene Protokolle, in denen die Daten versendet werden können. In dem folgenden Beispiel wird für das Versenden das NEC-Protokoll verwendet. Dokumentation
Bitte beachten Sie: Für die Ausführung des Codebeispiels ist eine zusätzliche Datei notwendig. Diese öffnet sich automatisch, sobald Sie den Beispielcode aus der IRremote-Bibliothek öffnen. Öffnen Sie daher zunächst den Beispielcode über den folgenden Weg: Datei > Beispiele > IRremote > SimpleSender. Nun können Sie den Beispielcode durch unser modifiziertes Beispiel ersetzen. Um den Code auf Ihren Arduino hochzuladen, klicken Sie einfach auf den Upload-Button.
/*
* SimpleSender.cpp
*
* Demonstriert das Senden von IR-Codes im Standardformat mit Adresse und Befehl
* Ein erweitertes Beispiel zum Senden finden Sie als SendDemo.
*
* Copyright (C) 2020-2022 Armin Joachimsmeyer
* armin.joachimsmeyer@gmail.com
*
* Diese Datei ist Teil von Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote.
*
* MIT License
*/
#include <Arduino.h>
#if !defined(ARDUINO_ESP32C3_DEV) // Dies ist auf einen Fehler im RISC-V-Compiler zurückzuführen, der unbenutzte Funktionsabschnitte benötigt :-(.
// Deaktiviert statischen Empfängercode wie den ISR-Handler für den Empfangstimer und statische IRReceiver- und irparams-Daten.
// Spart 450 Byte Programmspeicher und 269 Byte RAM, wenn die Empfangsfunktionen nicht benötigt werden.
#define DISABLE_CODE_FOR_RECEIVER
#endif
/*
* Dieses Include definiert die aktuellen Pin-Nummern für Pins wie IR_RECEIVE_PIN, IR_SEND_PIN für viele verschiedene Boards und Architekturen
*/
#include "PinDefinitionsAndMore.h"
#include <IRremote.hpp> // Einbindung der Bibliothek
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
while (!Serial)
; // Warten Sie darauf, dass Serial verfügbar wird. Wird für einige Kerne wegoptimiert.
// Nur um zu wissen, welches Programm auf meinem Arduino läuft
Serial.println(F("KY-005: Infrarot Sender Test"));
Serial.print(F("Sende IR-Signale an Pin "));
Serial.println(IR_SEND_PIN);
/*
* Die Einrichtung der IR-Bibliothek. Das war's schon!
*/
// Beginnen Sie mit IR_SEND_PIN -der in PinDefinitionsAndMore.h definiert ist- als Sende-Pin und aktivieren Sie die Rückmelde-LED am Standard-Rückmelde-LED-Pin
IrSender.begin();
disableLEDFeedback(); // Rückmelde-LED am Standard-Rückmelde-LED-Pin deaktivieren
}
/*
* Einrichten der zu sendenden Daten.
* Bei den meisten Protokollen werden die Daten mit einer konstanten 8- (oder 16-Byte-) Adresse
* und einem variablen 8-Bit-Befehl.
* Es gibt Ausnahmen wie Sony und Denon, die eine 5-Bit-Adresse haben.
*/
uint8_t sCommand = 0x34;
uint8_t sRepeats = 0;
void loop() {
/*
* Aktuelle Sendewerte anzeigen
*/
Serial.println();
Serial.print(F("Jetzt wird gesendet: Adresse=0x00, Command=0x"));
Serial.print(sCommand, HEX);
Serial.print(F(", Wiederholungen="));
Serial.print(sRepeats);
Serial.println();
Serial.println(F("Senden von Standard-NEC mit 8-Bit-Adresse"));
Serial.flush();
// Der Empfängerausgang für die erste Schleife muss sein: Protocol=NEC Address=0x102 Command=0x34 Raw-Data=0xCB340102 (32 bits)
IrSender.sendNEC(0x00, sCommand, sRepeats);
/*
* Sendewerte inkrementieren
*/
sCommand += 0x11;
sRepeats++;
// Clip wiederholt sich bei 4
if (sRepeats > 4) {
sRepeats = 4;
}
delay(1000); // Verzögerung muss größer als 5 ms sein (RECORD_GAP_MICROS), sonst sieht der Empfänger es als ein langes Signal
}
Dieses Modul enthält eine Leuchtdiode, die Infrarotlicht aussendet. Infrarotlicht ist für das menschliche Auge unsichtbar, aber es wird häufig in vielen praktischen Anwendungen verwendet, wie z.B. bei Fernbedienungen oder in der Objekterkennung. Die Diode arbeitet mit einer Spannung von 1,1 V und einem Strom von 20 mA. Je nach Eingangsspannung ist es wichtig, Vorwiderstände zu verwenden, um die Leuchtdiode zu schützen und einen reibungslosen Betrieb zu gewährleisten. Diese Vorwiderstände stellen sicher, dass die richtige Menge an Strom durch die Diode fließt, wodurch sie effektiv und sicher genutzt werden kann. Das Modul eignet sich hervorragend für Projekte, die Infrarotlicht benötigen, und bietet eine zuverlässige und einfache Lösung für Ihre Infrarotanwendungen.
Technische Daten | |
---|---|
Durchlassspannung (Vf) | 1,1 V |
Durchlassstrom (If) | 20 mA |
Emittierende Wellenlänge | 940 nm (nicht sichtbares Licht) |
Vorwiderstände:
Eingangsspannung | Benötigter Vorwiderstand |
---|---|
3,3 V | 120 Ω |
5 V | 220 Ω |
Auf der Platine gibt es die Möglichkeit, den jeweils benötigten Widerstand direkt aufzulöten. Die Stelle zum Auflöten des Widerstandes befindet sich direkt über den Anschlusspins auf dem PCB.
Anschlussbelegung (ON/OFF-Beispiel)
Raspberry Pi | Sensor |
---|---|
GPIO 15 [Pin 10] | Signal |
GND [Pin 6] | GND |
# -*- coding: iso-8859-1 -*-
# Benoetigte Module werden importiert
from gpiozero import LED
import time
# Initialisiere die LED am Pin 15
led = LED(15)
print("LED-Test [druecken Sie STRG+C, um den Test zu beenden]")
# Hauptprogrammschleife
try:
while True:
print("LED 4 Sekunden an")
led.on() # LED wird eingeschaltet
time.sleep(4) # Wartemodus fuer 4 Sekunden
print("LED 2 Sekunden aus")
led.off() # LED wird ausgeschaltet
time.sleep(2) # Wartemodus fuer weitere zwei Sekunden, in denen die LED dann ausgeschaltet ist
# Aufraeumarbeiten nachdem das Programm beendet wurde
except KeyboardInterrupt:
led.close() # Freigabe der Ressourcen
Anschlussbelegung (Fernbedienungs-Beispiel)
Raspberry Pi | Empfänger |
---|---|
GPIO15 [Pin 10] | Signal |
3.3 V [Pin 1] | +V |
GND [Pin 6] | GND |
Raspberry Pi | Sender |
---|---|
GPIO14 [Pin 8] | Signal |
GND [Pin 6] | GND |
Quelle der nun folgenden Schritte.
Öffnen Sie zunächst die config.txt-Datei mit Hilfe des folgenden Befehls:
sudo nano /boot/config.txt
Fügen Sie nun den folgenden Inhalt an das Ende der Datei an:
dtoverlay=gpio-ir,gpio_pin=15
dtoverlay=gpio-ir-tx,gpio_pin=14
Mit der Tastenkombination [STRG+O] können Sie die Datei speichern. Bestätigen Sie dies mit [Enter] und verlassen Sie den Editor mit der Tastenkombination [STRG+X]. Starten Sie Ihren Raspberry Pi nun mit dem folgenden Befehl neu:
sudo reboot
Installieren Sie nun das ir-keytable Modul:
sudo apt-get install ir-keytable -y
Mit dem folgenden Befehl können Sie die Geräte-Identifikation ermitteln. Dies ist notwendig, um den Empfänger im weiteren Verlauf ansprechen zu können:
sudo ir-keytable
Die erste Zeile der Ausgabe sollte etwa so aussehen:
Found /sys/class/rc/rc0/ (/dev/input/event0) with:
Hier kann abgelesen werden, dass wir unseren Empfänger über die Identifikation rc0 ansprechen können. Daher starten wir den Empfang nun über den folgenden Befehl:
ir-keytable -t -s rc0
Dieses Modul enthält eine Leuchtdiode, die Infrarotlicht aussendet. Infrarotlicht ist für das menschliche Auge unsichtbar, aber es wird häufig in vielen praktischen Anwendungen verwendet, wie z.B. bei Fernbedienungen oder in der Objekterkennung. Die Diode arbeitet mit einer Spannung von 1,1 V und einem Strom von 20 mA. Je nach Eingangsspannung ist es wichtig, Vorwiderstände zu verwenden, um die Leuchtdiode zu schützen und einen reibungslosen Betrieb zu gewährleisten. Diese Vorwiderstände stellen sicher, dass die richtige Menge an Strom durch die Diode fließt, wodurch sie effektiv und sicher genutzt werden kann. Das Modul eignet sich hervorragend für Projekte, die Infrarotlicht benötigen, und bietet eine zuverlässige und einfache Lösung für Ihre Infrarotanwendungen.
Technische Daten | |
---|---|
Durchlassspannung (Vf) | 1,1 V |
Durchlassstrom (If) | 20 mA |
Emittierende Wellenlänge | 940 nm (nicht sichtbares Licht) |
Vorwiderstände:
Eingangsspannung | Benötigter Vorwiderstand |
---|---|
3,3 V | 120 Ω |
5 V | 220 Ω |
Auf der Platine gibt es die Möglichkeit, den jeweils benötigten Widerstand direkt aufzulöten. Die Stelle zum Auflöten des Widerstandes befindet sich direkt über den Anschlusspins auf dem PCB.
Anschlussbelegung (ON/OFF-Beispiel)
Micro:Bit | Sender |
---|---|
Pin 0 | Signal |
- | +V |
GND | GND |
Code-Beispiel (ON/OFF-Beispiel)
input.onButtonPressed(Button.A, function () {
if (true) {
pins.digitalWritePin(DigitalPin.P0, 1)
basic.pause(1000)
} else {
pins.digitalWritePin(DigitalPin.P0, 0)
}
})
pins.setPull(DigitalPin.P5, PinPullMode.PullDown)
Beispielprogramm Download
Anschlussbelegung (Fernbedienungsbeispiel)
Micro:Bit | Sender |
---|---|
Pin 0 | Signal |
- | +V |
GND | GND |
Micro:Bit | Empfänger |
---|---|
Pin 1 | Signal |
3V | +V |
GND | GND |
Für das folgende Codebeispiel werden zwei zusätzliche Libraries benötigt:
pxt-makerbit-ir-transmitter von 1010Technologies | veröffentlicht unter der MIT License
pxt-makerbit-ir-receiver von 1010Technologies | veröffentlicht unter der MIT License
Code-Beispiel (Fernbedienungsbeispiel)
Diese Libraries müssen Sie vor der Benutzung des Codes erst zu Ihrer IDE hinzufügen.
Fügen Sie die Library zu Ihrer IDE hinzu, indem Sie auf "Erweiterungen" klicken und jeweils die folgenden URLs in das Suchfeld eingeben: https://github.com/1010Technologies/pxt-makerbit-ir-transmitter.git und https://github.com/1010Technologies/pxt-makerbit-ir-receiver.git. Bestätigen Sie die Suche jeweils mit Enter.
makerbit.onIrDatagram(function () {
if (true) {
basic.showIcon(IconNames.SmallHeart)
} else {
basic.showIcon(IconNames.Heart)
}
})
makerbit.connectIrSenderLed(AnalogPin.P0)
makerbit.connectIrReceiver(DigitalPin.P1, IrProtocol.NEC)
basic.forever(function () {
makerbit.sendIrDatagram("0x00FF02FD")
basic.pause(500)
})
Beispielprogramm Download
Dieses Modul enthält eine Leuchtdiode, die Infrarotlicht aussendet. Infrarotlicht ist für das menschliche Auge unsichtbar, aber es wird häufig in vielen praktischen Anwendungen verwendet, wie z.B. bei Fernbedienungen oder in der Objekterkennung. Die Diode arbeitet mit einer Spannung von 1,1 V und einem Strom von 20 mA. Je nach Eingangsspannung ist es wichtig, Vorwiderstände zu verwenden, um die Leuchtdiode zu schützen und einen reibungslosen Betrieb zu gewährleisten. Diese Vorwiderstände stellen sicher, dass die richtige Menge an Strom durch die Diode fließt, wodurch sie effektiv und sicher genutzt werden kann. Das Modul eignet sich hervorragend für Projekte, die Infrarotlicht benötigen, und bietet eine zuverlässige und einfache Lösung für Ihre Infrarotanwendungen.
Technische Daten | |
---|---|
Durchlassspannung (Vf) | 1,1 V |
Durchlassstrom (If) | 20 mA |
Emittierende Wellenlänge | 940 nm (nicht sichtbares Licht) |
Vorwiderstände:
Eingangsspannung | Benötigter Vorwiderstand |
---|---|
3,3 V | 120 Ω |
5 V | 220 Ω |
Anschlussbelegung
für Fortgeschrittenere
Auf der Platine gibt es die Möglichkeit, den jeweils benötigten Widerstand direkt aufzulöten. Die Stelle zum Auflöten des Widerstandes befindet sich direkt über den Anschlusspins auf dem PCB.
Beim Auflöten des Widerstandes ändert sich die Anschlussbelegung wie folgt:
Raspberry Pi Pico | Sender |
---|---|
GPIO17 | Signal |
- | GND+Widerstand |
GND | GND |
für Anfänger
Raspberry Pi Pico | Sender |
---|---|
GPIO17 | Signal |
- | GND+Widerstand |
GND+Widerstand | GND |
Code-Beispiel
Mit Hilfe der beiden Sensormodule KY-005 und KY-022 lässt sich ein System mit Infrarot-Fernbedienung und Infrarot-Empfänger aufbauen. Hier werden wir aber nur den Sender mit einem Pico verwenden. Dieser fungiert hierbei dann als Sender der Signale.
Um das folgende Codebeispiel auf Ihren Pico zu laden, empfehlen wir die Verwendung von der Thonny IDE. Sie müssen nur zunächst unter Run > Configure interpreter … > Interpreter > Which kind of interpreter should Thonny use for running your code? > MicroPython (Raspberry Pi Pico) auswählen.
Es werden für das Codebeispiel die folgende Bibliothek verwendet:
micropython-ir von Peter Hinch | veröffentlicht unter der MIT Lizenz
Um diese Bibliothek zu verwenden, müssen Sie sich aus der obigen Bibliothek den Ordner ir_tx herunterladen und auf den Pico in einem Ordner namens lib (Sie müssen diesen ggf. erstellen) laden.
Bei Infrarot-Sendesystemen gibt es verschiedene Protokolle, in denen die Daten versendet werden können. In dem folgenden Beispiel werden für das Versenden verschiedene Protokolle verwendet. Dokumentation
Danach können Sie den untenstehenden Code nun in Ihre IDE kopieren und klicken Sie auf Run.
# Bibliotheken laden
from machine import Pin
from ir_tx.nec import NEC
from time import sleep
# Initialisierung vom Transmitter mit NEC-Protokoll an GPIO26
nec = NEC(Pin(17, Pin.OUT, value = 0))
# Variablen zum Versenden der Daten
address = 0x00
data = 0x34
print("KY-005 Infrarot Sender Test")
while True:
# Sendewerte anzeigen
print("Jetzt wird gesendet: Adresse=", hex(address),", Command=", hex(data))
# Daten senden
nec.transmit(address, data)
# Sendewerte inkrementieren
data += 0x11
# eine Sekunde warten
sleep(1)