Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

2.2.8 Ultraschallsensormodul

Einführung

Das Ultraschallsensormodul verwendet Ultraschallwellen, um Objekte genau zu erkennen und Distanzen zu messen. Es sendet Ultraschallwellen aus und wandelt diese in elektronische Signale um.

Benötigte Komponenten

Für dieses Projekt benötigen wir folgende Komponenten.

../_images/2.2.8_ultrasonic_list.png

Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM SET

LINK

Raphael Kit

337

Raphael Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Ultraschallmodul

KAUFEN

Schaltplan

../_images/2.2.8_ultrasonic_schematic.png

Experimentelle Verfahren

Schritt 1: Baue die Schaltung.

../_images/2.2.8_ultrasonic_circuit.png

Schritt 2: Gehe zum Ordner des Codes.

cd ~/raphael-kit/python-pi5

Schritt 3: Führe die ausführbare Datei aus.

sudo python3 2.2.8_Ultrasonic_zero.py

Nachdem der Code ausgeführt wurde, erkennt das Ultraschallsensormodul die Distanz zwischen dem Hindernis vor dem Modul und dem Modul selbst, dann wird der Distanzwert auf dem Bildschirm angezeigt.

Warnung

Wenn die Fehlermeldung RuntimeError: Cannot determine SOC peripheral base address angezeigt wird, lesen Sie bitte If gpiozero doesn’t work.

Code

Bemerkung

Sie können den untenstehenden Code modifizieren/zurücksetzen/kopieren/ausführen/stoppen. Bevor Sie das tun, müssen Sie jedoch zum Quellcodepfad wie raphael-kit/python-pi5 wechseln. Nachdem Sie den Code modifiziert haben, können Sie ihn direkt ausführen, um den Effekt zu sehen.

#!/usr/bin/env python3
from gpiozero import DistanceSensor
from time import sleep

# Initialize the DistanceSensor using GPIO Zero library
# Trigger pin is connected to GPIO 23, Echo pin to GPIO 24
sensor = DistanceSensor(echo=24, trigger=23)

try:
    # Main loop to continuously measure and report distance
    while True:
        dis = sensor.distance * 100  # Measure distance and convert from meters to centimeters
        print('Distance: {:.2f} cm'.format(dis))  # Print the distance with two decimal precision
        sleep(0.3)  # Wait for 0.3 seconds before the next measurement

except KeyboardInterrupt:
    # Handle KeyboardInterrupt (Ctrl+C) to gracefully exit the loop
    pass

Code-Erklärung

  1. Importiert die Klasse DistanceSensor aus der gpiozero Bibliothek zur Distanzmessung und die Funktion sleep aus dem Modul time für Verzögerungen.

    #!/usr/bin/env python3
    from gpiozero import DistanceSensor
    from time import sleep
    
  2. Initialisiert den Ultraschallsensor mit dem Echo-Pin an GPIO 24 und dem Trigger-Pin an GPIO 23.

    # Initialize the DistanceSensor using GPIO Zero library
    # Trigger pin is connected to GPIO 23, Echo pin to GPIO 24
    sensor = DistanceSensor(echo=24, trigger=23)
    
  3. Die Hauptschleife misst kontinuierlich die Distanz, wandelt sie von Metern in Zentimeter um und gibt sie mit zwei Dezimalstellen an. Dann wartet sie 0.3 Sekunden und misst die Distanz erneut. Fängt ein KeyboardInterrupt (wie Strg+C) ab, um einen sanften Ausstieg aus dem Skript zu ermöglichen.

    try:
        # Main loop to continuously measure and report distance
        while True:
            dis = sensor.distance * 100  # Measure distance and convert from meters to centimeters
            print('Distance: {:.2f} cm'.format(dis))  # Print the distance with two decimal precision
            sleep(0.3)  # Wait for 0.3 seconds before the next measurement
    
    except KeyboardInterrupt:
        # Handle KeyboardInterrupt (Ctrl+C) to gracefully exit the loop
        pass