Raspberry Pi Pico: Abstandswarner mit Summer und Ultraschallsensor HC-SR04
Ein Abstandswarner hat die Aufgabe vor Zusammenstöße zu warnen. Beispielsweise als Einparkhilfe beim Auto oder der Abstandswarner aus Corona-Zeiten.
Dieses Prinzip kennt man von der Rückwärtseinparkhilfe beim Auto, die den Fahrer warnt, wenn sich das Heck des Fahrzeugs einem Objekte nähert.
Ein Abstandswarner arbeitet mit einem Ultraschall-Sensor zusammen mit einem aktiven Summer. Je kleiner der Abstand zu einem Objekt wird, desto schneller piept der Summer, um vor einer zu großen Nähe zu warnen.
Aufbau und Bauteile
Raspberry Pi Pico | HC-SR04 (+3,3V) | Summer | |
---|---|---|---|
Pin 36 | 3V3 OUT | VCC | |
Pin 38 | GND | GND | |
Pin 22 | GPIO 17 | Echo | |
Pin 21 | GPIO 16 | Trigger | |
Pin 24 | GPIO 18 | + (S) | |
Pin 23 | GND | GND (-) |
Hinweis: Wenn man einen Sensor-Typ HC-SR04 (+5V-Typ) hat, dann darf der Echo-Ausgang nicht einfach so auf einen GPIO-Eingang des Raspberry Pi Pico geschaltet werden. Zwischen dem Echo-Ausgang des Sensors und dem GPIO-Eingang des Picos muss ein Spannungsteiler geschaltet sein.
Schnell und einfach alle Bauteile zusammen bestellen
MicroPython-Bibliothek „picozero“ für Distanz-Sensor HC-SR04
Um den Programmcode möglichst kurz und übersichtlich zu halten, verwenden wir die MicroPython-Bibliothek „picozero“, um den Distanz-Sensor HC-SR04 anzusteuern. Das Lesen der Entfernung zu einem Objekt erfolgt mit einem Kommando.
Programmcode
Am Anfang des Programmcodes werden notwendige Bibliotheken geladen, der Buzzer, Onboard-LED, Timer und der Distanz-Sensor initialisiert. Danach werden Funktionen für den Summer definiert.
Der Timer hat den Vorteil, dass man eine Funktion zeitabhängig und unabhängig vom weiteren Programmcode ausführen kann.
Wenn das Piepen des Summers nervt, kann man diesen auch abklemmen und sich auf das Blinken der Onboard-LED verlassen.
Das Hautprogramm ist eine Endlos-Schleife in der die Distanz gemessen wird. Anschließend wird sie in verschiedene Werte umgerechnet, die sich leichter verarbeiten lassen.
Die Intensität des Piepens wird dem Timer als Frequenz in Hertz (Hz) übergeben, bei der es sich um den Kehrwert der Distanz in Meter handelt.
# Bibliotheken laden from machine import Pin, Timer from picozero import DistanceSensor from time import sleep # Initialisierung Onboard-LED und Summer buzzer = Pin(18, Pin.OUT, value=0) onboard_led = Pin(25, Pin.OUT, value=0) # Initialisierung Timer für den Summer timer = Timer() # Initialisierung HC-SR04 ds = DistanceSensor(echo=17, trigger=16) # Funktion: Piepen def beep(value): buzzer.toggle() onboard_led.toggle() # Funktion: Piepen aus def beep_off(): buzzer.off() onboard_led.off() # Funktion: Piepen an def beep_on(): buzzer.on() onboard_led.on() # Wiederholung: Endlos-Schleife while True: # Abstand messen (Meter) value_ds = ds.distance # Umrechnen in cm und mm value_cm = value_ds * 100 value_mm = int(value_ds * 1000) # Kehrwert für Timer-Frequenz value_freq = 1/value_ds # Datenausgabe (optional) print('Entfernung:', value_cm, 'cm', value_mm, 'mm', value_ds, value_freq) # Abstand größer 500 mm (50 cm): Summer Daueraus if value_mm > 500: timer.deinit() beep_off() # Abstand kleiner 40 mm (4 cm): Summer Daueran elif value_mm < 40: timer.deinit() beep_on() # Abstandswarnung mit variabler Timer-Frequenz else: timer.init(freq=value_freq, mode=Timer.PERIODIC, callback=beep) sleep(1)
Hinweis: Dieser Aufbau und Programmcode funktioniert. Allerdings nicht besonders zuverlässig. Es handelt sich also um keine besonders sichere Lösung. Insbesondere bei sehr kurzer Distanz kann es beim Distanz-Sensor zu Aussetzern kommen. Eventuell liegt die Lösung in baulichen Maßnahmen.
Darf es etwas mehr sein?
Displays dienen zur Anzeige von Informationen. Dazu muss das Display eingeschaltet sein. Sinnvoll ist das aber nur, wenn sich tatsächlich jemand vor dem Display befindet. In dieser Lösung verwenden wir einen Ultraschallsensor vom Typ HC-SR04P für die Anwesenheitserkennung vor einem Display.
Weitere verwandte Themen:
- Raspberry Pi Pico: Abstandsmessung mit Ultraschallsensor HC-SR04
- Raspberry Pi Pico: Abstandsmessung mit Temperaturkompensation für Ultraschallsensor HC-SR04
- Raspberry Pi Pico: Abstandsmessung mit Ultraschallsensor HC-SR04 auf einem 1602-Display anzeigen
- Raspberry Pi Pico: Bewegungserkennung mit PIR Motion Detector HC-SR501
Teilen:
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.
- LED: Einschalten, ausschalten, blinken und Helligkeit steuern
- Taster: Entprellen und Zustände anzeigen
- LED mit Taster einschalten und ausschalten
- Ampel- und Lauflicht-Steuerung
- Elektronischer Würfel
- Eigene Steuerungen programmieren
Online-Workshop: Programmieren mit dem Raspberry Pi Pico
Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)