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!
Lektion 23: Ultraschallsensor-Modul (HC-SR04)
In dieser Lektion lernen Sie, wie Sie einen Ultraschall-Entfernungssensor an einen Raspberry Pi anschließen und ein Python-Skript zum Auslesen von Abstandsmessungen schreiben. Wir führen Sie durch den Prozess, den Trigger-Pin des Sensors mit GPIO 17 und den Echo-Pin mit GPIO 27 zu verbinden. Der bereitgestellte Python-Code hilft Ihnen, Entfernungen zu messen und in Zentimetern anzuzeigen.
Erforderliche Komponenten
In diesem Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ITEMS IN THIS KIT |
LINK |
|---|---|---|
Universal Maker Sensor Kit |
94 |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
Component Introduction |
Purchase Link |
|---|---|
Raspberry Pi 5 |
|
Verkabelung
Code
#!/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 17, Echo pin to GPIO 27
sensor = DistanceSensor(echo=27, trigger=17)
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-Analyse
Bibliotheken importieren
Das Skript beginnt mit dem Import von
DistanceSensoraus der gpiozero-Bibliothek für den Ultraschallsensor undsleepaus dem time-Modul zur Steuerung der Zeit.from gpiozero import DistanceSensor from time import sleep
Initialisierung des Entfernungssensors
Ein
DistanceSensor-Objekt namenssensorwird erstellt, wobei die Pinsechoundtriggermit GPIO 27 bzw. GPIO 17 verbunden sind. Diese Pins werden verwendet, um die Ultraschallsignale für die Abstandsmessung zu senden und zu empfangen.sensor = DistanceSensor(echo=27, trigger=17)
Implementierung der kontinuierlichen Überwachungsschleife
Ein
try-Block mit einer Endlosschleife (while True:) wird verwendet, um kontinuierlich den Abstand zu messen.Innerhalb der Schleife gibt
sensor.distancedie gemessene Entfernung in Metern an, die dann in Zentimeter umgerechnet und indisgespeichert wird.Die Entfernung wird mit zwei Dezimalstellen Präzision unter Verwendung der
format-Methode ausgegeben.sleep(0.3)fügt eine Verzögerung von 0,3 Sekunden zwischen jeder Messung hinzu, um die Frequenz der Messungen zu steuern und die CPU-Belastung zu reduzieren.
try: while True: dis = sensor.distance * 100 print('Distance: {:.2f} cm'.format(dis)) sleep(0.3)
Behandlung von KeyboardInterrupt für einen sauberen Abbruch
Der
except-Block wird verwendet, um eine KeyboardInterrupt (typischerweise Strg+C) abzufangen. Wenn dies auftritt, beendet das Skript die Schleife sauber ohne zusätzliche Aktionen.except KeyboardInterrupt: pass