ESP8266 - Capteur à ultrasons

Ce tutoriel vous explique comment utiliser l'ESP8266 et un capteur ultrasonique pour mesurer la distance avec des obstacles ou des objets. En détail, nous apprendrons :

Préparation du matériel

1×ESP8266 NodeMCU
1×Micro USB Cable
1×Ultrasonic Sensor
1×Jumper Wires
1×(Optional) 5V Power Adapter for ESP8266
1×(Optional) ESP8266 Screw Terminal Adapter

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 ultrasonique

Le capteur ultrasonique HC-SR04 est utilisé pour déterminer la distance à un objet via l'utilisation d'ondes ultrasonores.

Le brochage du capteur ultrasonique

Le capteur ultrasonique HC-SR04 possède quatre broches :

  • Broche VCC : doit être connectée à VCC (5V)
  • Broche GND : doit être connectée à GND (0V)
  • Broche TRIG : cette broche reçoit le signal de commande (impulsion) de l'ESP8266.
  • Broche ECHO : cette broche envoie un signal (impulsion) à l'ESP8266. L'ESP8266 mesure la longueur de l'impulsion pour calculer la distance.
Schéma de brochage du capteur ultrasonique

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.

i. Le microcontrôleur génère une impulsion de 10 microsecondes sur la broche TRIG, ce qui déclenche l'émission d'ondes ultrasoniques par le capteur ultrasonique.

i. L'onde ultrasonique est réfléchie après avoir frappé un obstacle.

i. Le capteur ultrasonique détecte ensuite l'onde ultrasonique réfléchie et mesure son temps de parcours.

i. Le capteur ultrasonique génère une impulsion vers la broche ECHO, la durée de l'impulsion étant égale au temps de parcours de l'onde ultrasonique.

i. Le microcontrôleur mesure la durée de l'impulsion sur la broche ECHO et calcule la distance entre le capteur et l'obstacle.

Comment obtenir la distance à partir d'un capteur à ultrasons

i. Pour calculer la distance depuis le capteur ultrasonique, deux étapes doivent être suivies (1 et 6 dans la section Comment ça marche) :

i. Générer une impulsion de 10 microsecondes sur la broche TRIG.

i. Mesurer la durée de l'impulsion sur la broche ECHO.

i. Calculer la distance entre le capteur et l'obstacle.

Calcul de la distance

Nous avons :

  • Le temps de voyage de l'onde ultrasonore (µs) : travel_time = pulse_duration
  • La vitesse de l'onde ultrasonore : speed = SPEED_OF_SOUND = 340 m/s = 0,034 cm/µs

Alors :

  • Distance de parcours de l'onde ultrasonore (cm) : travel_distance = vitesse × temps_de_parcours = 0.034 × durée_d'impulsion
  • 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

ESP8266 - Capteur ultrasonique

Nous pouvons utiliser deux broches d'un ESP8266 pour mesurer la distance à partir d'un capteur ultrasonique : une broche est connectée à la broche TRIG pour générer une impulsion de 10 µs, et l'autre broche est connectée à la broche ECHO pour mesurer l'impulsion provenant du capteur.

Diagramme de câblage

Schéma de câblage du capteur ultrasonique ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.

Comment programmer pour un capteur ultrasonique

  • Générez une impulsion de 10 microsecondes sur la broche D5 de l'ESP8266 en utilisant les fonctions digitalWrite() et delayMicroseconds(). Par exemple :
  • Définissez la broche sur HIGH avec digitalWrite(), puis attendez 10 microsecondes avec delayMicroseconds(), puis définissez la broche sur LOW avec digitalWrite().
digitalWrite(D5, HIGH); delayMicroseconds(10); digitalWrite(D5, LOW);
  • Mesurez la durée de l'impulsion (µs) sur la broche D6 de l'Arduino en utilisant la fonction pulseIn(). Par exemple :
duration_us = pulseIn(D6, HIGH);
  • Calculez la distance (cm) :
distance_cm = 0.017 * duration_us;

Code ESP8266

const int TRIG_PIN = D5; // The ESP8266 pin D5 connected to Ultrasonic Sensor's TRIG pin const int ECHO_PIN = D6; // The ESP8266 pin D6 connected to 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() { // 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

Pour commencer avec ESP8266 sur Arduino IDE, suivez ces étapes :

  • Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est votre première utilisation de l'ESP8266.
  • Câblez les composants comme indiqué dans le schéma.
  • Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte ESP8266, telle que (par exemple NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Copiez le code et ouvrez-le dans Arduino IDE.
  • Cliquez sur le bouton Télécharger dans Arduino IDE pour compiler et télécharger le code sur ESP8266.
Comment télécharger du code sur ESP8266 NodeMCU en utilisant l'IDE Arduino
  • Ouvrez le moniteur série
  • Déplacez votre main à proximité du 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 du capteur ultrasonique

Le résultat de mesure d'un capteur ultrasonique peut inclure du bruit, ce qui peut entraîner des opérations non désirées dans certaines applications. Pour éliminer le bruit, l'algorithme suivant peut être utilisé :

  • I. Prenez plusieurs mesures et stockez-les dans un tableau
  • I. Triez le tableau dans l'ordre croissant
  • I. Filtrez les bruits
    • Certains des échantillons les plus petits sont considérés comme du bruit → ignorez-les
    • Certains des échantillons les plus grands sont considérés comme du bruit → ignorez-les
    • Calculez la moyenne des échantillons du milieu

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

    • Les cinq plus petits échantillons doivent être ignorés.
    • Les cinq plus grands échantillons doivent être ignorés.
    • La moyenne des 10 échantillons du milieu (du 5ème au 14ème) doit être prise.
    /* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-ultrasonic-sensor */ #define TRIG_PIN D5 // The ESP8266 pin connected to Ultrasonic Sensor's TRIG pin #define ECHO_PIN D6 // The ESP8266 pin connected to 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() { // 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

Défiez-vous

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

  • Construire un système d'évitement de collision pour une voiture télécommandée.
  • Estimer le niveau de remplissage d'une poubelle.
  • Surveiller le niveau d'une poubelle.
  • Automatiser l'ouverture et la fermeture d'une poubelle. Indice : Voir ESP8266 - Moteur Servo.

Applications des capteurs à ultrasons

  • Prévention des collisions
  • Estimation de la capacité
  • Estimation de la hauteur
  • Identification des objets à 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!