🍪 Privacy & Transparency

We and our partners use cookies to Store and/or access information on a device. We and our partners use data for Personalised ads and content, ad and content measurement, audience insights and product development. An example of data being processed may be a unique identifier stored in a cookie. Some of our partners may process your data as a part of their legitimate business interest without asking for consent. To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. The consent submitted will only be used for data processing originating from this website. If you would like to change your settings or withdraw consent at any time, the link to do so is in our privacy policy accessible from our home page..

Vendor List | Privacy Policy
Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry PI

Menu
  • Projekte
    • LED’s
    • Servo & Schrittmotoren
    • Sound
    • LCD’s
    • Kommunikation
    • Sicherheit
    • Weekend Project
  • Arduino
    • Tutorials
    • ProMini
      • Anschließen & Programmieren
    • Nano
      • Arduino Nano – Übersicht
    • UNO
      • Übersicht
    • MEGA 2560
      • Übersicht
    • Leonardo
      • Übersicht
    • NodeMCU
      • NodeMCU – “Einer für (fast) Alles!”
    • Lilypad
      • Arduino: Lilypad “Jetzt Geht’s Rund!”
    • WEMOS
      • WEMOS D1 – Arduino UNO kompatibles Board mit ESP8266 Chip
      • WEMOS D1 Mini – Übersicht
      • Wemos D1 mini Shields
    • STM32x
      • STM32F103C8T6 – Übersicht
    • Maker UNO
      • Maker UNO – Überblick und Test
    • ATTiny85
      • Mini Arduino mit ATTiny85 Chip
      • ATtiny85 mit dem Arduino UNO beschreiben
  • Android
  • Über mich
  • DeutschDeutsch
  • EnglishEnglish
Menu

Einfache Einparkhilfe mit Ultraschall Abstandssensor HC-SR04, LEDs und Piezo Buzzer

Posted on 27. Februar 20213. Mai 2023 by Stefan Draeger

In diesem Beitrag möchte ich dir eine kleine, einfache DIY Einparkhilfe mit einem Arduino Nano, einem Ultraschall Abstandssensor HC-SR04, 3 LEDs sowie einem Piezo Buzzer vorstellen.

einfache DIY Einparkhilfe mit einem Arduino Nano
Dieses Video auf YouTube ansehen.

  • benötigte Ressourcen für die einfache DIY Einparkhilfe
  • Aufbau der Schaltung
    • exkurs Aufbau einer Leuchtdiode (LED)
  • Programmierung
    • kompletter, fertiger Sketch für die DIY Einparkhilfe mit einem Arduino Nano
    • Download

benötigte Ressourcen für die einfache DIY Einparkhilfe

Für den Nachbau des hier gezeigten Beitrages benötigst du:

  • einen Arduino Nano,
    • ein passendes USB Datenkabel
  • ein 400 Pin Breadboard,
  • diverse LEDs,
    • 2x 5mm, rot
    • 3x 5mm, gelb,
    • 2x 5mm, grün
  • sieben 220 Ohm Widerstände,
  • einen Piezo Buzzer,
  • einen Ultraschall Abstandssensor HC-SR04,
  • ein 830 Pin Breadboard,
  • ein paar Breadboardkabel

Aufbau der Schaltung

Der Aufbau der Schaltung passt genau auf ein 830 Pin Breadboard.

Aufbau der Schaltung - "Einfache Einparkhilfe mit einem Arduino Nano"
Aufbau der Schaltung – „Einfache Einparkhilfe mit einem Arduino Nano“

Hier nun eine Tabelle mit den elektronischen Komponenten und wo diese an den Arduino Nano angeschlossen wird.

BauteilArduino Nano
LED, rot1D8
LED, rot2D7
LED, gelb1D6
LED, gelb2D5
LED, gelb3D4
LED, grün1D3
LED, grün2D2
Piezo BuzzerD11
Ultraschall Abstandssensor HC-SR04 
VCC5V
TRIGD10
ECHOD9
GNDGND
 
Schaltung - einfache DIY Einparkhilfe mit einem Arduino Nano
Schaltung – einfache DIY Einparkhilfe mit einem Arduino Nano

exkurs Aufbau einer Leuchtdiode (LED)

Eine Leuchtdiode (kurz LED) verfügt über 2 Beinchen. Das kurze Beinchen der LED ist der Minuspol und das lange Beinchen der Pluspol der LED.  Den Minuspol erkennst du zusätzlich an einer abgeflachten Seite am Gehäuse.

An dem Pluspol der LED wird der digitale Pin vom Microcontroller angeschlossen!

Bauteil: LED
Bauteil: LED

Sollte die LED einmal nicht leuchten so hast du diese mit sehr hoher Wahrscheinlichkeit einfach nur falschherum angeschlossen.

Programmierung

Das Programm ist recht einfach gestrickt. Gehen wir nun trotzdem Stück für Stück dieses einmal durch. 
Zunächst fällt dir bestimmt auf das wir in diesem Programm ohne Bibliotheken auskommen können und somit ist der Speicherbedarf recht klein.

Zunächst definieren wir die Pins für die LEDs, dem Piezo Buzzer und natürlich dem Ultraschall Abstandssensor HC-SR04.

//definieren der Pins für die LEDs
#define ledRot1 8 
#define ledRot2 7

#define ledGelb1 6
#define ledGelb2 5
#define ledGelb3 4

#define ledGruen1 3
#define ledGruen2 2

//definieren der Pins für den Ultraschall Abstandssensor HC-SR04
#define trigger 9
#define echo 10

//definieren des Pins für den Piezo Buzzer
#define buzzer 11

Danach benötigen wir ein paar Konstanten für die Zeit zwischen zwei Piepen des Piezo Buzzers. 

//Intervall für das Piepsen des Buzzers
const int BUZZER_INTERVALL_ROT1 = 35;
const int BUZZER_INTERVALL_ROT2 = 100;

const int BUZZER_INTERVALL_GELB1 = 125;
const int BUZZER_INTERVALL_GELB2 = 250;
const int BUZZER_INTERVALL_GELB3 = 275;

const int BUZZER_INTERVALL_GRUEN1 = 450;
const int BUZZER_INTERVALL_GRUEN2 = 600;

In der Funktion „setup“ werden die Pins als Ausgang / Eingang definiert.

void setup() {
  pinMode(ledRot1, OUTPUT);
  pinMode(ledRot2, OUTPUT);

  pinMode(ledGelb1, OUTPUT);
  pinMode(ledGelb2, OUTPUT);
  pinMode(ledGelb3, OUTPUT);

  pinMode(ledGruen1, OUTPUT);
  pinMode(ledGruen2, OUTPUT);

  pinMode(buzzer, OUTPUT);

  pinMode(trigger, OUTPUT);
  pinMode(echo, INPUT);
}

Die Funktion „loop“ verrichtet die eigentliche Arbeit und prüft in einer verschachtelten If-Bedingung den Abstand und aktiviert die entsprechende LED.

void loop() {
  float value = readUltrasonicValue();
  if (value > 0 && value < 5) {
    setCurrentStatus(1, 0, 0, 0, 0, 0, 0, BUZZER_INTERVALL_ROT1);
  } else if (value > 5 && value < 10) {
    setCurrentStatus(0, 1, 0, 0, 0, 0, 0, BUZZER_INTERVALL_ROT2);
  } else if (value > 10 && value < 15) {
    setCurrentStatus(0, 0, 1, 0, 0, 0, 0, BUZZER_INTERVALL_GELB1);
  } else if (value > 15 && value < 20) {
    setCurrentStatus(0, 0, 0, 1, 0, 0, 0, BUZZER_INTERVALL_GELB2);
  } else if (value > 20 && value < 25) {
    setCurrentStatus(0, 0, 0, 0, 1, 0, 0, BUZZER_INTERVALL_GELB3);
  } else if (value > 25 && value < 30) {
    setCurrentStatus(0, 0, 0, 0, 0, 1, 0, BUZZER_INTERVALL_GRUEN1);
  } else if (value > 30) {
    setCurrentStatus(0, 0, 0, 0, 0, 0, 1, BUZZER_INTERVALL_GRUEN2);
  }
}

Für das aktivieren / deaktivieren der LEDs habe ich eine zusätzliche Funktion geschrieben welche 8 Parameter erwartet:

void setCurrentStatus(int statusLedRot1,
                      int statusLedRot2,
                      int statusLedGelb1,
                      int statusLedGelb2,
                      int statusLedGelb3,
                      int statusLedGruen1,
                      int statusLedGruen2,
                      int buzzerIntervall) {
  digitalWrite(ledRot1, statusLedRot1);
  digitalWrite(ledRot2, statusLedRot2);
  digitalWrite(ledGelb1, statusLedGelb1);
  digitalWrite(ledGelb2, statusLedGelb2);
  digitalWrite(ledGelb3, statusLedGelb3);
  digitalWrite(ledGruen1, statusLedGruen1);
  digitalWrite(ledGruen2, statusLedGruen2);
  makeBeep(buzzerIntervall);
}
void makeBeep(int intervall) {
  //einen Ton mit einer Frequenz von 800 Hz und einer Dauer von 45ms ausgeben.
  tone(buzzer, 800, 45); 
  //eine Pause einlegen
  //je näher das Objekt ist, desto kürzer ist der Intervall
  delay(intervall);
}

Das auslagern dieses Codes in eine extra Funktion hat den Vorteil das doppelter Code entfällt und auch somit wieder Speicherplatz frei wird.

In der Funktion „readUltrasonicValue“ wird der aktuelle Wert vom Ultraschall Abstandssensor HC-SR04 gelesen und in Zentimeter zurück geliefert.

float readUltrasonicValue() {
  digitalWrite(trigger, LOW); //Trigger Signal ausschalten
  delayMicroseconds(2);   //2 ms warten
  digitalWrite(trigger, HIGH);  //Trigger Signal einschalten
  delayMicroseconds(10);  //10ms warten
  digitalWrite(echo, LOW); //Trigger Signal ausschalten
  float cm = pulseIn(echo, HIGH) / 58.0; //Das Empfangene Echo Signal in cm umrechnen
  //Da der Sensor mit einer Messgenauigkeit von 0,3cm arbeitet können wir das
  //Ergbnis auf 2 Nachkommastellen begrenzen
  return (int(cm * 100.0)) / 100.0;
}

kompletter, fertiger Sketch für die DIY Einparkhilfe mit einem Arduino Nano

//definieren der Pins für die LEDs
#define ledRot1 8 
#define ledRot2 7

#define ledGelb1 6
#define ledGelb2 5
#define ledGelb3 4

#define ledGruen1 3
#define ledGruen2 2

//definieren der Pins für den Ultraschall Abstandssensor HC-SR04
#define trigger 9
#define echo 10

//definieren des Pins für den Piezo Buzzer
#define buzzer 11

//Intervall für das Piepsen des Buzzers
const int BUZZER_INTERVALL_ROT1 = 35;
const int BUZZER_INTERVALL_ROT2 = 100;

const int BUZZER_INTERVALL_GELB1 = 125;
const int BUZZER_INTERVALL_GELB2 = 250;
const int BUZZER_INTERVALL_GELB3 = 275;

const int BUZZER_INTERVALL_GRUEN1 = 450;
const int BUZZER_INTERVALL_GRUEN2 = 600;

void setup() {
  pinMode(ledRot1, OUTPUT);
  pinMode(ledRot2, OUTPUT);

  pinMode(ledGelb1, OUTPUT);
  pinMode(ledGelb2, OUTPUT);
  pinMode(ledGelb3, OUTPUT);

  pinMode(ledGruen1, OUTPUT);
  pinMode(ledGruen2, OUTPUT);

  pinMode(buzzer, OUTPUT);

  pinMode(trigger, OUTPUT);
  pinMode(echo, INPUT);
}

void loop() {
  float value = readUltrasonicValue();
  if (value > 0 && value < 5) {
    setCurrentStatus(1, 0, 0, 0, 0, 0, 0, BUZZER_INTERVALL_ROT1);
  } else if (value > 5 && value < 10) {
    setCurrentStatus(0, 1, 0, 0, 0, 0, 0, BUZZER_INTERVALL_ROT2);
  } else if (value > 10 && value < 15) {
    setCurrentStatus(0, 0, 1, 0, 0, 0, 0, BUZZER_INTERVALL_GELB1);
  } else if (value > 15 && value < 20) {
    setCurrentStatus(0, 0, 0, 1, 0, 0, 0, BUZZER_INTERVALL_GELB2);
  } else if (value > 20 && value < 25) {
    setCurrentStatus(0, 0, 0, 0, 1, 0, 0, BUZZER_INTERVALL_GELB3);
  } else if (value > 25 && value < 30) {
    setCurrentStatus(0, 0, 0, 0, 0, 1, 0, BUZZER_INTERVALL_GRUEN1);
  } else if (value > 30) {
    setCurrentStatus(0, 0, 0, 0, 0, 0, 1, BUZZER_INTERVALL_GRUEN2);
  }
}

void setCurrentStatus(int statusLedRot1,
                      int statusLedRot2,
                      int statusLedGelb1,
                      int statusLedGelb2,
                      int statusLedGelb3,
                      int statusLedGruen1,
                      int statusLedGruen2,
                      int buzzerIntervall) {
  digitalWrite(ledRot1, statusLedRot1);
  digitalWrite(ledRot2, statusLedRot2);
  digitalWrite(ledGelb1, statusLedGelb1);
  digitalWrite(ledGelb2, statusLedGelb2);
  digitalWrite(ledGelb3, statusLedGelb3);
  digitalWrite(ledGruen1, statusLedGruen1);
  digitalWrite(ledGruen2, statusLedGruen2);
  makeBeep(buzzerIntervall);
}

void makeBeep(int intervall) {
  //einen Ton mit einer Frequenz von 800 Hz und einer Dauer von 45ms ausgeben.
  tone(buzzer, 800, 45); 
  //eine Pause einlegen
  //je näher das Objekt ist, desto kürzer ist der Intervall
  delay(intervall);
}

float readUltrasonicValue() {
  digitalWrite(trigger, LOW); //Trigger Signal ausschalten
  delayMicroseconds(2);   //2 ms warten
  digitalWrite(trigger, HIGH);  //Trigger Signal einschalten
  delayMicroseconds(10);  //10ms warten
  digitalWrite(echo, LOW); //Trigger Signal ausschalten
  float cm = pulseIn(echo, HIGH) / 58.0; //Das Empfangene Echo Signal in cm umrechnen
  //Da der Sensor mit einer Messgenauigkeit von 0,3cm arbeitet können wir das
  //Ergbnis auf 2 Nachkommastellen begrenzen
  return (int(cm * 100.0)) / 100.0;
}

Download

Einfache Einparkhilfe mit Ultraschall Abstandssensor HC-SR04, LEDs und Piezo BuzzerHerunterladen

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

Tools

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator
  • Widerstandsrechner
  • Rechner für Strom & Widerstände
  • ASCII Tabelle

Meta

  • Videothek
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Kontakt
  • Cookie-Richtlinie (EU)

Links

Blogverzeichnis Bloggerei.de Blogverzeichnis TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
©2023 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb