Arduino Nano - Capteur à ultrasons

Ce tutoriel vous explique comment utiliser un Arduino Nano et un capteur ultrasonique pour mesurer la distance jusqu'aux obstacles ou objets. Plus en détail, nous apprendrons :

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×Ultrasonic Sensor
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du capteur à ultrasons

Le capteur ultrasonique HC-SR04 est utilisé pour mesurer la distance jusqu'à un objet en utilisant des ondes ultrasonores.

Le brochage du capteur ultrasonique

Le capteur ultrasonique HC-SR04 dispose de quatre broches :

  • Broche VCC : doit être connectée à VCC (5V)
  • Broche GND : doit être connectée à GND (0V)
  • Broche TRIG : reçoit un signal de commande (impulsion) de l'Arduino Nano
  • Broche ECHO : envoie un signal (impulsion) à l'Arduino Nano. L'Arduino Nano mesure la longueur de l'impulsion pour calculer la distance.
Brochage du capteur à ultrasons

Comment ça marche

Cette section est consacrée à des connaissances approfondies. NE vous inquiétez pas si vous ne comprenez pas. Ignorez cette section si elle vous surcharge, et revenez un autre jour. Continuez à lire les sections suivantes.
  • L'Arduino Nano produit une impulsion de 10 microsecondes sur la broche TRIG, ce qui amène le capteur ultrasonique à émettre des ondes ultrasoniques.
  • Lorsque les ondes rencontrent un obstacle, elles sont réfléchies.
  • Le capteur ultrasonique est capable de détecter l'onde réfléchie et de mesurer son temps de parcours.
  • Le capteur génère alors une impulsion vers la broche ECHO, d'une durée équivalente au temps de parcours de l'onde ultrasonique.
  • L'Arduino Nano mesure la durée de l'impulsion dans la broche ECHO et calcule la distance entre le capteur et l'obstacle.

Comment obtenir la distance à partir d'un capteur ultrasonique

Pour calculer la distance à partir du capteur ultrasonique, nous devons simplement écrire un code Arduino pour effectuer deux étapes (1 et 6 dans Comment ça marche) :

  • Arduino Nano génère une impulsion de 10 microsecondes sur la broche TRIG.
  • Arduino Nano mesure la durée de l'impulsion sur la broche ECHO.
  • Ensuite, Arduino Nano utilise la durée de l'impulsion mesurée pour calculer la distance entre le capteur et l'obstacle.

Calcul de distance

Nous avons :

  • Temps de trajet de l'onde ultrasonore (µs) : travel_time = pulse_duration
  • Vitesse de l'onde ultrasonique : speed = SPEED_OF_SOUND = 340 m/s = 0.034 cm/µs

Alors :

  • La distance de parcours de l'onde ultrasonore (cm) : distance_de_parcours = vitesse × temps_de_parcours = 0.034 × durée_d'impulsion
  • La distance entre le capteur et l'obstacle (cm) : distance = distance_de_parcours / 2 = 0.034 × durée_d'impulsion / 2 = 0.017 × durée_d'impulsion

Arduino Nano - Capteur à ultrasons

Les broches de l'Arduino Nano peuvent produire une impulsion de 10 microsecondes et mesurer la durée de l'impulsion. Cela nous permet d'utiliser deux des broches de l'Arduino Nano pour déterminer la distance entre le capteur à ultrasons et un objet. Nous devons simplement :

  • Connectez une broche de l'Arduino Nano à la broche TRIG du capteur ultrasonique. Cette broche de l'Arduino Nano est utilisée pour générer une impulsion de 10 µs à la broche TRIG du capteur.
  • Connectez une autre broche de l'Arduino Nano à la broche ECHO du capteur ultrasonique. Cette broche de l'Arduino Nano est utilisée pour mesurer l'impulsion provenant du capteur.

Diagramme de câblage

Schéma de câblage du capteur ultrasonique Arduino Nano

This image is created using Fritzing. Click to enlarge image

Comment programmer pour un capteur ultrasonique

digitalWrite(3, HIGH); delayMicroseconds(10); digitalWrite(3, LOW);
  • Mesurez la durée de l'impulsion (en microsecondes) sur la broche 2 de l'Arduino en utilisant la fonction pulseIn(). Par exemple :
duration_us = pulseIn(2, HIGH);
  • Calculez la distance (cm) :
distance_cm = 0.017 * duration_us;

Code Arduino Nano

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-nano/arduino-nano-ultrasonic-sensor */ #define TRIG_PIN 3 // The Arduino Nano pin connected to TRIG pin of ultrasonic sensor #define ECHO_PIN 2 // The Arduino Nano pin connected to ECHO pin of ultrasonic sensor float duration_us, distance_cm; void setup() { // begin serial port Serial.begin (9600); // Configure the trigger pin to output mode pinMode(TRIG_PIN, OUTPUT); // Configure the echo pin to input mode pinMode(ECHO_PIN, INPUT); } void loop() { // Produce a 10-microsecond pulse to the TRIG pin. digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // Measure the pulse duration from the ECHO pin duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance distance_cm = 0.017 * duration_us; // print the value to Serial Monitor Serial.print("distance: "); Serial.print(distance_cm); Serial.println(" cm"); delay(500); }

Étapes rapides

  • Copiez le code et ouvrez-le avec l'IDE Arduino.
  • Ensuite, cliquez sur le bouton Upload dans l'IDE Arduino pour compiler et téléverser le code vers l'Arduino Nano.
Comment télécharger du code sur Arduino Nano
  • Ouvrez le moniteur série
  • Placez votre main devant le capteur ultrasonique
  • Vérifiez la distance entre le capteur et votre main affichée sur le moniteur série
COM6
Send
distance: 29.4 cm distance: 27.6 cm distance: 26.9 cm distance: 17.4 cm distance: 16.9 cm distance: 14.3 cm distance: 15.6 cm distance: 13.1 cm
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Explication du code

Découvrez l'explication ligne par ligne contenue dans les commentaires du code source !

Comment filtrer le bruit des mesures de distance d'un capteur ultrasonique

Le résultat de mesure d'un capteur ultrasonique peut contenir du bruit, ce qui peut entraîner des opérations indésirables dans certaines applications. Pour éliminer le bruit, nous pouvons utiliser l'algorithme suivant :

  • I. Prenez plusieurs mesures et stockez-les dans un tableau
  • Ii. Triez le tableau dans un ordre croissant
  • Iii. Filtrez les bruits en :
    • Considérant les échantillons les plus petits comme du bruit et en les ignorant
    • Considérant les échantillons les plus grands comme du bruit et en les ignorant
    • Prenant la moyenne des échantillons du milieu

    L'exemple de code ci-dessous prend 20 mesures :

    • Ignorez les cinq échantillons les plus petits.
    • Ignorez les cinq échantillons les plus grands.
    • Obtenez la moyenne des 10 échantillons du milieu, du cinquième au quatorzième.
    /* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-nano/arduino-nano-ultrasonic-sensor */ #define TRIG_PIN 3 // The Arduino Nano pin connected to TRIG pin of ultrasonic sensor #define ECHO_PIN 2 // The Arduino Nano pin connected to ECHO pin of ultrasonic sensor float filterArray[20]; // array to store data samples from sensor float distance; // store the distance from sensor void setup() { // begin serial port Serial.begin (9600); // Configure the trigger and echo pins to output mode pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); } void loop() { // 1. TAKING MULTIPLE MEASUREMENTS AND STORE IN AN ARRAY for (int sample = 0; sample < 20; sample++) { filterArray[sample] = ultrasonicMeasure(); delay(30); // to avoid untrasonic interfering } // 2. SORTING THE ARRAY IN ASCENDING ORDER for (int i = 0; i < 19; i++) { for (int j = i + 1; j < 20; j++) { if (filterArray[i] > filterArray[j]) { float swap = filterArray[i]; filterArray[i] = filterArray[j]; filterArray[j] = swap; } } } // 3. FILTERING NOISE // + the five smallest samples are considered as noise -> ignore it // + the five biggest samples are considered as noise -> ignore it // ---------------------------------------------------------------- // => get average of the 10 middle samples (from 5th to 14th) double sum = 0; for (int sample = 5; sample < 15; sample++) { sum += filterArray[sample]; } distance = sum / 10; // print the value to Serial Monitor Serial.print("distance: "); Serial.print(distance); Serial.println(" cm"); } float ultrasonicMeasure() { // Produce a 10-microsecond pulse to the TRIG pin. digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // Measure the pulse duration from the ECHO pin float duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance float distance_cm = 0.017 * duration_us; return distance_cm; }

Vidéo

Lancez-vous un défi

Utilisez un capteur ultrasonique pour l'un des projets suivants :

  • Construction d'un système d'évitement de collision pour une voiture télécommandée.
  • Établir la plénitude d'une poubelle.
  • Suivi du niveau d'une poubelle.
  • Ouverture et fermeture automatiques d'une poubelle. Conseil : Voir Arduino Nano - Moteur Servo.

Applications des capteurs à ultrasons

  • Éviter les collisions
  • Détecter la plénitude
  • Mesurer le niveau
  • Détecter la proximité

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!