Bemerkung
Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie tiefer in Raspberry Pi, Arduino und ESP32 ein mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezielle Rabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Promotionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Bereit, mit uns zu erkunden und zu kreieren? Klicken Sie auf [hier] und treten Sie heute bei!
6.4 Verwendung einer Infrarot-Fernbedienung
In dieser Lektion lernen wir, wie man eine Infrarot (IR) Fernbedienung und ein IR-Empfängermodul mit dem Raspberry Pi Pico 2 verwendet. Dies ermöglicht es uns, Signale von einer IR-Fernbedienung zu empfangen und zu dekodieren, um unsere Projekte drahtlos zu steuern.
Was Sie benötigen
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
|---|---|---|
Newton Lab Kit |
450+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
SN |
KOMPONENTE |
MENGE |
LINK |
|---|---|---|---|
1 |
1 |
||
2 |
Micro-USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
1 |
Verständnis der Infrarot-Kommunikation
Die Infrarot-Kommunikation beinhaltet die drahtlose Übertragung von Daten mittels Infrarotlicht. Allgemeine Haushaltsgeräte wie Fernseher und DVD-Player verwenden IR-Fernbedienungen zur Bedienung.
IR-Sender (Fernbedienung): Sendet moduliertes Infrarotlicht, wenn eine Taste gedrückt wird.
IR-Empfängermodul: Erkennt das modulierte IR-Licht und wandelt es in elektrische Signale um, die dekodiert werden können.
Schaltplan

Verdrahtungsplan

Code schreiben
Schreiben wir ein MicroPython-Skript, um IR-Signale von der Fernbedienung zu empfangen und zu dekodieren.
Bemerkung
Öffnen Sie die Datei
6.4_ir_remote_control.pyausnewton-lab-kit/micropythonoder kopieren Sie den Code in Thonny, dann klicken Sie auf „Run“ oder drücken Sie F5.Stellen Sie sicher, dass der richtige Interpreter ausgewählt ist: MicroPython (Raspberry Pi Pico).COMxx.
Hier müssen Sie die Bibliotheken im Ordner
ir_rxverwenden, bitte prüfen Sie, ob sie auf den Pico hochgeladen wurden, für eine detaillierte Anleitung siehe Bibliotheken auf den Pico hochladen.
import time
from machine import Pin
from ir_rx.nec import NEC_8 # Passen Sie dies an das Protokoll Ihrer Fernbedienung an
from ir_rx.print_error import print_error
# Initialisieren Sie den IR-Empfänger-Pin
ir_pin = Pin(17, Pin.IN)
# Callback-Funktion zur Behandlung der empfangenen Daten
def ir_callback(data, addr, ctrl):
if data < 0: # Wiederholungscode oder Fehler
pass
else:
key = decode_key(data)
print("Received Key:", key)
# Funktion zum Dekodieren der empfangenen Daten in Tastendrücke
def decode_key(data):
key_codes = {
0x45: "POWER",
0x46: "MODE",
0x47: "MUTE",
0x44: "PLAY/PAUSE",
0x40: "BACKWARD",
0x43: "FORWARD",
0x07: "EQ",
0x15: "-",
0x09: "+",
0xD: "U/SD",
0x16: "0",
0x19: "cycle",
0xC: "1",
0x5E: "3",
0x18: "2",
0x8: "4",
0x1C: "5",
0x5A: "6",
0x42: "7",
0x52: "8",
0x4A: "9",
0x0: "ERROR",
# Fügen Sie weitere Tastencodes basierend auf Ihrer Fernbedienung hinzu
}
return key_codes.get(data, "UNKNOWN")
# Instanziieren Sie den IR-Empfänger
ir = NEC_8(ir_pin, ir_callback)
ir.error_function(print_error) # Optional: um Fehler auszudrucken
try:
while True:
time.sleep(1) # Halten Sie den Hauptthread am Leben
except KeyboardInterrupt:
ir.close()
print("Program terminated")
Wenn Sie diesen Code ausführen und Tasten auf Ihrer Infrarot-Fernbedienung drücken, zeigt die Thonny Shell (oder ein anderer serieller Monitor) den Namen der Taste an, die Sie gedrückt haben. Zum Beispiel, wenn Sie die „PLAY“-Taste auf der Fernbedienung drücken, zeigt die Shell „Empfangener Schlüssel: PLAY“ an.
Verständnis des Codes
Import-Module:
ir_rx.nec.NEC_8: Der NEC-Protokolldekoder für 8-Bit-Adressen.print_error: Funktion zum Ausdrucken von Fehlermeldungen.
import time from machine import Pin from ir_rx.nec import NEC_8 from ir_rx.print_error import print_error
Initialisieren Sie den IR-Empfänger-Pin:
ir_pin = Pin(17, Pin.IN)
Definieren Sie die Callback-Funktion:
Diese Funktion wird automatisch aufgerufen, wenn Daten empfangen werden. Der Datenparameter enthält den Tastencode.
def ir_callback(data, addr, ctrl): if data < 0: pass # Ignorieren Sie Wiederholungscodes else: key = decode_key(data) print("Received Key:", key)
Dekodieren Sie die Funktionstaste:
Ordnet empfangene Tastencodes menschenlesbaren Beschriftungen zu.
def decode_key(data): key_codes = { 0x45: "POWER", 0x46: "MODE", 0x47: "MUTE", 0x44: "PLAY/PAUSE", 0x40: "BACKWARD", 0x43: "FORWARD", 0x07: "EQ", 0x15: "-", 0x09: "+", 0xD: "U/SD", 0x16: "0", 0x19: "cycle", 0xC: "1", 0x5E: "3", 0x18: "2", 0x8: "4", 0x1C: "5", 0x5A: "6", 0x42: "7", 0x52: "8", 0x4A: "9", 0x0: "ERROR", # Fügen Sie weitere Tastencodes basierend auf Ihrer Fernbedienung hinzu } return key_codes.get(data, "UNKNOWN")
Instanziieren Sie den IR-Empfänger:
Richtet den IR-Empfänger mit der Callback-Funktion ein.
ir = NEC_8(ir_pin, ir_callback) ir.error_function(print_error)
Hauptprogrammschleife:
Hält das Programm am Laufen, um auf IR-Signale zu hören. Behandelt das Programmende anmutig.
try: while True: time.sleep(1) except KeyboardInterrupt: ir.close() print("Program terminated")
Anwendungen
Projekte drahtlos steuern: Verwenden Sie die IR-Fernbedienung, um LEDs, Motoren oder andere Peripheriegeräte zu steuern.
Einen universellen Fernbedienungsdecoder bauen: Erweitern Sie den Code, um mehrere Protokolle oder Fernbedienungen zu handhaben.
Fazit
In dieser Lektion haben Sie gelernt, wie man einen IR-Empfänger mit dem Raspberry Pi Pico 2 verwendet, um Signale von einer Infrarot-Fernbedienung zu dekodieren. Dies ermöglicht es Ihnen, drahtlose Steuerung zu Ihren Projekten hinzuzufügen, die gängige Haushaltsfernbedienungen verwenden.