Raspberry Pi - Keypad

Dieses Tutorial zeigt Ihnen, wie Sie Raspberry Pi mit 3x4 und 4x4 Keypads verwenden. Im Detail lernen wir:

Erforderliche Hardware

1×Raspberry Pi 5
1×Tastenfeld 3x4 und 4x4 Kit
1×(Empfohlen) Schraubklemmenblock-Shield für Raspberry Pi
1×(Empfohlen) Raspberry Pi Prototyping-Grundplatte & Breadboard-Kit
1×(Empfohlen) HDMI-Touchscreen-Monitor für Raspberry Pi

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das Keypad

Keypad

Ein Keypad ist eine Sammlung von Tasten, die in Zeilen und Spalten angeordnet sind, was als Matrix bezeichnet wird. Jede einzelne Taste wird als Key bezeichnet. Es gibt verschiedene Arten von Keypads. Zwei der am häufigsten für DIY-Projekte verwendeten sind das 3x4 (12 Tasten) und 4x4 (16 Tasten).

Das Keypad Pinout

Die Pins sind in zwei Kategorien unterteilt: Zeilen und Spalten.

  • Ein 3x4 Keypad hat sieben Pins: Vier davon sind Zeilen-Pins, bezeichnet als R1, R2, R3 und R4. Die verbleibenden drei sind Spalten-Pins, bezeichnet als C1, C2 und C3.
  • Ein 4x4 Keypad hat acht Pins: Vier davon sind Zeilen-Pins, bezeichnet als R1, R2, R3 und R4. Die anderen vier sind Spalten-Pins, bezeichnet als C1, C2, C3 und C4.
Keypad pinout

Schaltplan

  • Der Schaltplan zwischen Raspberry Pi und 3x4 Keypad
Raspberry Pi Keypad 3x4 wiring diagram

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

  • Der Schaltplan zwischen Raspberry Pi und 4x4 Keypad
Raspberry Pi Keypad 3x4 wiring diagram

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Um Ihren Verdrahtungsaufbau zu vereinfachen und zu organisieren, empfehlen wir die Verwendung eines Schraubklemmenblock-Shields für Raspberry Pi. Dieses Shield gewährleistet sicherere und besser verwaltbare Verbindungen, wie unten gezeigt:

Raspberry Pi Schraubklemmenblock-Shield

Raspberry Pi Code

Raspberry Pi Code für 3x4 Keypad

# Dieser Raspberry Pi Code wurde von newbiely.de entwickelt # Dieser Raspberry Pi Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. # Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: # https://newbiely.de/tutorials/raspberry-pi/raspberry-pi-keypad import RPi.GPIO as GPIO import time # Define keypad layout KEYPAD = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ['*', 0, '#'] ] # Define GPIO pins for rows and columns ROWS = [4, 17, 27, 22] COLS = [5, 6, 13] # Initialize GPIO GPIO.setmode(GPIO.BCM) # Set up row pins as inputs with pull-up resistors for row_pin in ROWS: GPIO.setup(row_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set up column pins as outputs for col_pin in COLS: GPIO.setup(col_pin, GPIO.OUT) GPIO.output(col_pin, GPIO.HIGH) def get_key(): key = None # Scan each column for col_num, col_pin in enumerate(COLS): GPIO.output(col_pin, GPIO.LOW) # Check each row for row_num, row_pin in enumerate(ROWS): if GPIO.input(row_pin) == GPIO.LOW: key = KEYPAD[row_num][col_num] # Wait for key release while GPIO.input(row_pin) == GPIO.LOW: time.sleep(0.05) GPIO.output(col_pin, GPIO.HIGH) return key try: while True: pressed_key = get_key() if pressed_key is not None: print(f"Pressed: {pressed_key}") time.sleep(0.1) except KeyboardInterrupt: GPIO.cleanup()

Raspberry Pi Code für 4x4 Keypad

# Dieser Raspberry Pi Code wurde von newbiely.de entwickelt # Dieser Raspberry Pi Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. # Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: # https://newbiely.de/tutorials/raspberry-pi/raspberry-pi-keypad import RPi.GPIO as GPIO import time # Define keypad layout KEYPAD = [ [1, 2, 3, 'A'], [4, 5, 6, 'B'], [7, 8, 9, 'C'], ['*', 0, '#', 'D'] ] # Define GPIO pins for rows and columns ROWS = [4, 17, 27, 22] COLS = [5, 6, 13, 19] # Initialize GPIO GPIO.setmode(GPIO.BCM) # Set up row pins as inputs with pull-up resistors for row_pin in ROWS: GPIO.setup(row_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set up column pins as outputs for col_pin in COLS: GPIO.setup(col_pin, GPIO.OUT) GPIO.output(col_pin, GPIO.HIGH) def get_key(): key = None # Scan each column for col_num, col_pin in enumerate(COLS): GPIO.output(col_pin, GPIO.LOW) # Check each row for row_num, row_pin in enumerate(ROWS): if GPIO.input(row_pin) == GPIO.LOW: key = KEYPAD[row_num][col_num] # Wait for key release while GPIO.input(row_pin) == GPIO.LOW: time.sleep(0.05) GPIO.output(col_pin, GPIO.HIGH) return key try: while True: pressed_key = get_key() if pressed_key is not None: print(f"Pressed: {pressed_key}") time.sleep(0.1) except KeyboardInterrupt: GPIO.cleanup()

Schnelle Schritte

  • Stellen Sie sicher, dass Sie Raspbian oder ein anderes Raspberry Pi-kompatibles Betriebssystem auf Ihrem Pi installiert haben.
  • Stellen Sie sicher, dass Ihr Raspberry Pi mit dem gleichen lokalen Netzwerk wie Ihr PC verbunden ist.
  • Stellen Sie sicher, dass Ihr Raspberry Pi mit dem Internet verbunden ist, falls Sie einige Bibliotheken installieren müssen.
  • Wenn Sie Raspberry Pi zum ersten Mal verwenden, siehe Raspberry Pi einrichten
  • Verbinden Sie Ihren PC über SSH mit dem Raspberry Pi, indem Sie den integrierten SSH-Client unter Linux und macOS oder PuTTY unter Windows verwenden. Siehe PC mit Raspberry Pi über SSH verbinden.
  • Stellen Sie sicher, dass Sie die RPi.GPIO Bibliothek installiert haben. Falls nicht, installieren Sie sie mit folgendem Befehl:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Erstellen Sie eine Python-Script-Datei keypad.py und fügen Sie einen der obigen Codes hinzu.
  • Speichern Sie die Datei und führen Sie das Python-Script aus, indem Sie folgenden Befehl im Terminal eingeben:
python3 keypad.py

Das Script läuft in einer Endlosschleife kontinuierlich, bis Sie Ctrl + C im Terminal drücken.

  • Drücken Sie einige Tasten auf dem Keypad.
  • Überprüfen Sie das Ergebnis im Serial Monitor.
PuTTY - Raspberry Pi
3 6 9 4 * #

Keypad und Passwort

Eine häufige Verwendung eines Keypads ist die Eingabe eines Passworts. Wir verwenden zwei spezifische Tasten für diesen Zweck:

  • Eine Taste zum Starten oder Neustarten der Passwort-Eingabe, wie die "*"-Taste
  • Eine Taste zum Beenden der Passwort-Eingabe, wie die "#"-Taste

Das Passwort besteht aus einem String, der alle anderen Tasten enthält, außer den beiden spezifischen Spezialtasten.

Wenn eine Taste gedrückt wird:

  • Wenn die Taste nicht "*" oder "#" ist, fügen Sie die Taste zum Benutzer-Eingabe-Passwort-String hinzu.
  • Wenn die Taste "#" ist, vergleichen Sie den Benutzer-Eingabe-String mit den gültigen Passwörtern, um zu bestimmen, ob das eingegebene Passwort korrekt ist, und löschen Sie dann den Benutzer-Eingabe-Passwort-String.
  • Wenn die Taste "*" ist, löschen Sie den Benutzer-Eingabe-Passwort-String.

Keypad - Passwort Code

Schnelle Schritte

  • Erstellen Sie eine Python-Script-Datei keypad_password.py und fügen Sie folgenden Code hinzu:
# Dieser Raspberry Pi Code wurde von newbiely.de entwickelt # Dieser Raspberry Pi Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. # Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: # https://newbiely.de/tutorials/raspberry-pi/raspberry-pi-keypad import RPi.GPIO as GPIO import time # Define keypad layout KEYPAD = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ['*', 0, '#'] ] # Define GPIO pins for rows, columns, and relay ROW_PINS = [17, 27, 22, 24] COL_PINS = [25, 8, 7] # Password to unlock PASSWORD = [1, 2, 3, 4] # Initialize GPIO GPIO.setmode(GPIO.BCM) # Set up row pins as inputs with pull-up resistors for row_pin in ROW_PINS: GPIO.setup(row_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set up column pins as outputs for col_pin in COL_PINS: GPIO.setup(col_pin, GPIO.OUT) GPIO.output(col_pin, GPIO.HIGH) def get_key(): key = None # Scan each column for col_num, col_pin in enumerate(COL_PINS): GPIO.output(col_pin, GPIO.LOW) # Check each row for row_num, row_pin in enumerate(ROW_PINS): if GPIO.input(row_pin) == GPIO.LOW: key = KEYPAD[row_num][col_num] # Wait for key release while GPIO.input(row_pin) == GPIO.LOW: time.sleep(0.05) GPIO.output(col_pin, GPIO.HIGH) return key def check_password(input_password): return input_password == PASSWORD entered_keys = [] try: while True: pressed_key = get_key() if pressed_key is not None: print(f"Pressed: {pressed_key}") if pressed_key == '*': entered_keys = [] # reset the input password elif pressed_key == '#': if check_password(entered_keys): print("Password correct! Access granted.") break else: print("Incorrect password. Try again.") entered_keys = [] # reset the input password else: entered_keys.append(pressed_key) time.sleep(0.1) except KeyboardInterrupt: GPIO.cleanup()
  • Speichern Sie die Datei und führen Sie das Python-Script aus, indem Sie folgenden Befehl im Terminal eingeben:
python3 keypad_password.py

Das Script läuft in einer Endlosschleife kontinuierlich, bis Sie Ctrl + C im Terminal drücken.

  • Führen Sie den obigen Code aus.
  • Öffnen Sie den Serial Monitor.
  • Drücken Sie "123456" gefolgt von der "#"-Taste.
  • Drücken Sie "1234" gefolgt von der "#"-Taste.
  • Überprüfen Sie das Ergebnis im Serial Monitor.
PuTTY - Raspberry Pi
Incorrect password. Try again. Password correct! Access granted.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!