Bemerkung
Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauche tiefer in die Welt von Raspberry Pi, Arduino und ESP32 ein – gemeinsam mit Gleichgesinnten.
Warum beitreten?
Expertenunterstützung: Erhalte Hilfe bei technischen Herausforderungen und nach dem Kauf auftretenden Problemen durch unsere Community und unser Team.
Lernen & Teilen: Tausche Tipps und Tutorials aus, um deine Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalte frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezielle Rabatte: Profitiere von exklusiven Preisnachlässen auf unsere neuesten Produkte.
Feierliche Aktionen und Gewinnspiele: Nimm an Verlosungen und saisonalen Aktionen teil.
👉 Bereit, mit uns zu entdecken und zu kreieren? Klicke auf [hier] und werde Teil unserer Community!
6.1 Entfernungsmessung mit einem Ultraschallsensor
In dieser Lektion lernen wir, wie man ein Ultraschallsensormodul mit dem Raspberry Pi Pico 2 verwendet, um die Entfernung zu einem Objekt zu messen. Ultraschallsensoren werden häufig in Robotik- und Automatisierungssystemen zur Objekterkennung und Distanzmessung eingesetzt.
Benötigte Komponenten
Für dieses Projekt werden folgende Komponenten benötigt.
Ein komplettes Kit ist besonders praktisch. Hier ist der Link:
Name |
ENTHALTENE TEILE |
LINK |
|---|---|---|
Newton Lab Kit |
450+ |
Alternativ können die Komponenten auch einzeln über die folgenden Links erworben werden.
SN |
KOMPONENTE |
MENGE |
LINK |
|---|---|---|---|
1 |
1 |
||
2 |
Micro-USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
1 |
Funktionsweise des Ultraschallsensors
Der Ultraschallsensor sendet einen kurzen Ultraschallimpuls über den Trig-Pin aus und wartet auf das Echo am Echo-Pin. Durch die Messung der Zeit, die das Echo für die Rückkehr benötigt, kann die Entfernung zu einem Objekt anhand der Schallgeschwindigkeit berechnet werden.

Triggerimpuls: Ein 10-Mikrosekunden-High-Puls am Trig-Pin startet die Messung.
Ultraschallimpuls: Der Sensor sendet eine 8-Zyklen-Ultraschallwelle mit 40 kHz aus.
Echoempfang: Der Echo-Pin geht auf HIGH und bleibt so lange aktiv, bis das Echo zurückkehrt.
Zeitmessung: Durch die Dauer des HIGH-Signals am Echo-Pin kann die Entfernung berechnet werden.
Schaltplan

Verdrahtungsdiagramm

Code schreiben
Nun schreiben wir ein MicroPython-Programm zur Entfernungsmessung mit dem Ultraschallsensor.
Bemerkung
Öffne
6.1_measuring_distance.pyausnewton-lab-kit/micropythonoder kopiere den Code in Thonny, dann klicke auf „Run“ oder drücke F5.Stelle sicher, dass der richtige Interpreter ausgewählt ist: MicroPython (Raspberry Pi Pico).COMxx.
import machine
import utime
# Definiere die Pins für den Sensor
TRIG = machine.Pin(17, machine.Pin.OUT)
ECHO = machine.Pin(16, machine.Pin.IN)
def measure_distance():
# Stelle sicher, dass der Trigger-Pin LOW ist
TRIG.low()
utime.sleep_us(2)
# Sende einen 10µs-Puls zur Messung
TRIG.high()
utime.sleep_us(10)
TRIG.low()
# Warte auf den Start des Echos
while ECHO.value() == 0:
pass
start_time = utime.ticks_us()
# Warte auf das Ende des Echos
while ECHO.value() == 1:
pass
end_time = utime.ticks_us()
# Berechne die Dauer des Echo-Impulses
duration = utime.ticks_diff(end_time, start_time)
# Berechne die Entfernung (Schallgeschwindigkeit: 34300 cm/s)
distance = (duration * 0.0343) / 2
return distance
while True:
dist = measure_distance()
print("Distance: {:.2f} cm".format(dist))
utime.sleep(0.5)
Sobald der Code ausgeführt wird, zeigt die Thonny-Shell die gemessenen Entfernungswerte in Zentimetern an. Bewege ein Objekt näher an den Sensor heran oder weiter weg, um die veränderten Messwerte zu beobachten.
Den Code verstehen
Notwendige Module importieren und die Trigger- und Echo-Pins einrichten:
import machine import utime TRIG = machine.Pin(17, machine.Pin.OUT) ECHO = machine.Pin(16, machine.Pin.IN)
Entfernung messen:
Sendet einen Triggerimpuls, um die Messung zu starten.
Wartet auf das empfangene Echo.
Berechnet die Dauer des Echo-Impulses.
Ermittelt die Entfernung basierend auf der Schallgeschwindigkeit.
def measure_distance(): # Sicherstellen, dass der Trigger-Pin LOW ist TRIG.low() utime.sleep_us(2) # 10µs-Impuls zur Messung senden TRIG.high() utime.sleep_us(10) TRIG.low() # Auf den Beginn des Echo-Signals warten while ECHO.value() == 0: pass start_time = utime.ticks_us() # Warten, bis das Echo endet while ECHO.value() == 1: pass end_time = utime.ticks_us() # Dauer des Echo-Impulses berechnen duration = utime.ticks_diff(end_time, start_time) # Entfernung berechnen distance = (duration * 0.0343) / 2 return distance
Hauptschleife:
Misst kontinuierlich die Entfernung und gibt sie aus.
Legt eine halbe Sekunde Pause zwischen den Messungen ein.
while True: dist = measure_distance() print("Distance: {:.2f} cm".format(dist)) utime.sleep(0.5)
Einschränkungen verstehen
Blockierender Code:
Die while-Schleifen zum Warten auf das Echo können verhindern, dass andere Codeabschnitte parallel ausgeführt werden.
Für fortgeschrittene Anwendungen sollten Interrupts oder asynchrone Programmierung in Betracht gezogen werden, um Blockierungen zu vermeiden.
Messbereich:
Der HC-SR04-Sensor hat typischerweise einen Messbereich von 2 cm bis 400 cm.
Objekte, die näher als 2 cm oder weiter als 400 cm entfernt sind, werden möglicherweise nicht genau erkannt.
Umwelteinflüsse:
Temperatur und Luftfeuchtigkeit können die Schallgeschwindigkeit beeinflussen.
Für genauere Messungen kann die Schallgeschwindigkeit an die Umgebungsbedingungen angepasst werden.
Fazit
Du hast erfolgreich einen Ultraschallsensor genutzt, um mit dem Raspberry Pi Pico 2 Entfernungen zu messen. Diese grundlegende Fähigkeit findet breite Anwendung in der Robotik, Automatisierung und interaktiven Projekten.