Seite 1
Herzlich willkommen! Vielen Dank, dass Sie sich für unser AZ-Delivery KY-022 Infrarot- Empfangsmodul entschieden haben. Auf den folgenden Seiten erfahren Sie, wie Sie dieses praktische Gerät verwenden und einrichten können. Viel Spaß!
Seite 2
Anwendungsbereiche Bildung und Lehre: Einsatz in Schulen, Hochschulen und Ausbildungseinrichtungen zur Vermittlung von Grundlagen der Elektronik, Programmierung und eingebetteten Systemen. Forschung und Entwicklung: Verwendung in Forschungs- und Ent- wicklungsprojekten zur Erstellung von Prototypen und Experimenten in den Bereichen Elektronik und Informatik. Prototypen- entwicklung: Einsatz in der Entwicklung und Erprobung neuer elektronischer Schaltungen und Geräte.
Seite 3
Anforderungen der RoHS-Richtlinie (2011/65/EU) entspricht und keine gefährlichen Stoffe in über den Grenzwerten zulässigen Mengen enthält, können dennoch Rückstände vorhanden sein. Beachten Sie die folgenden Sicherheitshinweise, um chemische Gefährdungen zu vermeiden: Achtung: Beim Löten können Dämpfe entstehen, die gesundheitsschädlich sein können. Hin- weis: Verwenden Sie einen Lötdampfabsauger oder arbeiten Sie in einem gut belüfteten Bereich.
Inhaltsübersicht Einführung ........................3 Spezifikationen ......................4 Die Pinbelegung ......................4 Arbeitsweise.........................5 Einrichten der Arduino IDE..................7 Wie man den Raspberry Pi und Python einrichtet..........11 Anschluss des Moduls mit Atmega328p .............. 12 Bibliothek für Arduino IDE ...................13 Code-Skizze zur Erkennung des Hex-Codes...........14 Code-Skizze für ContrAnsteuerung einer LED ..........17 Emulation der TV-Fernbedienung mit der KY-005 ..........18 Code skizzieren.....................19 Verbinden des Moduls mit dem Raspberry Pi............22...
Einführung Das KY-022 Infrarot-Empfänger-Sensormodul besteht aus einem 1838- Infrarot-Empfänger, einem 1kΩ-Widerstand und einer roten LED. Der Infrarotempfänger reagiert auf 38-kHz-Infrarotlicht. Der Infrarotempfänger besteht aus einer Fotodiode und einem Vorverstärker, der das Infrarotlicht in ein elektrisches Signal umwandelt. - 3 -...
Trägerfrequenz: 38kHz " Infrarot-Wellenlänge: 940nm " Dauer des Impulses: von 400µs bis 2000µs " Abmessungen: 9 x 22mm [0.9 X 0.35in] Die Pinbelegung Das KY-022 Infrarot-Empfängermodul hat drei Pins. Die Pinbelegung ist in der folgenden Abbildung dargestellt: - 4 -...
Arbeitsweise Infrarotlicht ist ein Licht, das von der Sonne, von Glühbirnen oder von allem anderen, das Wärme erzeugt, ausgestrahlt wird. Das bedeutet, dass es um uns herum eine Menge Infrarotlicht-Rauschen gibt. Um zu verhindern, dass dieses Rauschen die Infrarotsignale stört, wird eine Signalmodulationstechnik entwickelt.
Seite 8
Mikrocontroller sendet. Das Muster, nach dem das modulierte Infrarotsignal in ein Binärsignal umgewandelt wird, wird durch ein Übertragungsprotokoll festgelegt. - 6 -...
Seite 9
Es gibt viele Infrarot-Übertragungsprotokolle: Sony, Matsushita, NEC und RC5 sind einige der gängigsten Protokolle. Das NEC-Protokoll ist auch der häufigste Typ in Embedded-Projekten, daher wird es in diesem eBook als Beispiel verwendet, um zu zeigen, wie der Empfänger das modulierte Infrarotsignal in eine binäre Eins umwandelt.
Einrichten der Arduino IDE Wenn die Arduino IDE nicht installiert ist, folgen Sie dem Link und laden Sie die Installationsdatei für das Betriebssystem Ihrer Wahl herunter. Windows-Benutzer doppelklicken auf die heruntergeladene .exe-Datei und folgen den Anweisungen im Installationsfenster. - 8 -...
Seite 11
Für Linux-Benutzer laden Sie eine Datei mit der Erweiterung .tar.xz herunter, die entpackt werden muss. Nach dem Entpacken wechseln Sie in das entpackte Verzeichnis und öffnen das Terminal in diesem Verzeichnis. Zwei .sh-Skripte müssen ausgeführt werden, das erste heißt arduino- linux-setup.sh und das zweite heißt install.sh.
Seite 12
Auf fast allen Betriebssystemen ist ein Texteditor vorinstalliert (z. B. Windows mit Notepad, Linux Ubuntu mit Gedit, Linux Raspbian mit Leafpad usw.). Alle diese Texteditoren sind für den Zweck des E-Books vollkommen ausreichend. Als Nächstes müssen Sie überprüfen, ob Ihr PC ein Atmega328p-Board erkennen kann.
Seite 13
Wenn die Arduino IDE unter Windows verwendet wird, lauten die Portnamen wie folgt: Für Linux-Benutzer lautet der Name des Anschlusses zum Beispiel /dev/ttyUSBx, wobei x steht für eine ganzzahlige Zahl zwischen 0 und 9. - 11 -...
Seite 14
So richten Sie den Raspberry Pi und Python ein Auf dem Raspberry Pi muss zunächst das Betriebssystem installiert werden, dann muss alles so eingerichtet werden, dass er im Headless-Modus verwendet werden kann. Headless-Modus ermöglicht eine Fernverbindung mit dem Raspberry Pi, ohne dass ein PC-Bildschirm, eine Maus oder eine Tastatur benötigt werden.
Anschließen des Moduls mit Atmega328p Verbinden Sie das KY-022 Modul mit dem Atmega328p wie im folgenden Anschlussplan dargestellt: KY-022 Stift > McPin > Blaues Kabel Mittlerer Stift (VCC) > Rotes Kabel - (GND) > Schwarze s Kabel - 13 -...
Bibliothek für Arduino IDE Um das KY-022 Modul mit dem Atmega328p zu verwenden, wird empfohlen, eine externe Bibliothek zu installieren. Öffnen Sie Arduino IDE und gehen Sie zu: Werkzeuge > Bibliotheken verwalten Wenn sich ein neues Fenster öffnet, geben Sie IRremote (zwei R) in das...
Code-Skizze zur Erkennung des Hex-Codes #include <IRremote.h> #define SIGNAL_PIN 4 IRrecv receiverSIGNAL_PIN); decode_results output; void setup(){ Serial.begin(9600); receiver.enableIRIn(); void loop() { (receiver.decode(&output)) { Serial.println(output.value, HEX); switch (output.decode_type) { Fall NEC: Serial.println("NEC"); break; case SONY: Serial.println("SONY"); break; case RC5: Serial.println("RC5"); break; case RC6: Serial.println("RC6");...
Seite 18
// zwei Registerkarten Fall MITSUBISHI: Serial.println("MITSUBISHI"); break; case SAMSUNG: Serial.println("SAMSUNG"); break; case Serial.println("LG"); break; case WHYNTER: Serial.println("WHYNTER"); break; case AIWA_RC_T501: Serial.println("AIWA_RC_T501"); break; case PANASONIC: Serial.println("PANASONIC"); break; case DENON: Serial.println("DENON"); break; Standard: Fall UNKNOWN: Serial.println("UNKNOWN"); break; receiver.resume(); - 16 -...
Seite 19
Laden Sie den Sketch auf den Atmega328p hoch und öffnen Sie Serial Monitor (Tools > Serial Monitor). Das Ergebnis sollte wie die Ausgabe auf dem folgenden Bild aussehen: Wie auf dem Bild oben zu sehen ist, wird die Fernbedienung mit NEC- Codeangabe verwendet.
Seite 20
aus, wenn die betreffende Taste gedrückt und gehalten wird (ein Hinweis darauf, dass die Taste gedrückt ist). - 18 -...
Code-Skizze für die Ansteuerung einer LED Der folgende Sketch wird verwendet, um den Zustand d e r LED (die auf dem Atmega328p integriert ist) umzuschalten, wenn eine bestimmte Taste auf der Fernbedienung gedrückt wird. #include <IRremote.h> #define SIGNAL_PIN = 4; uint8_t toggle_state = 0;...
Emulation der TV-Fernbedienung mit der KY-005 In diesem Kapitel wird die TV-Fernbedienung mit dem KY-005 Infrarot-LED- Modul simuliert. Verbinden Sie das KY-005 Modul mit dem Atmega328p wie im folgenden Anschlussplan gezeigt: KY-005 Stift > McPin > Blaues Mittlerer Stift (VCC) >...
Seite 24
Pin oben links (über > Schwarzes Widerstand*) Kabel * Der Widerstandswert beträgt 1kΩ. - 22 -...
Seite 26
Am Anfang der Skizze ist die IRremote-Bibliothek enthalten. Als Nächstes werden ein Makro und zwei Variablen erstellt, wobei das Makro die Nummer des digitalen E/A-Pins darstellt, an den der Taster angeschlossen ist (2), und die Variablen dazu dienen, den Zustand des Tasters zu erkennen.
Seite 28
Mit der Skizze aus dem Kapitel Emulation der TV-Fernbedienung mit dem KY-005 kann die TV-Fernbedienung emuliert werden. Mit dem Sketch aus dem Kapitel Verbinden des Moduls mit Uno kann der TV- Empfänger emuliert werden. Kombiniert man diese beiden Sketche und Module, so kann man eine Infrarotschnittstelle zum Senden und Empfangen von Daten in eine Richtung (von der Infrarot-LED zum Infrarotempfänger) erstellen...
Verbinden des Moduls mit dem Raspberry Pi Verbinden Sie das KY-022 Modul mit dem Raspberry Pi wie im folgenden Anschlussplan dargestellt: KY-022 Stift > Himbeere Pi-Stift Mittlerer Stift (VCC) > [Pin 1] Rotes Kabel - (GND) > [Pin 8] Schwarze s Kabel >...
Python-Skript importiere RPi.GPIO GPIO from time import time, sleep GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) Signal_Pin GPIO.setup(Signal_Pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) code Keine CODES 0xe0e040bf: "EIN/AUS", 0xe0e08877: "0", 0xe0e020df: "1", 0xe0e0a05d: "2", 0xe0e0609f: "3", 0xe0e010ef: "4", 0xe0e0906f: "5", 0xe0e050ad: "6", 0xe0e030cf: "7", 0xe0e0b04f: "8", 0xe0e0708f: "9" # mehr hinzufügen, wenn Sie wollen binary_aquire(pin, Dauer): # Erfasst Daten so schnell wie möglich...
Seite 31
rec(pinNo, bouncetime=150): global code, CODES data binary_aquire(pinNo, bouncetime/1000.0) # 150us len(data) < bouncetime: return rate len(data) (bouncetime 1000.0) pulses i_break range(1, len(data)): (data[i] data[i-1]) oder len(data) pulses.append((data[i-1], int((i-i_break)/rate*1e6))) i_break outbin "" val, us pulses: weiter outbin > 2000: break elif <...
Seite 32
definiert.'.format(str(hex(code)))) - 30 -...
Seite 33
GPIO.add_event_detect(17,GPIO.FALLING,callback=rec,bouncetime=100) print('[Drücken Sie CTRL + C, um das Skript beenden!]') try: print('Starting IR Listener') print('Waiting for signal') while True: sleep(0.000033) # 33 Mikrosekunden except KeyboardInterrupt: print('\nScript Ende!') endlich: GPIO.cleanup() - 31 -...
Seite 34
Speichern Sie das Skript unter dem Namen ky022.py. Um das Skript auszuführen, öffnen Sie das Terminal in dem Verzeichnis, in dem das Skript gespeichert ist, und führen Sie den folgenden Befehl aus: python3 ky022.py Das Ergebnis sollte wie auf dem folgenden Bild aussehen: Um das Skript anzuhalten, drücken Sie STRG + C auf der Tastatur.
Seite 35
Das Skript beginnt mit dem Import von zwei Bibliotheken, RPi.GPIO und time, wobei die erste für GPIO-Namen und die zweite für Timing-Funktionen verwendet wird. Dann wird die GPIO-Bezeichnung auf BCM gesetzt und alle Warnungen im Zusammenhang mit GPIO-Schnittstellen werden deaktiviert. Danach wird der Modus des GPIO-Pins 17 mit der folgenden Codezeile auf INPUT mit internem PULL DOWN-Widerstand gesetzt: GPIO.setup(Signal_Pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
Seite 36
keinen Wert zurück. Die Funktion rec() ist für das Lesen, Dekodieren und Anzeigen der empfangenen Daten zuständig. - 34 -...
Seite 37
Innerhalb der Funktion rec() wird die Funktion binary_aqurie() ausgeführt, um Daten vom Infrarotsensor zu erhalten. Die Lesedauer wird in Mikrosekunden angegeben, da die Infrarotsignale des Infrarotsenders im kHz-Bereich liegen (38kHz, wie am Anfang dieses Kapitels erwähnt). Dann werden die empfangenen Daten in Pulse aufgeteilt. Um das Wesentliche zu verstehen, sehen Sie sich das folgende Bild an: Das empfangene Signal sieht aus wie mehrere Impulse mit unterschiedlicher Dauer (wie am Anfang dieses Kapitels erwähnt).
Seite 38
Die outbin-Variable ist die temporäre Variable, die zum Aufbau eines Codes verwendet wird. Die Variable val steht für den Zustand des Impulses, HIGH oder LOW, und us für Mikrosekunden. Wenn der Wert in der val-Variable von HIGH (logische "1") abweicht, was bedeutet, dass sich Impuls einem LOW-Zustand...
Am Ende des Skripts wird der Codeblock try-except-finally ausgeführt. Im try- Block wird die Endlosschleife (while True:) erstellt, damit das Skript weiterläuft. Um das Skript zu beenden, drücken Sie CTRL + C auf der Tastatur. Dies wird als Tastaturunterbrechung bezeichnet, und wenn diese Unterbrechung eintritt, wird Codeblock...
Seite 40
Sie mit Hilfe vieler Beispielskripte und anderer Anleitungen tun, die Sie im Internet finden können. Wenn Sie auf der Suche nach hochwertiger Mikroelektronik und Zubehör sind, sind Sie bei der AZ-Delivery Vertriebs GmbH an der richtigen Adresse. Sie erhalten zahlreiche Anwendungsbeispiele, vollständige...