Arduino UNO R4 - Capteur à ultrasons

Ce tutoriel vous explique comment utiliser le capteur ultrasonique et l'Arduino UNO R4 pour mesurer la distance à un objet. En détail, nous apprendrons :

Capteur ultrasonique Arduino UNO R4

À propos du capteur à ultrasons

Le capteur ultrasonique HC-SR04 mesure la distance des objets en utilisant des ondes sonores. Il émet une onde sonore inaudible pour l’homme, puis écoute l’écho lorsque l’onde rebondit sur un objet. En mesurant le temps nécessaire au retour de l’onde sonore, le capteur peut calculer la distance à laquelle se trouve l’objet.

Schéma des broches

Le capteur ultrasonique HC-SR04 est livré avec quatre broches :

  • Broche VCC : Connectez cette broche au VCC (5V).
  • Broche GND : Connectez cette broche au GND (0V).
  • Broche TRIG : Connectez cette broche à l'Arduino UNO R4 pour envoyer des signaux de contrôle (impulsions).
  • Broche ECHO : Cette broche envoie des signaux (impulsions) vers l'Arduino UNO R4. L'Arduino UNO R4 calcule ensuite la durée de ces impulsions pour déterminer la distance.
Schéma de brochage du capteur à ultrasons
image source: diyables.io

Diagramme de câblage

Schéma de câblage du capteur à ultrasons Arduino UNO R4

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Voir Comment alimenter l'Arduino UNO R4..

Code pour Arduino UNO R4

#define TRIG_PIN 9 // The Arduino UNO R4 pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 8 // The Arduino UNO R4 pin connected to the ultrasonic sensor's ECHO pin 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() { // generate 10-microsecond pulse to TRIG pin digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // measure duration of pulse from 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

Suivez ces instructions étape par étape :

  • Si c'est votre première utilisation de l'Arduino Uno R4 WiFi/Minima, reportez-vous au tutoriel sur Arduino UNO R4 - Installation du logiciel..
  • Connectez les composants selon le schéma fourni.
  • Connectez la carte Arduino Uno R4 à votre ordinateur à l'aide d'un câble USB.
  • Lancez l'IDE Arduino sur votre ordinateur.
  • Sélectionnez la carte Arduino Uno R4 appropriée (par exemple, Arduino Uno R4 WiFi) et le port COM.
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour envoyer le code vers Arduino UNO R4
Arduino IDE - Comment téléverser du code
  • Ouvrez le moniteur série.
  • Agitez votre main devant le capteur ultrasonique.
  • Vérifiez la distance entre votre main et le capteur 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

L'explication se trouve dans les commentaires du code Arduino ci-dessus.

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

La lecture du capteur ultrasonique contient du bruit. Dans certains cas, ces données bruitées peuvent entraîner un mauvais fonctionnement. Nous pouvons éliminer le bruit en utilisant cette méthode :

  • Prenez plusieurs mesures et enregistrez-les dans un tableau.
  • Triez le tableau du plus petit au plus grand.
  • Supprimez le bruit des données:
    • Ignorez les valeurs les plus petites, car elles constituent du bruit.
    • Ignorez les valeurs les plus grandes, car elles constituent du bruit.
    • Calculez la moyenne en utilisant les valeurs centrales restantes.

    Le code d'exemple ci-dessous effectue 20 mesures.

    • Ignorez les cinq plus petits échantillons et les cinq plus grands échantillons, car ils sont considérés comme du bruit. Calculez la moyenne des dix échantillons du milieu, du 5e au 14e.
    /* * Ce code Arduino UNO R4 a été développé par newbiely.fr * Ce code Arduino UNO R4 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-uno-r4/arduino-uno-r4-ultrasonic-sensor */ #define TRIG_PIN 9 // The Arduino UNO R4 pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 8 // The Arduino UNO R4 pin connected to the ultrasonic sensor's ECHO pin 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() { // generate 10-microsecond pulse to TRIG pin digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // measure duration of pulse from ECHO pin float duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance float distance_cm = 0.017 * duration_us; return distance_cm; }

Vidéo

Applications des capteurs ultrasoniques

  • Évitement des collisions
  • Détection du remplissage
  • Mesure du niveau
  • Détection de la proximité

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !