Raspberry Pi - Ultraschallsensor - Servomotor

Dieses Tutorial zeigt Ihnen, wie Sie Raspberry Pi und Ultraschallsensor zur Steuerung eines Servomotors verwenden. Im Detail:

Benötigte Hardware

1×Raspberry Pi 5
1×Ultraschallsensor
1×Servomotor
1×Jumper Kabel
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 Servomotor und Ultraschallsensor

Falls Sie nicht mit Servomotor und Ultraschallsensor vertraut sind (Pinbelegung, Funktionsweise, Programmierung ...), können Ihnen die folgenden Tutorials helfen:

Schaltplan

Raspberry Pi Ultraschallsensor Servomotor Schaltplan

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 der oben gezeigte Schaltplan nur für einen Servomotor mit niedrigem Drehmoment geeignet ist. Falls der Motor vibriert anstatt zu rotieren, muss eine externe Stromquelle verwendet werden, um mehr Leistung für den Servomotor bereitzustellen. Das Folgende zeigt den Schaltplan mit einer externen Stromquelle für den Servomotor.

TO BE ADD IMAGE

Bitte vergessen Sie nicht, GND der externen Stromquelle mit GND des Raspberry Pi zu verbinden.

Raspberry Pi Code - Ultraschallsensor steuert Servomotor

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 Sie den Raspberry Pi einrichten
  • Verbinden Sie Ihren PC über SSH mit dem Raspberry Pi, verwenden Sie den integrierten SSH-Client 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-Skript-Datei ultrasonic_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-ultrasonic-sensor-servo-motor import RPi.GPIO as GPIO import time # Constants TRIG_PIN = 2 # Raspberry Pi GPIO pin connected to TRIG pin of ultrasonic sensor ECHO_PIN = 3 # Raspberry Pi GPIO pin connected to ECHO pin of ultrasonic sensor SERVO_PIN = 18 # Raspberry Pi GPIO pin connected to servo motor DISTANCE_THRESHOLD = 50 # in centimeters # Setup GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(TRIG_PIN, GPIO.OUT) GPIO.setup(ECHO_PIN, GPIO.IN) GPIO.setup(SERVO_PIN, GPIO.OUT) # Create PWM instance for servo servo_pwm = GPIO.PWM(SERVO_PIN, 50) # 50 Hz frequency servo_pwm.start(0) # Initialize servo position def measure_distance(): # Generate 10-microsecond pulse to TRIG pin GPIO.output(TRIG_PIN, GPIO.HIGH) time.sleep(0.00001) GPIO.output(TRIG_PIN, GPIO.LOW) # Measure duration of pulse from ECHO pin pulse_start = time.time() pulse_end = pulse_start while GPIO.input(ECHO_PIN) == 0 and time.time() - pulse_start < 0.1: pulse_start = time.time() while GPIO.input(ECHO_PIN) == 1 and time.time() - pulse_end < 0.1: pulse_end = time.time() duration = pulse_end - pulse_start # Calculate the distance distance_cm = duration * 34300 / 2 return distance_cm try: while True: # Measure distance distance_cm = measure_distance() if distance_cm < DISTANCE_THRESHOLD: # Rotate servo motor to 90 degrees servo_pwm.ChangeDutyCycle(7.5) else: # Rotate servo motor to 0 degrees servo_pwm.ChangeDutyCycle(2.5) # Print the value print(f"Distance: {distance_cm:.2f} cm") time.sleep(0.5) except KeyboardInterrupt: servo_pwm.stop() GPIO.cleanup()
  • Speichern Sie die Datei und führen Sie das Python-Skript aus, indem Sie den folgenden Befehl im Terminal eingeben:
python3 ultrasonic_servo.py

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

  • Winken Sie mit Ihrer Hand vor dem Sensor.
  • Beobachten Sie die Bewegung des Servomotors.

※ Notiz:

Der obige Code ist für Bildungszwecke gedacht. Der Ultraschallsensor ist sehr anfällig für Störungen. Wenn Sie den Ultraschallsensor in einer praktischen Umgebung einsetzen möchten, sollte eine Rauschfilterung angewendet werden. Weitere Informationen zur Filterung von Rauschen bei Entfernungsmessungen eines Ultraschallsensors finden Sie in diesem Tutorial.

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!