HC-SR04 am Raspberry Pi Pico mit MicroPython auslesen

Der HC-SR04 ist ein günstiger und weit verbreiteter Ultraschallsensor zur Abstandsmessung. In diesem Beitrag zeige ich dir, wie du das Modul an einen Raspberry Pi Pico anschließt und mit MicroPython ausliest.

Was ist der HC-SR04?

Der HC-SR04 misst Entfernungen mit Ultraschall. Nach einem kurzen Triggerimpuls sendet das Modul einen Ultraschallburst aus und setzt den ECHO-Pin auf HIGH. Die Länge dieses ECHO-Impulses entspricht der Laufzeit des Schallsignals. Daraus lässt sich der Abstand berechnen.

Wichtiger Hinweis zum Raspberry Pi Pico

Der Raspberry Pi Pico arbeitet mit 3,3 Volt Logik. Das HC-SR04-Modul wird typischerweise mit 5 Volt betrieben, und der ECHO-Ausgang kann ebenfalls mit 5 Volt arbeiten. Deshalb sollte das ECHO-Signal nicht direkt an einen GPIO des Pico angeschlossen werden.

Verwende bitte einen Spannungsteiler, damit aus dem 5V-ECHO-Signal ein sicheres 3,3V-Signal für den Pico wird.

Benötigte Teile

  • Raspberry Pi Pico
  • HC-SR04 Ultraschallsensor
  • Jumper-Kabel
  • 2 Widerstände für den Spannungsteiler, zum Beispiel 1 kΩ und 2 kΩ
  • MicroPython auf dem Pico

Verdrahtung

  • HC-SR04 VCCVBUS / 5V am Pico
  • HC-SR04 GNDGND
  • HC-SR04 TRIGGP3
  • HC-SR04 ECHOGP2 über Spannungsteiler

Beispiel für den Spannungsteiler:
ECHO vom Sensor → 1 kΩ → Messpunkt zum Pico GP2 → 2 kΩ → GND

So funktioniert die Messung

Der Sensor startet eine Messung, wenn am TRIG-Pin ein HIGH-Impuls von mindestens 10 Mikrosekunden anliegt. Danach sendet das Modul Ultraschall aus. Der ECHO-Pin bleibt so lange auf HIGH, bis das Signal reflektiert zurückkommt. Genau diese Zeit messen wir im Python-Programm.

MicroPython-Programm für den Raspberry Pi Pico

from machine import Pin, time_pulse_us
from time import sleep_us, sleep_ms

# Pins anpassen
TRIG_PIN = 3
ECHO_PIN = 2

trig = Pin(TRIG_PIN, Pin.OUT)
echo = Pin(ECHO_PIN, Pin.IN)

trig.value(0)
sleep_ms(2)

def measure_distance_cm():
    # Triggerimpuls erzeugen
    trig.low()
    sleep_us(2)
    trig.high()
    sleep_us(10)
    trig.low()

    # ECHO-Pulsdauer messen
    duration = time_pulse_us(echo, 1, 30000)  # Timeout 30 ms

    # Fehler abfangen
    if duration < 0:
        return None, duration

    # Distanz berechnen
    # Schallgeschwindigkeit ca. 343 m/s = 34300 cm/s
    # Hin- und Rückweg des Signals -> durch 2 teilen
    distance_cm = (duration / 1000000) * 34300 / 2
    return distance_cm, duration

while True:
    distance, pulse_us = measure_distance_cm()

    if distance is None:
        print("Kein Echo / Timeout, Code:", pulse_us)
    else:
        print("Echo:", pulse_us, "us | Abstand:", round(distance, 2), "cm")

    sleep_ms(500)

Erklärung zum Code

Zuerst definieren wir die beiden Pins für TRIG und ECHO. Anschließend wird in der Funktion measure_distance_cm() ein kurzer Triggerimpuls erzeugt. Mit time_pulse_us() misst MicroPython dann die Länge des HIGH-Pulses am ECHO-Pin in Mikrosekunden.

Aus dieser Pulsdauer wird der Abstand in Zentimetern berechnet. Da das Schallsignal den Weg zum Objekt und wieder zurück zurücklegt, wird das Ergebnis durch 2 geteilt.

Beispielausgabe

Echo: 1450 us | Abstand: 24.87 cm
Echo: 1448 us | Abstand: 24.84 cm
Echo: 1452 us | Abstand: 24.91 cm

Typische Fehlerquellen

  • ECHO direkt an den Pico angeschlossen statt über Spannungsteiler
  • TRIG und ECHO vertauscht
  • Kein gemeinsamer GND zwischen Pico und Sensor
  • Zu großes oder schlecht reflektierendes Objekt
  • Objekt außerhalb des Messbereichs

Fazit

Der HC-SR04 lässt sich mit wenigen Bauteilen problemlos am Raspberry Pi Pico betreiben. Mit MicroPython ist die Auswertung besonders einfach, und das Modul eignet sich sehr gut für Robotik, Abstandswarnung oder Hinderniserkennung.

Im nächsten Schritt kann man die gemessenen Werte zum Beispiel auf einem Display anzeigen, per WLAN versenden oder zur Steuerung eines Roboters verwenden.

  • Anschlus de HC-SR04 an die PI Familie

    HC-SR04 sicher am Raspberry Pi Pico anschließen Der HC-SR04 ist ein beliebter Ultraschallsensor zur Abstandsmessung. Er wird in der Regel mit 5 Volt betrieben und liefert am ECHO-Pin ebenfalls ein 5V-Signal. Genau…

    admin avatar

  • Der PI Pico2W und das Echolot HC-SR04

    HC-SR04 am Raspberry Pi Pico mit MicroPython auslesen Der HC-SR04 ist ein günstiger und weit verbreiteter Ultraschallsensor zur Abstandsmessung. In diesem Beitrag zeige ich dir, wie du das Modul an einen Raspberry…

    admin avatar

  • Den Pico 2W in Betrieb nehmen

    Blog Die offiziellen Schritte sind eindeutig: Für den Pico läuft typischerweise MicroPython, nicht ein normales Linux mit CPython. Der Pico wird per UF2-Firmware geflasht; dabei erscheint er im BOOTSEL-Modus als Laufwerk RPI-RP2.…

    admin avatar


Leave a Reply

Your email address will not be published. Required fields are marked *