Ultraschallsensor (HC-SR04) Arduino Tutorial – Einfach & Verständlich
Einleitung
In diesem Artikel erhalten Sie detaillierte Anleitungen und praktische Informationen, wie Sie einen Ultraschallsensor mit einem Arduino-Board (Arduino Uno) verbinden und steuern können.
Wir werden sowohl die benötigten Komponenten als auch den optimalen Schaltungsaufbau besprechen. Zudem werden wir den Code ausführlich erläutern, um den Sensor auszulesen und die Ergebnisse weiterzuverarbeiten bzw. übersichtlich darzustellen.
Am Ende dieses Artikels sind Sie in der Lage, den Ultraschallsensor erfolgreich mit einem Arduino einzusetzen und eigene spannende Projekte umzusetzen. Tauchen Sie ein in die faszinierende Welt der Ultraschallsensoren mit dem Arduino und beginnen Sie noch heute Ihre eigenen Elektronikabenteuer!
Verschaltung
Teile
Übersicht
Hardware Aufbau – Verkabelung – Ultraschallsensor + Arduino Uno
bevor der Arduino Uno programmiert wird, muss der Hardware Aufbau vorbereitet werden.
Hierzu wird der Arduino Uno über Verbindungskabel mit dem Ultraschallsensor verbunden.
Es gibt hierbei 4 Verbindungen.
Arduino Uno 5V Pin -> Ultraschallsensor Vcc
Arduino Uno GND Pin -> Ultraschallsensor GND
Arduino Uno 6 Pin -> Ultraschallsensor Echo
Arduino Uno 7 Pin -> Ultraschallsensor Trig
Software Programmierung – Ultraschallsensor + Arduino Uno
Um den Ultraschallsensor mit Ihrem Arduino-Board zu steuern, müssen wir den entsprechenden Code entwickeln. Dieser ermöglicht es uns, die Daten des Sensors auszulesen und entsprechend zu verarbeiten. Im Folgenden werde ich Ihnen den Code Schritt für Schritt erklären.
Schritt 1: Initialisierung
Öffnen der Arduino-IDE und Erstellen eines neuen Projekts
Um mit der Arduino-IDE zu arbeiten, öffnen Sie zunächst die Anwendung auf Ihrem Computer. Falls Sie die Arduino-IDE noch nicht installiert haben, können Sie unter folgendem Link eine Anleitung hierzu finden:
⇨ Arduion IDE erste Schritte
Nachdem Sie die Arduino-IDE geöffnet haben, erstellen Sie ein neues Projekt, indem Sie auf „Datei“ klicken und dann auf „Neu“. Dadurch wird ein neues Sketch-Fenster geöffnet, in dem Sie Ihren Code eingeben können.
// Hier kommt dein Code
void setup(){
// Initialisierung
}
void loop(){
// Schleife
}
Schritt 2: Variablen definieren
Als nächstes definieren wir die benötigten Variablen für die Pins und die Messungen des Ultraschallsensors. Fügen Sie am Anfang Ihres Codes die folgenden Zeilen hinzu:
int TRIGGER_PIN =7; //Trigger-Pin Ultraschallsensors = Pin7 Arduino-Boards
int ECHO_PIN =6; //Echo-Pin Ultraschallsensors = Pin6 Arduino-Boards
long dauer=0; //Dauer = Variable, Zeit wird gespeichert, die eine Schallwelle bis zur Reflektion und zurück benötigt. Startwert ist hier 0.
long entfernung=0; //entfernung = variable („long“ damit größere Zahl gespeichert werden kann)
In diesem Beispiel verwenden folgende Variablen definiert:
Die Variablen für Pins: TRIGGER_PIN und ECHO_PIN, um die Pin-Nummern festzulegen, an denen der Ultraschallsensor an den Arduino angeschlossen ist.
Die Variable „dauer“ wird verwendet, um die Zeit zu speichern welche die Schallwelle bis zur Reflektion und zurück benötigt.
Die Variable „entfernung“ wird verwendet um die tatsächlich Entfernung bzw. den Abstand zu speichern.
Schritt 3: Void Setup
Im Setup-Bereich des Codes initialisieren wir den seriellen Monitor und stellen die Pins für den Ultraschallsensor ein. Fügen Sie den folgenden Code hinzu:
void setup()
{
Serial.begin(9600); //Serielle kommunikation starten, damit man sich später die Werte am serial monitor ansehen kann.
pinMode(TRIGGER_PIN, OUTPUT); //Trigger-Pin ist ein Ausgang
pinMode(ECHO_PIN, INPUT); //Echo-Pin ist ein Eingang
}
Der Serial.begin(9600) Befehl initialisiert den seriellen Monitor mit einer Baudrate von 9600, sodass Sie die Messergebnisse auf dem Monitor anzeigen können.
Die Funktion pinMode() legt die Pins TRIGGER_PIN und ECHO_PIN entsprechend als Ausgang bzw. Eingang fest.
Schritt 4: Loop Setup
Im Loop-Bereich des Codes werden die Messungen durchgeführt und die Ergebnisse verarbeitet. Fügen Sie den folgenden Code hinzu:
void loop()
{
digitalWrite(TRIGGER_PIN, LOW); //kurze Zeit Spannung weg vom Trigger-Pin. Damit später beim senden des Trigger-Signals ein rauschfreies Signal hat.
delay(5); //Dauer: 5 Millisekunden
digitalWrite(TRIGGER_PIN, HIGH); //Jetzt sendet man eine Ultraschallwelle los.
delay(10); //Dieser „Ton“ erklingt für 10 Millisekunden.
digitalWrite(TRIGGER_PIN, LOW); //Dann wird der „Ton“ abgeschaltet.
dauer = pulseIn(ECHO_PIN, HIGH); //Mikrokontroller zählt Zeit in Mikrosekunden, bis der Schall zum Ultraschallsensor zurückkehrt.
entfernung = (dauer/2) * 0.03432; //Entfernung berechnen in Zentimetern. Man teilt zunächst die Zeit durch zwei (Weil man ja nur eine Strecke berechnen möchte und nicht die Strecke hin- und zurück). Den Wert multipliziert man mit der Schallgeschwindigkeit in der Einheit Zentimeter/Mikrosekunde und erhält dann den Wert in Zentimetern.
if (entfernung >= 500 || entfernung <= 0)
{
Serial.println("Kein Messwert"); //Wenn Entfernung über 500cm oder unter 0cm liegt weil falsch oder ungenau
}
else
{
Serial.print(entfernung); //Falls nicht: Entfernung in serial monitor ausgegeben
Serial.println(" cm"); // Hinter Entfernung im Serial Monitor Einheit "cm"
}
delay(1000); //Das delay von einer Sekunde
}
In diesem Code werden zuerst die Trigger-Pin-Signale erzeugt, um den Ultraschallsensor zu aktivieren. Dann wird die Dauer gemessen, bis das Echo-Signal vom Sensor empfangen wird, und basierend darauf die Entfernung berechnet. Schließlich werden die gemessene Entfernung und die Einheit „cm“ auf dem seriellen Monitor ausgegeben. Eine Verzögerung von 500 Millisekunden wird verwendet, um zwischen den Messungen eine kurze Pause einzulegen.
Mit diesen Schritten haben Sie den grundlegenden Code erstellt, um den Ultraschallsensor mit dem Arduino anzusteuern. Sie können den Code jetzt auf den Arduino hochladen und anpassen, um Ihre spezifischen Anforderungen zu erfüllen. Viel Spaß beim Experimentieren und Erkunden der vielfältigen Möglichkeiten, die Ihnen der Ultraschallsensor und der Arduino bieten!
Schritt für Schritt – Zusammenfassung
→ Schritt 1: Initialisierung
Arduino-Board anschließen,
IDE öffnen
Datei -> Neu
Werkzeug -> Board -> Arduino Uno
Port -> Arduino Uno
→ Schritt 2:
Variablen definieren
→ Schritt 3: Void Setup
Serielle Kommunikation starten
Eingänge und Ausgänge definieren
→ Schritt 4: Void Loop
Ultraschallsensor ansteuern
Umrechnung von Dauer in Entfernung (cm)
Ausgabe in Seriellen Monitor
Gesamter Programmiercode – Ultraschallsensor + Arduino Uno
Nochmal zur Übersicht den gesamten Programmier-Code aufgezeigt.
int TRIGGER_PIN =7; //Trigger-Pin Ultraschallsensors = Pin7 Arduino-Boards
int ECHO_PIN =6; //Echo-Pin Ultraschallsensors = Pin6 Arduino-Boards
long dauer=0; //Dauer = Variable, Zeit wird gespeichert, die eine Schallwelle bis zur Reflektion und zurück benötigt. Startwert ist hier 0.
long entfernung=0; //entfernung = variable („long“ damit größere Zahl gespeichert werden kann)
void setup()
{
Serial.begin(9600); //Serielle kommunikation starten, damit man sich später die Werte am serial monitor ansehen kann.
pinMode(TRIGGER_PIN, OUTPUT); //Trigger-Pin ist ein Ausgang
pinMode(ECHO_PIN, INPUT); //Echo-Pin ist ein Eingang
}
void loop()
{
digitalWrite(TRIGGER_PIN, LOW); //kurze Zeit Spannung weg vom Trigger-Pin. Damit später beim senden des Trigger-Signals ein rauschfreies Signal hat.
delay(5); //Dauer: 5 Millisekunden
digitalWrite(TRIGGER_PIN, HIGH); //Jetzt sendet man eine Ultraschallwelle los.
delay(10); //Dieser „Ton“ erklingt für 10 Millisekunden.
digitalWrite(TRIGGER_PIN, LOW); //Dann wird der „Ton“ abgeschaltet.
dauer = pulseIn(ECHO_PIN, HIGH); //Mikrokontroller zählt Zeit in Mikrosekunden, bis der Schall zum Ultraschallsensor zurückkehrt.
entfernung = (dauer/2) * 0.03432; //Entfernung berechnen in Zentimetern. Man teilt zunächst die Zeit durch zwei (Weil man ja nur eine Strecke berechnen möchte und nicht die Strecke hin- und zurück). Den Wert multipliziert man mit der Schallgeschwindigkeit in der Einheit Zentimeter/Mikrosekunde und erhält dann den Wert in Zentimetern.
if (entfernung >= 500 || entfernung <= 0)
{
Serial.println("Kein Messwert"); //Wenn Entfernung über 500cm oder unter 0cm liegt weil falsch oder ungenau
}
else
{
Serial.print(entfernung); //Falls nicht: Entfernung in serial monitor ausgegeben
Serial.println(" cm"); // Hinter Entfernung im Serial Monitor Einheit "cm"
}
delay(1000); //Das delay von einer Sekunde
}
Ausführung – Ultraschallsensor + Arduino Uno
Nachdem der Code nun in die IDE eingegeben ist, muss dieser noch Ausgeführt werden und auf den Arduino übertragen werden.
Hierzu geht man wie folgt vor:
Schritt 1: Überprüfen (Haken)
Schritt 2: Hochladen (Pfeil)
Schritt 3: Werkzeuge -> Serieller Monitor
Nachdem der Arduino nun programmiert ist, funktioniert der Ultraschallsensor.
Hierbei muss der Serielle Monitor den Abstand in Centimeter ausgeben.