Skip to Content

Tutoriel sur le capteur de distance ultrasonique étanche JSN-SR04T avec Arduino

Tutoriel sur le capteur de distance ultrasonique étanche JSN-SR04T avec Arduino

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

USB Data Sync cable Arduino

Câble USB pour Arduino UNO

Dupont wire set

Jeu de fils Dupont

Half_breadboard56a

Plaque d’essai (breadboard)

JSN-SR04T Ultrasonic Sensor Module

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.

Sound impulse and its reflection to measure distance
Impulsion sonore et son écho pour mesurer la distance

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.

Pinout for JSN-SR04T board
Brochage de la carte JSN-SR04T

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).

Timing diagram of JSN-SR04T from datasheet
Diagramme temporel du JSN-SR04T extrait de la Datasheet

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.

Directivité du JSN-SR04T (source)

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 fonctionnement5 V
Courant de fonctionnement30 mA
Courant au repos5 mA
Fréquence40 kHz
Plage de mesure25-450 cm
Résolution2 mm
Angle de mesure45-75 degrés
Dimensions du capteur23,5 x 20 mm, câble de 2,5 m
Dimensions du PCB41 x 28,5 mm
Trou de fixation18 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.

Waterproof JSN-SR04T ultrasonic distance sensor with Arduino Tutorial
Le transducteur du JSN-SR04T

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.

Wiring diagram/schematic for the JSN-SR04T ultrasonic distance sensor with Arduino
Schéma de câblage pour le capteur de distance ultrasonore JSN-SR04T avec Arduino

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 V5 V
TrigBroche 12
EchoBroche 11
GNDGND

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 !

Serial Monitor showing measured distances by JSN-SR04T in cm.
Moniteur série affichant les distances mesurées en cm

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.

Serial Plotter showing measured distances in cm.
Traceur série affichant les distances mesurées en cm

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.

Wiring of JSN-SR04T with Arduino and 4-Digit Display
Câblage du JSN-SR04T avec Arduino et afficheur 4 chiffres

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.

JSN-SR04T with Arduino and 4-Digit Display
JSN-SR04T avec Arduino et 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 :

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.