Raspberry Pi - Keypad Türschloss

Dieses Tutorial zeigt Ihnen, wie Sie ein Passwort-Türschlosssystem erstellen, das Raspberry Pi, Keypad, Magnetschloss oder elektromagnetisches Schloss und LCD-Display verwendet.

Raspberry Pi Keypad Door Lock

Wenn ein Benutzer ein korrektes Passwort über das Keypad eingibt, deaktiviert der Raspberry Pi das Magnetschloss, um die Tür zu entsperren. Die Tür bleibt für eine bestimmte Zeit entsperrt (z.B. 20 Sekunden), bevor sie sich automatisch wieder verriegelt. Der Raspberry Pi Code ermöglicht die Verwendung mehrerer Passwörter.

Um es einfach zu machen, ist das Tutorial in mehrere Schritte unterteilt, von einfach bis schwierig:

Erforderliche Hardware

1×Raspberry Pi 5
1×Tastenfeld 3x4 und 4x4 Kit
1×Relais
1×Magnetschloss
1×12V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
1×(Optional) Elektromagnetisches Schloss
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 Keypad, Magnetschloss und elektromagnetisches Schloss

Sowohl das Magnetschloss als auch das elektromagnetische Schloss werden zum Verriegeln/Entriegeln der Tür verwendet. Sie unterscheiden sich hauptsächlich in ihrem mechanischen Design. Ihre Verkabelung zum Raspberry Pi ist ähnlich. Der Raspberry Pi Code zur Steuerung ist derselbe.

Falls Sie nicht mit Keypad, Magnetschloss und elektromagnetischem Schloss vertraut sind (Pinout, Funktionsweise, Programmierung ...), können Ihnen die folgenden Tutorials helfen:

Schaltplan

  • Schaltplan mit Raspberry Pi, Keypad und Magnetschloss
Raspberry Pi, keypad, solenoid lock wiring diagram

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

  • Schaltplan mit Raspberry Pi, Keypad und elektromagnetischem Schloss
Raspberry Pi, keypad, electromagnetic lock 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 - Keypad Türschloss

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 demselben lokalen Netzwerk wie Ihr PC verbunden ist.
  • Stellen Sie sicher, dass Ihr Raspberry Pi mit dem Internet verbunden ist, falls Sie Bibliotheken installieren müssen.
  • Falls Sie den Raspberry Pi zum ersten Mal verwenden, siehe wie man den Raspberry Pi einrichtet
  • Verbinden Sie Ihren PC über SSH mit dem Raspberry Pi unter Verwendung des integrierten SSH-Clients unter Linux und macOS oder PuTTY unter Windows. Siehe wie Sie Ihren PC über SSH mit dem Raspberry Pi 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-Skriptdatei keypad_lock.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-door-lock 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] RELAY_PIN = 16 # Adjust this to the actual GPIO pin connected to the relay # 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) # Set up relay pin as an output GPIO.setup(RELAY_PIN, GPIO.OUT) GPIO.output(RELAY_PIN, GPIO.LOW) # Initially, keep the relay off 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.") GPIO.output(RELAY_PIN, GPIO.HIGH) # Activate the relay time.sleep(20) # Wait for 20 seconds GPIO.output(RELAY_PIN, GPIO.LOW) # Deactivate the relay 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-Skript aus, indem Sie folgenden Befehl im Terminal ausführen:
python3 keypad_lock.py
  • Geben Sie 1111 ein und drücken Sie #.
  • Geben Sie dann 1234 ein und drücken Sie #.
  • Überprüfen Sie den Zustand der Schlossverriegelung für 20 Sekunden.
  • Überprüfen Sie das Ergebnis auf dem Serial Monitor.
PuTTY - Raspberry Pi
Incorrect password. Try again. Password correct! Access granted.

Das Skript läuft in einer unendlichen Schleife kontinuierlich, bis Sie Ctrl + C im Terminal drücken.

Code-Erklärung

Die gültigen Passwörter sind im Raspberry Pi Code vordefiniert. Ein String wird verwendet, um das von Benutzern eingegebene Passwort zu speichern, der als Eingabe-String bezeichnet wird. Auf dem Keypad werden zwei Tasten (* und #) für spezielle Funktionen verwendet: Löschen des Passworts und Beenden des Passworts. Das System funktioniert folgendermaßen:

  • Abgesehen von den beiden Spezialtasten wird jede andere gedrückte Taste dem Eingabe-String hinzugefügt.
  • Wenn * gedrückt wird, wird der Eingabe-String gelöscht. Dies kann verwendet werden, um die Passworteingabe zu starten oder neu zu starten.
  • Wenn # gedrückt wird:
    • Der Raspberry Pi vergleicht den Eingabe-String mit den vordefinierten Passwörtern. Wenn er mit einem der vordefinierten Passwörter übereinstimmt, deaktiviert der Raspberry Pi das Relay, um die Tür zu entsperren.
    • Unabhängig davon, ob das Passwort korrekt ist oder nicht, löscht der Raspberry Pi den Eingabe-String für die nächste Eingabe.

Raspberry Pi Code - Mehrere Schlüssel

# 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-door-lock 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] RELAY_PIN = 16 # Adjust this to the actual GPIO pin connected to the relay # Passwords to unlock PASSWORDS = [ [1, 2, 3, 4], # 1st password 1234 [5, 6, 7, 8], # 2nd password 5678 [9, 0, 1, 2] # 3rd password 9012 ] # 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) # Set up relay pin as an output GPIO.setup(RELAY_PIN, GPIO.OUT) GPIO.output(RELAY_PIN, GPIO.LOW) # Initially, keep the relay off 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 in PASSWORDS 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.") GPIO.output(RELAY_PIN, GPIO.HIGH) # Activate the relay time.sleep(20) # Wait for 20 seconds GPIO.output(RELAY_PIN, GPIO.LOW) # Deactivate the relay 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()

Hinzufügen eines Türsensors zum Keypad-Türschloss

Im zuvor erwähnten Code verriegelt der Raspberry Pi die Tür nach einem Timeout seit der Entriegelung. In praktischen Anwendungen wird jedoch normalerweise ein Türsensor zum System hinzugefügt. Wenn der Raspberry Pi erkennt, dass die Tür geschlossen ist, verriegelt er die Tür sofort, anstatt auf das Timeout zu warten.

Um Sie nicht zu überlasten, haben wir den Türsensor nicht in den Schaltplan und Code aufgenommen. Stattdessen überlassen wir diesen Teil Ihrer Kreativität. Sie können die Tutorials Raspberry Pi - Door Sensor und Raspberry Pi - Door Sensor control Relay für weitere Anleitung lesen.

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!