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+

Newton Lab Kit

Alternativ können die Komponenten auch einzeln über die folgenden Links erworben werden.

SN

KOMPONENTE

MENGE

LINK

1

Raspberry Pi Pico 2

1

KAUFEN

2

Micro-USB-Kabel

1

3

Steckbrett

1

KAUFEN

4

Jumperkabel

Mehrere

KAUFEN

5

Ultraschallmodul

1

KAUFEN

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.

ultrasonic_prin

  • 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

sch_ultrasonic

Verdrahtungsdiagramm

wiring_ultrasonic

Code schreiben

Nun schreiben wir ein MicroPython-Programm zur Entfernungsmessung mit dem Ultraschallsensor.

Bemerkung

  • Öffne 6.1_measuring_distance.py aus newton-lab-kit/micropython oder 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

  1. 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)
    
  2. 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
    
  3. 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.