Raspberry Pi - Keypad - Servo Motor

Dieses Tutorial zeigt Ihnen, wie Sie den Raspberry Pi und ein Keypad verwenden, um einen Servo Motor zu steuern. Im Detail:

Der Code für den Raspberry Pi erlaubt auch die Verwendung mehrerer Passwörter.

Benötigte Hardware

1×Raspberry Pi 5
1×Tastenfeld
1×Servo-Motor
1×5V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
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.

Kaufhinweis: Falls Sie mehrere Servomotoren verwenden möchten, empfehlen wir die Verwendung des PCA9685 16 Channel PWM Servo Driver Module, um MCU-Pins zu sparen und die Verdrahtung zu vereinfachen.

Über Keypad und Servo Motor

Falls Sie nicht mit Keypad und Servo Motor vertraut sind (einschließlich Pinout, Funktionalität, Programmierung usw.), können Ihnen die folgenden Tutorials helfen:

Verdrahtungsdiagramm

Raspberry Pi keypad servo motor 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

Bitte beachten Sie, dass das oben gezeigte Verdrahtungsdiagramm nur für einen Servo Motor mit geringem Drehmoment geeignet ist. Falls der Motor vibriert anstatt zu rotieren, muss eine externe Stromversorgung verwendet werden, um mehr Leistung für den Servo Motor bereitzustellen. Das folgende zeigt das Verdrahtungsdiagramm mit einer externen Stromversorgung für den Servo Motor.

TO BE ADD IMAGE

Vergessen Sie bitte nicht, GND der externen Stromversorgung mit GND des Raspberry Pi zu verbinden.

Raspberry Pi Code - rotiert Servo Motor bei korrektem Passwort

Wenn das Passwort korrekt ist, wird der Servo Motor für eine Dauer von 5 Sekunden auf 90° eingestellt. Nach Ablauf der 5 Sekunden wird der Servo Motor auf 0° zurückgesetzt.

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 einige Bibliotheken installieren müssen.
  • Falls Sie den Raspberry Pi zum ersten Mal verwenden, sehen Sie wie Sie den 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 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-Skript-Datei keypad_servo.py und fügen Sie den 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-servo-motor 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 servo motor ROW_PINS = [17, 27, 22, 24] COL_PINS = [25, 8, 7] SERVO_PIN = 16 # Adjust this to the actual GPIO pin connected to the servo motor # 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 servo pin as an output GPIO.setup(SERVO_PIN, GPIO.OUT) servo = GPIO.PWM(SERVO_PIN, 50) # 50 Hz frequency # Function to move servo to a specified angle def move_servo(angle): duty_cycle = (angle / 18) + 2.5 servo.ChangeDutyCycle(duty_cycle) time.sleep(1) # Adjust this sleep duration based on servo response time 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.") move_servo(90) time.sleep(20) # Wait for 20 seconds move_servo(0) 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 den folgenden Befehl im Terminal ausführen:
python3 keypad_servo.py

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

  • Drücken Sie 12345#
  • Geben Sie 5642B# ein
  • Überprüfen Sie das Ergebnis im Serial Monitor und die Position des Servo Motors.
PuTTY - Raspberry Pi
The incorrect password! try again The correct password! Rotating Servo Motor to 90° Rotating Servo Motor to 0°

Code-Erklärung

Die gültigen Passwörter sind im Raspberry Pi Code vordefiniert. Ein String, bezeichnet als input_password, wird verwendet, um das von Benutzern eingegebene Passwort zu speichern. Auf dem Keypad werden zwei Tasten (* und #) für besondere Zwecke verwendet: das Löschen des Passworts und das Beenden des Passworts. Wenn eine Taste auf dem Keypad gedrückt wird:

  • Falls die gedrückte Taste nicht eine der beiden besonderen Tasten ist, wird sie zum input_password hinzugefügt.
  • Falls die gedrückte Taste * ist, wird das input_password gelöscht. Dies kann verwendet werden, um die Passwort-Eingabe zu starten oder neu zu starten.
  • Falls die gedrückte Taste # ist:
    • Der Raspberry Pi überprüft, ob das input_password mit einem der vordefinierten Passwörter übereinstimmt, der Servo Motor wird auf 90° rotieren.
    • Unabhängig davon, ob das Passwort korrekt ist oder nicht, wird das input_password für die nächste Eingabe gelöscht.
    • Nach einer gewissen Zeit rotiert der ESP8266 den Servo Motor auf 0°.

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!