Le JSN-SR04T est un capteur de distance à ultrasons étanche, facile à utiliser, avec une portée de 25 à 450 cm. Si vous prévoyez de construire un système de mesure de niveau d’eau ou si vous avez besoin de prendre d’autres mesures de distance en extérieur, c’est le capteur qu’il vous faut !
Dans cet article, j’ai inclus un schéma de câblage et des exemples de code pour que vous puissiez commencer à expérimenter avec votre capteur. Après chaque exemple, j’explique en détail le fonctionnement du code, vous ne devriez donc avoir aucun problème à le modifier selon vos besoins.
Tout d’abord, nous verrons un exemple qui n’utilise pas de bibliothèque Arduino. Ensuite, je présenterai la bibliothèque facile à utiliser NewPing qui offre plusieurs fonctionnalités intégrées intéressantes. Dans le dernier exemple, je vous montrerai comment afficher les distances mesurées sur un afficheur 4 chiffres.
Mais commençons par les composants dont vous aurez besoin pour réaliser ce projet.
Composants requis
Vous trouverez ci-dessous la liste des composants nécessaires pour ce projet. En cherchant le JSN-SR04T, vous pourriez tomber sur la version mise à jour, le JSN-SR04T-2.0. Cette version plus récente fonctionne exactement de la même manière mais est conçue pour une tension de 3-5 V au lieu de 5 V. Cependant, certains utilisateurs ont rencontré des problèmes en utilisant les capteurs à une tension plus basse. Utiliser une impulsion de déclenchement plus longue d’au moins 20 µs au lieu de 10 µs semble aider en cas de mesures erronées.

Arduino Uno

Câble USB pour Arduino UNO

Jeu de fils Dupont

Plaque d’essai (breadboard)

Capteur JSN-SR04T

Afficheur 4 chiffres 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.
À propos du capteur JSN-SR04T
Le capteur est livré avec un câble de 2,5 m qui se connecte à une carte d’interface qui contrôle le capteur et traite le signal. Notez que seul le capteur et le câble sont étanches. Ne plongez pas la carte d’interface elle-même dans l’eau !
Un capteur de distance à ultrasons fonctionne en émettant des ondes ultrasonores. Ces ondes sont réfléchies par un objet et le capteur détecte leur retour. En mesurant le temps écoulé entre l’émission et la réception des ondes sonores, vous pouvez calculer la distance entre le capteur et l’objet.

Brochage du JSN-SR04T
La carte d’interface du JSN-SR04T possède quatre broches. 5V et GND pour l’alimentation, Trig pour déclencher l’émission de l’impulsion ultrasonore et la sortie Echo, qui renvoie une impulsion dont la durée est proportionnelle à la distance mesurée. L’image ci-dessous montre le brochage.

Fonctionnement du JSN-SR04T
Pour faire fonctionner le capteur, vous devez mettre Trig à HIGH pendant au moins 10 microsecondes. Cela provoque l’envoi de huit impulsions ultrasonores (rafale sonore).

Si un son réfléchi (écho) est reçu, la sortie Echo passe à l’état HIGH et la distance peut être calculée comme
distance = durée de l’état HIGH * 340 m/s / 2
où 340 m/s est la vitesse du son. Nous utiliserons cette formule plus tard dans notre code, mais comme nous voulons mesurer la distance en cm, la constante sera 0,034 cm/µs.
Notez que les capteurs ultrasonores ne fonctionnent pas comme des lasers avec un faisceau focalisé. Leur directivité est plutôt en forme de bulle et nécessite une surface suffisamment grande et dure/réfléchissante pour des mesures précises.

Dans le cas du JSN-SR04T, la cible doit faire au moins 0,5 mètre carré et vous devez orienter le capteur perpendiculairement à la cible. Le tableau ci-dessous présente les spécifications du capteur, mais sachez que la portée et la résolution supposent des conditions idéales.
Spécifications du JSN-SR04T
| Tension de fonctionnement | 5 V |
| Courant de fonctionnement | 30 mA |
| Courant au repos | 5 mA |
| Fréquence | 40 kHz |
| Plage de mesure | 25-450 cm |
| Résolution | 2 mm |
| Angle de mesure | 45-75 degrés |
| Dimensions du capteur | 23,5 x 20 mm, câble de 2,5 m |
| Dimensions du PCB | 41 x 28,5 mm |
| Trou de fixation | 18 mm |
Pour plus d’informations, vous pouvez consulter la fiche technique ici.
JSN-SR04T vs HC-SR04
Quelles sont les différences entre ce capteur et le HC-SR04? La principale différence, en plus de son étanchéité, est que ce capteur utilise un seul transducteur ultrasonore au lieu de deux. Ce transducteur sert à la fois d’émetteur et de récepteur des ondes ultrasonores.

Pour plus d’informations sur le fonctionnement des capteurs ultrasonores, vous pouvez consulter mon article sur le HC-SR04. Dans cet article, les principes de fonctionnement d’un capteur de distance à ultrasons sont expliqués en détail.
Câblage – JSN-SR04T vers Arduino
Le schéma de câblage ci-dessous montre comment connecter le capteur JSN-SR04T à l’Arduino. La carte d’interface du JSN-SR04T a le même brochage que le HC-SR04, elle peut donc être utilisée en remplacement direct. Le câble du capteur peut être branché sur le connecteur à l’arrière de la carte d’interface.

Les exemples de code ci-dessous utilisent les broches numériques 12 et 11 pour le trigger et l’echo, mais vous pouvez bien sûr changer cela pour n’importe quelle broche numérique de votre choix.
| 5 V | 5 V |
| Trig | Broche 12 |
| Echo | Broche 11 |
| GND | GND |
Exemple de code pour le capteur JSN-SR04T avec Arduino
Maintenant que vous avez câblé le capteur, il est temps de connecter l’Arduino à l’ordinateur et de téléverser du code. Le capteur peut être utilisé sans bibliothèque Arduino. Plus tard, je vous montrerai un exemple avec la bibliothèque NewPing, qui rend le code beaucoup plus court.
Téléversez le code exemple suivant sur votre Arduino en utilisant l’IDE Arduino. Ce code fonctionne aussi pour le JSN-SR04T-2.0. Dans les sections suivantes, j’expliquerai en détail le fonctionnement du code.
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);
}
Si vous lancez le code et pointez le capteur vers des objets à différentes distances, vous devriez voir apparaître des distances variables (en cm) dans le moniteur série. N’oubliez pas de régler le débit en bauds à 115200 pour cet exemple !

Vous pouvez aussi ouvrir le traceur série et vous devriez voir une ligne ondulée si vous déplacez le capteur pour mesurer différentes distances.

Comment fonctionne le code
Tout d’abord, les broches trigger et echo sont définies. Je les appelle trigPin et echoPin. La broche trigger est connectée à la broche numérique 12 et la broche echo à la broche numérique 11 de l’Arduino. L’instruction const est utilisée pour donner un nom à une valeur constante.
const int trigPin = 12; const int echoPin = 11;
Dans la setup(), vous commencez par initialiser la communication série à un débit de 115200 bauds. Pour afficher la distance mesurée dans le moniteur série, appuyez sur Ctrl+Shift+M ou allez dans Tools > Serial Monitor. Assurez-vous que le débit en bauds est aussi réglé à 115200 dans le moniteur série.
Ensuite, on configure trigPin en sortie et echoPin en entrée.
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
Dans la loop(), vous déclenchez le capteur en mettant trigPin à HIGH pendant 20 µs. Notez que pour obtenir un signal propre, vous commencez par mettre trigPin à LOW pendant 5 microsecondes.
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
Ensuite, vous devez lire la durée duration de l’impulsion envoyée par le echoPin. J’utilise pour cela la fonction pulseIn() qui attend que la broche passe de LOW à HIGH, démarre le chronométrage, puis attend que la broche repasse à LOW et arrête le chronométrage.
Après cela, vous pouvez calculer la distance en utilisant la formule mentionnée dans l’introduction de ce tutoriel. Notez que nous utilisons une constante de 0,034 pour la vitesse du son (au lieu de 340), car nous voulons la distance en centimètres et non en mètres.
long duration = pulseIn(echoPin, HIGH); long distance = duration * 0.034 / 2;
Enfin, affichez la distance calculée dans le moniteur série et aussi dans le traceur. Le délai de 100 millisecondes à la fin ralentit les mesures à un rythme raisonnable.
Serial.print("Distance:");
Serial.println(distance);
delay(100);
Exemple de code JSN-SR04T avec Arduino et bibliothèque NewPing
La NewPing bibliothèque écrite par Tim Eckel peut être utilisée avec de nombreux capteurs de distance ultrasonores. La dernière version de cette bibliothèque peut être téléchargée ici sur bitbucket.org. Vous remarquerez que le code ci-dessous, qui utilise la bibliothèque NewPing, est beaucoup plus court que le code que nous avons utilisé précédemment.
Vous pouvez installer la bibliothèque en allant dans Sketch > Include Library > Add .ZIP Library dans l’IDE Arduino.
La bibliothèque inclut quelques exemples que vous pouvez utiliser, mais vous devrez les modifier pour correspondre à votre configuration matérielle. J’ai inclus un exemple de code modifié ci-dessous qui peut être utilisé avec le même câblage que précédemment.
#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);
}
Exemple : JSN-SR04T avec Arduino et afficheur 4 chiffres
Pour finir, je veux vous montrer comment afficher les distances mesurées sur un afficheur 7 segments 4 chiffres. L’afficheur, listé dans les composants requis, possède un TM1637 driver, ce qui le rend très facile à connecter et à contrôler. Commençons par le câblage de cet afficheur en plus du capteur.
Câblage – JSN-SR04T vers Arduino et afficheur 4 chiffres
Nous câblerons le capteur JSN-SR04T comme avant mais utiliserons la breadboard pour distribuer l’alimentation au capteur et à l’afficheur.

L’afficheur reçoit son alimentation (VSS, GND) depuis la breadboard et possède deux broches supplémentaires à connecter à l’Arduino. Connectez la broche CLK (Clock) à la broche 3 de l’Arduino (fil blanc) et la broche DIO (Digital IO) à la broche 4 de l’Arduino (fil gris). Et voilà, le câblage est terminé.
Passons maintenant au code.
Code – JSN-SR04T avec Arduino et afficheur 4 chiffres
Nous conservons le code relatif au capteur JSN-SR04T tel quel. Comme précédemment, nous utilisons la bibliothèque NewPing, initialisée avec les mêmes broches, et lisons les distances via 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);
}
La nouveauté est que nous créons l’objet d’affichage TM1637Display. Il est initialisé avec les constantes clkPin et dioPin, qui correspondent aux broches auxquelles l’afficheur est connecté.
Dans la fonction setup(), nous réglons la luminosité de l’afficheur, 0 étant la luminosité la plus faible et 7 la plus élevée. Cette commande allume également l’afficheur.
Enfin, dans la fonction loop(), nous affichons simplement la distance mesurée en appelant display.showNumberDec(distance). Et c’est tout. Vous avez maintenant un mesureur de distance ultrasonore qui affiche les distances en centimètres sur un afficheur 4 chiffres.

Conclusion
Dans cet article, je vous ai montré comment fonctionne le capteur de distance ultrasonore JSN-SR04T et comment l’utiliser avec Arduino. J’espère que vous l’avez trouvé utile et instructif.
Si vous souhaitez en savoir plus sur d’autres capteurs de distance, les articles ci-dessous pourraient vous être utiles :
- 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
Enfin, si vous avez des questions, des suggestions, ou si vous pensez que certains points manquent dans ce tutoriel, n’hésitez pas à laisser un commentaire ci-dessous.

