DerJSN-SR04T ist ein einfach zu verwendender wasserdichter Ultraschall-Entfernungssensor mit einer Reichweite von 25 bis 450 cm. Wenn du vorhast, ein Wasserstandsmesssystem zu bauen oder andere Entfernungen im Freien messen möchtest, dann ist dies der Sensor, den du brauchst!
In diesem Artikel habe ich ein Schaltbild und Beispielcodes beigefügt, damit du mit deinem Sensor experimentieren kannst. Nach jedem Beispiel erkläre ich, wie der Code funktioniert, sodass du ihn problemlos an deine Bedürfnisse anpassen kannst.
Zuerst sehen wir uns ein Beispiel an, das keine Arduino-Bibliothek verwendet. Danach stelle ich die einfach zu verwendende NewPing Bibliothek vor, die einige praktische eingebaute Funktionen bietet. Im letzten Beispiel zeige ich dir, wie du die gemessenen Entfernungen auf einem 4-Stellen-Display anzeigen kannst.
Aber fangen wir mit den Teilen an, die du für dieses Projekt benötigst.
Benötigte Teile
Unten findest du die für dieses Projekt benötigten Teile. Wenn du nach dem JSN-SR04T suchst, stößt du vielleicht auf die aktualisierte Version, den JSN-SR04T-2.0. Diese neuere Version funktioniert genau gleich, ist aber für 3-5 V statt 5 V ausgelegt. Einige Nutzer haben jedoch Probleme bei der Verwendung der Sensoren mit niedrigerer Spannung festgestellt. Eine längere Trigger-Pulsdauer von mindestens 20 µs statt 10 µs scheint zu helfen, wenn fehlerhafte Messwerte auftreten.

Arduino Uno

USB-Kabel für Arduino UNO

Dupont-Kabelsatz

Breadboard

JSN-SR04T Sensor

4-Stellen-Display TM1637
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Über den JSN-SR04T Sensor
Der Sensor wird mit einem 2,5 m langen Kabel geliefert, das an ein Breakout-Board angeschlossen wird, welches den Sensor steuert und die Signalverarbeitung übernimmt. Beachte, dass nur der Sensor und das Kabel selbst wasserdicht sind.Tauche das Breakout-Board selbst nicht ins Wasser!
Ein Ultraschall-Entfernungssensor funktioniert, indem er Ultraschallwellen aussendet. Diese Ultraschallwellen werden von einem Objekt reflektiert und der Sensor erkennt sie. Durch die Messung der Zeit zwischen Aussenden und Empfangen der Schallwellen kannst du die Entfernung zwischen Sensor und Objekt berechnen.

Pinbelegung des JSN-SR04T
Das Breakout-Board des JSN-SR04T hat vier Pins.5V und GNDfür die Stromversorgung, Trigzum Auslösen des Ultraschallimpulses und den Ausgang Echo, der einen Puls zurückgibt, dessen Länge proportional zur gemessenen Entfernung ist. Das Bild unten zeigt die Pinbelegung.

Funktion des JSN-SR04T
Um den Sensor zu betreiben, musst du Trig für mindestens 10 Mikrosekunden auf HIGH setzen. Dadurch sendet das Board acht Ultraschallimpulse (Schallstöße).

Wenn ein reflektierter Schall (Echo) empfangen wird, geht der EchoAusgang auf HIGH und die Entfernung kann berechnet werden als
Entfernung = High-Level-Zeit * 340 m/s / 2
wobei 340 m/s die Schallgeschwindigkeit ist. Wir verwenden diese Formel später im Code, aber da wir die Entfernung in cm messen wollen, ist die Konstante 0,034 cm/µs.
Beachte, dass Ultraschallsensoren keine Laser mit gebündeltem Strahl sind. Ihre Richtwirkung ist eher kugelförmig und sie benötigen eine ausreichend große und harte/reflektierende Oberfläche für genaue Messungen.

Beim JSN-SR04T sollte das Ziel mindestens 0,5 Quadratmeter groß sein und der Sensor senkrecht auf das Ziel zeigen. Die folgende Tabelle zeigt die Spezifikationen des Sensors, aber beachte, dass Messbereich und Auflösung unter idealen Bedingungen gelten.
JSN-SR04T Spezifikationen
| Betriebsspannung | 5 V |
| Betriebsstrom | 30 mA |
| Ruhe-Strom | 5 mA |
| Frequenz | 40 kHz |
| Messbereich | 25-450 cm |
| Auflösung | 2 mm |
| Messwinkel | 45-75 Grad |
| Sensorabmessungen | 23,5 x 20 mm, 2,5 m langes Kabel |
| PCB-Abmessungen | 41 x 28,5 mm |
| Befestigungsloch | 18 mm |
Weitere Informationen findest du im Datenblatt hier.
JSN-SR04T vs HC-SR04
Was sind die Unterschiede zwischen diesem Sensor und dem HC-SR04? Der Hauptunterschied, abgesehen davon, dass dieser wasserdicht ist, besteht darin, dass dieser Sensor nur einen Ultraschallwandler verwendet, statt zwei. Dieser Wandler dient sowohl als Sender als auch als Empfänger der Ultraschallwellen.

Für mehr Infos, wie Ultraschallsensoren funktionieren, kannst du meinen Artikel über den HC-SR04 lesen. In diesem Artikel werden die Funktionsprinzipien eines Ultraschall-Entfernungssensors ausführlicher erklärt.
Verdrahtung – JSN-SR04T an Arduino
Das untenstehende Schaltbild zeigt, wie du den JSN-SR04T Sensor mit dem Arduino verbindest. Das Breakout-Board des JSN-SR04T hat die gleiche Pinbelegung wie der HC-SR04, sodass es als direkter Ersatz verwendet werden kann. Das Sensorkabel kann am Anschluss auf der Rückseite des Breakout-Boards eingesteckt werden.

Die Beispielcodes unten verwenden die digitalen Pins 12 und 11 für Trigger und Echo, aber natürlich kannst du jeden beliebigen digitalen Pin verwenden.
| 5 V | 5 V |
| Trig | Pin 12 |
| Echo | Pin 11 |
| GND | GND |
Beispielcode für JSN-SR04T Sensor mit Arduino
Nachdem du den Sensor verdrahtet hast, ist es Zeit, den Arduino mit dem Computer zu verbinden und Code hochzuladen. Der Sensor kann ohne Arduino-Bibliothek verwendet werden. Später zeige ich dir ein Beispiel mit der NewPing-Bibliothek, die den Code deutlich kürzer macht.
Lade den folgenden Beispielcode mit dem Arduino IDE auf deinen Arduino hoch. Dieser Code funktioniert auch für den JSN-SR04T-2.0. In den folgenden Abschnitten erkläre ich, wie der Code im Detail funktioniert.
const int trigPin = 12;
const int echoPin = 11;
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
long distance = duration * 0.034 / 2;
Serial.print("Distance:");
Serial.println(distance);
delay(100);
}
Wenn du den Code ausführst und den Sensor auf Objekte in unterschiedlichen Entfernungen richtest, sollten im Serial Monitor verschiedene Entfernungen (in cm) angezeigt werden. Vergiss nicht, die Baudrate für dieses Beispiel auf 115200 einzustellen!

Du kannst auch den Serial Plotter öffnen und solltest eine wellenförmige Linie sehen, wenn du den Sensor bewegst, um verschiedene Entfernungen zu messen.

Wie der Code funktioniert
Zuerst werden der Trigger-Pin und der Echo-Pin definiert. Ich nenne sie trigPin und echoPin. Der Trigger-Pin ist mit digitalem Pin 12 und der Echo-Pin mit digitalem Pin 11 am Arduino verbunden. Die Anweisung const wird verwendet, um einem konstanten Wert einen Namen zu geben.
const int trigPin = 12; const int echoPin = 11;
Im setup()startest du die serielle Kommunikation mit einer Baudrate von 115200. Um die gemessene Entfernung im Serial Monitor anzuzeigen, drücke Strg+Shift+M oder gehe zu Tools > Serial Monitor. Stelle sicher, dass auch im Serial Monitor die Baudrate auf 115200 eingestellt ist.
Als Nächstes setzt du den trigPin als Ausgang und den echoPin als Eingang.
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
Im loop()löst du den Sensor aus, indem du den trigPin für 20 µs auf HIGH setzt. Beachte, dass du für ein sauberes Signal zuerst den trigPin für 5 Mikrosekunden auf LOW setzt.
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
Danach musst du die durationdes vom echoPingesendeten Pulses lesen. Ich verwende dafür die Funktion pulseIn() . Diese Funktion wartet, bis der Pin von LOW auf HIGH wechselt, startet die Zeitmessung, wartet dann, bis der Pin wieder LOW wird, und stoppt die Zeitmessung.
Anschließend kannst du die Entfernung mit der im Einführungsteil genannten Formel berechnen. Beachte, dass wir eine Konstante von 0,034 für die Schallgeschwindigkeit verwenden (statt 340), da wir die Entfernung in Zentimetern und nicht in Metern wollen.
long duration = pulseIn(echoPin, HIGH); long distance = duration * 0.034 / 2;
Zum Schluss gibst du die berechnete Entfernung im Serial Monitor aus und zeigst sie auch im Plotter an. Die Verzögerung von 100 Millisekunden am Ende verlangsamt die Messungen auf eine vernünftige Rate.
Serial.print("Distance:");
Serial.println(distance);
delay(100);
Beispielcode JSN-SR04T mit Arduino und NewPing-Bibliothek
Die NewPing Bibliothek von Tim Eckel kann mit vielen Ultraschall-Entfernungssensoren verwendet werden. Die neueste Version dieser Bibliothek kannst du hier auf bitbucket.org. herunterladen. Du wirst feststellen, dass der untenstehende Code mit der NewPing-Bibliothek viel kürzer ist als der zuvor verwendete Code.
Du kannst die Bibliothek installieren, indem du in der Arduino IDE zu Sketch > Include Library > Add .ZIP Librarygehst.
Die Bibliothek enthält einige Beispiele, die du verwenden kannst, aber du musst sie an deine Hardware anpassen. Ich habe unten einen modifizierten Beispielcode beigefügt, der mit der gleichen Verdrahtung wie zuvor verwendet werden kann.
#include "newping.h"
const int trigPin = 12;
const int echoPin = 11;
const int maxDist = 450;
NewPing sonar(trigPin, echoPin, maxDist);
void setup() {
Serial.begin(115200);
}
void loop() {
// Wait 50ms between pings (about 20 pings/sec)
delay(50);
long distance = sonar.ping_cm();
Serial.print("Distance:");
Serial.println(distance);
delay(100);
}
Beispiel: JSN-SR04T mit Arduino und 4-Stellen-Display
Als letztes Beispiel möchte ich dir zeigen, wie du die gemessenen Entfernungen auf einem 4-stelligen 7-Segment-Display anzeigen kannst. Das Display, das unter den benötigten Teilen aufgeführt ist, hat einen TM1637 Treiber, der das Anschließen und Steuern sehr einfach macht. Fangen wir mit der Verdrahtung dieses Displays zusätzlich zum Sensor an.
Verdrahtung – JSN-SR04T an Arduino und 4-Stellen-Display
Wir verdrahten den JSN-SR04T Sensor wie zuvor, verwenden aber zusätzlich das Breadboard, um die Stromversorgung für Sensor und Display zu verteilen.

Das Display erhält seine Stromversorgung (VSS, GND) vom Breadboard und hat zwei zusätzliche Pins, die du mit dem Arduino verbinden musst. Verbinde den CLK (Clock) Pin mit Pin 3 des Arduino (weißes Kabel) und den DIO (Digital IO) mit Pin 4 des Arduino (graues Kabel). Damit ist die Verdrahtung abgeschlossen.
Schauen wir uns nun den Code an.
Code – JSN-SR04T mit Arduino und 4-Stellen-Display
Den Code für den JSN-SR04T Sensor behalten wir bei. Wie zuvor verwenden wir die NewPingBibliothek, initialisiert mit den gleichen Pins, und lesen Entfernungen über sonar.ping_cm().
#include "NewPing.h"
#include "TM1637Display.h"
// Display
const int clkPin = 3;
const int dioPin = 4;
// Sonar
const int trigPin = 12;
const int echoPin = 11;
const int maxDist = 450;
NewPing sonar(trigPin, echoPin, maxDist);
TM1637Display display = TM1637Display(clkPin, dioPin);
void setup() {
Serial.begin(115200);
display.setBrightness(5);
}
void loop() {
long distance = sonar.ping_cm();
Serial.print("Distance:");
Serial.println(distance);
display.showNumberDec(distance);
delay(200);
}
Neu ist, dass wir das Display-TM1637DisplayObjekt erstellen. Es wird mit den Konstanten clkPin und dioPininitialisiert, das sind die Pins, an die wir das Display angeschlossen haben.
In der setup()Funktion stellen wir die Helligkeit des Displays ein, wobei 0 die niedrigste und 7 die höchste Helligkeit ist. Dieser Befehl schaltet das Display auch ein.
Schließlich zeigen wir in der loop()Funktion einfach die gemessene Entfernung an, indem wir display.showNumberDec(distance)aufrufen. Und das war’s. Jetzt hast du einen Ultraschall-Entfernungsmesser, der Entfernungen in Zentimetern auf einem 4-stelligen Display anzeigt.

Fazit
In diesem Artikel habe ich dir gezeigt, wie der JSN-SR04T Ultraschall-Entfernungssensor funktioniert und wie du ihn mit Arduino verwenden kannst. Ich hoffe, du fandest es nützlich und informativ.
Wenn du mehr über andere Entfernungssensoren lernen möchtest, könnten die untenstehenden Artikel hilfreich sein:
- How to use a SHARP GP2Y0A21YK0F IR Distance Sensor with Arduino
- How to use a SHARP GP2Y0A710K0F IR Distance Sensor with Arduino
- How to use an HC-SR04 Ultrasonic Distance Sensor
- MaxBotix MB7389 weather-resistant distance sensor tutorial
- MaxBotix MB1240 ultrasonic distance sensor Arduino tutorial
Wenn du Fragen, Vorschläge hast oder denkst, dass in diesem Tutorial etwas fehlt, hinterlasse bitte einen Kommentar unten.

