Ultraschallsensoren sind praktisch – sei es für Bau eines automatisierten Bewässerungssystems, für die Entwicklung eines Roboters der Hindernissen ausweichen kann, oder bei der Umsetzung intelligenter Überwachungssysteme für Tanks und mehr. Ultraschallsensoren sind ideal für alle Projekte, die genaue Entfernungsmessungen innerhalb festgelegter Bereiche erfordern. Eine der zugänglichsten und vielseitigsten Möglichkeiten eine Entfernung zu messen, ist die Nutzung von Ultraschallsensoren in Verbindung mit dem ESP8266 D1 Mini.
Während viele von euch sicher schon vom HC-SR04 gehört haben, einem Sensor, der in zahlreichen Projekten verwendet wird, gibt es noch eine weitere elegante Alternative: den JSN-SR04T. Dieser Sensor zeichnet sich nicht nur durch seine kompakte Bauweise aus, bei der Sender und Empfänger in einem einzigen Bauteil vereint sind, sondern bietet auch dank eines angebundenen Kabels die Flexibilität, die Elektronik und den Sensor selbst dezentral zu montieren – eine ideale Lösung für Projekte, bei denen Sicherheit, insbesondere im Umgang mit Flüssigkeiten, gefordert sind.
Für dieses Tutorial ist es nicht wichtig, ob ihr den HC-SR04 oder den JSN-SR04T verwendet. Beide Sensoren basieren auf dem gleichen Prinzip der Ultraschall-Entfernungsmessung und sind daher gleichermaßen geeignet.
Werfe einen Blick in das Datenblatt um den richtigen Sensor für dein Projekt zu finden:
PDF: HC-SR04 Datenblatt von mikrocontroller.net
PDF: JSN-SR04T Datenblatt von makerguides.com
Zum Kapitel springen Das Prinzip der Ultraschall-Entfernungsmessung
Eine Ultraschall-Entfernungsmessung basiert auf einem einfachen Prinzip, das in einer Vielzahl von Anwendungen zum Einsatz kommt. Kernstück dieses Verfahrens ist die Nutzung von Ultraschallwellen, die im Frequenzbereich um 40 kHz liegen. Diese Wellen werden ausgesendet und nach ihrer Reflexion an einem Objekt wieder empfangen. Die Zeit, die zwischen Aussendung und Empfang verstreicht, gibt Aufschluss über die Entfernung zum reflektierenden Gegenstand. Ein kurzer Trigger-Puls, in der Regel etwa 10µs, dient dabei als Startsignal für die Messung.
Bild-Quelle: https://ioarvanit.gr/en/archives/2992
Diese Methode findet breite Anwendung in unterschiedlichsten Projekten. Von der Messung des Füllstands in Tanks für Flüssigkeiten wie Öl oder Wasser bis hin zur Abstandsmessung, die in Parkassistenzsystemen von Fahrzeugen eine Rolle spielt, bietet die Ultraschall-Entfernungsmessung eine zuverlässige Lösung zur Distanzbestimmung.
Zum Kapitel springen Hardware
Für die Durchführung dieser Anleitung werden folgende Komponenten benötigt:
- Ein ESP8266 D1 Mini oder ein baugleiches ESP8266 Board
- Einen Ultraschallsensor HC-SR04 oder JSN-SR04T
- Optional: Jumper Kabel
- Optional: Breadboard
Falls du mit der Programmierung des ESP8266 noch nicht vertraut bist oder eine Auffrischung brauchst, empfehle ich dir einen Blick in das Anfängertutorial zur Programmierung des ESP8266 zu werfen. Dort sind die Grundlagen für die Programmierung eines ESP8266 zu finden.
Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:
¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.
Zum Kapitel springen Verdrahtung
Die Verdrahtung für die Ultraschallsensoren HC-SR04 und JSN-SR04T am ESP8266 D1 Mini (oder einem vergleichbaren Board) ist direkt und einfach. Folgende Tabelle zeigt die Verbindung zwischen den Sensorpins und den Pins des Mikrocontrollers.
Die Verdrahtung ermöglicht es, die Entfernungsmessung mit beiden Sensortypen durchzuführen:
Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:
¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.
D1 Mini | HC-SR04 / JSN-SR04T |
---|---|
5V | VCC |
G | GND |
D0 | TRIG |
D1 | ECHO |
Obwohl in diesem Tutorial spezifische Pins (D0 für TRIG und D1 für ECHO) verwendet werden, ist man nicht auf diese Auswahl beschränkt. Fast alle digitalen I/O-Pins des ESP8266 können für diese Zwecke verwendet werden. Prüfe dazu am besten die Dokumentation deines Boards, um die besten Optionen für dein Projekt zu ermitteln und sicherzustellen, dass keine Konflikte mit anderen verwendeten Funktionen entstehen.
Zum Kapitel springen Programmcode
Das Programm für einen Sensor sieht wie folgt aus und passt zur eben genannten Verdrahtung und auch für beide Varianten des Sensors.
/*
Ultraschall-Sensoren HC-SR04 & JSN-SR04T mit ESP8266 D1 Mini
Tutorial by cooper.bin @ makesmart.net
(cc) 2021
*/
#define TRIG 16 // D0 als TRIG
#define ECHO 5 // D1 als ECHO
long duration;
float distance;
void setup() {
Serial.begin(115200);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
}
void loop() {
// Initialisiert TRIG auf LOW, um einen klaren Startzustand zu garantieren
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
// Erzeugt einen 10µs langen HIGH-Puls auf TRIG, um den Messvorgang zu starten
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
// Setzt TRIG zurück auf LOW, beendet den Puls
digitalWrite(TRIG, LOW);
duration = pulseIn(ECHO, HIGH);
// Berechnung der Entfernung basierend auf der Zeitdauer der Ultraschallwellen
// Die Geschwindigkeit des Schalls in der Luft beträgt etwa 0.034 cm/µs.
// Die Dauer beinhaltet die Zeit für den Hin- und Rückweg, daher teilen wir durch 2, um die einfache Entfernung zu erhalten.
distance = duration * 0.034 / 2;
Serial.print("Entfernung: ");
Serial.print(distance);
Serial.println("cm");
delay(1000); // Eine Sekunde Pause, um die Ausgabe zu verlangsamen.
}
Nach dem Hochladen des Codes liefert der serielle Monitor folgende Ausgabe. Die beobachteten Unterschiede in den Messwerten erklären sich durch die Bewegung des Sensors während der Datenerfassung.
Entfernung: 52.43cm
Entfernung: 52.55cm
Entfernung: 53.06cm
Entfernung: 52.80cm
Entfernung: 52.92cm
[...]
Zum Kapitel springen Die Entfernung ist berechnet, was nun?
Die erfolgreiche Distanzmessung eröffnet ein breites Feld an Anwendungen, von der Ermittlung von Füllständen bis zur Steuerung autonomer Roboter. Diese Messungen gehen weit über die reine Distanzerfassung hinaus und ermöglichen weiterführende Berechnungen, etwa die Volumenbestimmung von Behältern durch Anpassung des Gesamtvolumens um den nicht genutzten Raum. Mit diesen Schritten bewegen wir uns allerdings schon auf dem Gebiet der angewandten Mathematik und nicht mehr nur bei der Implementierung der beiden Sensoren.
Zum Kapitel springen Tipps für die Verwendung mehrerer Sensoren
Wenn mehrere Sensoren an einem Mikrocontroller betrieben werden sollen, lässt sich der TRIG-Pin gemeinsam nutzen, während für jeden Sensor ein separater ECHO-Pin am Mikrocontroller vorgesehen werden muss. Dies erlaubt die individuelle Messung der Distanzen durch jeden Sensor, ohne dabei die Anzahl der benötigten Pins unnötig zu erhöhen.
Beim Anschluss mehrerer Ultraschallsensoren wie dem HC-SR04 und JSN-SR04T an einen ESP8266 D1 Mini oder einen Arduino sind zusätzlich noch einige wichtige Punkte zu beachten:
- Stromversorgung:
Beide Sensortypen benötigen 5V. Stelle sicher, dass das Board stabilen Strom liefert, vor allem bei der Nutzung mehrerer Sensoren. - GND-Verbindung:
Verbinde alle GND-Anschlüsse miteinander, um Potenzialunterschiede zu vermeiden und die Messgenauigkeit zu erhöhen. - Verzögerungen einbauen:
Um Interferenzen zu vermeiden, implementiere eine Verzögerungen zwischen den Trigger-Signalen, wenn mehrere Sensoren gleichzeitig genutzt werden.