ESP32 S3 - Capteur à ultrasons - Buzzer piézoélectrique

Ce tutoriel vous montre comment utiliser l'ESP32 S3 avec un capteur à ultrasons et un buzzer piézoélectrique pour construire un système d'alerte audio déclenché par la proximité. Vous allez implémenter deux applications pratiques — l'une qui produit un son continu quand un objet est détecté à proximité, et l'autre qui joue une mélodie musicale quand l'objet entre dans la zone de détection.

Ce que vous allez construire :

  1. Un circuit ESP32 S3 avec un capteur à ultrasons et un buzzer piézoélectrique câblés à la carte
  2. Application 1 : le buzzer sonne automatiquement quand un objet est proche du capteur et s'arrête quand l'objet s'éloigne
  3. Application 2 : le buzzer joue une mélodie musicale chaque fois qu'un objet entre dans la plage de détection
  4. Une base pour des projets réels d'alerte de proximité, de capteur de stationnement, et de sécurité

À propos du buzzer piézoélectrique et du capteur à ultrasons

Le capteur à ultrasons mesure la distance en émettant une impulsion sonore et en chronométrant son écho, tandis que le buzzer piézoélectrique convertit des signaux électriques en tonalités audibles qui alertent l'utilisateur quand un objet entre dans la zone de détection. Ensemble sur l'ESP32 S3, ils forment une boucle complète de détection et de réponse — le capteur transmet des données de distance à la carte, la carte les évalue par rapport à un seuil, et le buzzer fournit un retour audio immédiat. Ce schéma est la base des alarmes de proximité, des capteurs de stationnement, et des robots évitant les obstacles.

Spécifications clés

Pour des informations détaillées sur chaque composant, référez-vous à ces tutoriels ESP32 S3 dédiés :

Notez que ce tutoriel utilise un buzzer 3–5V, mais vous pouvez l'adapter pour un buzzer 12V. Apprenez-en plus dans le ESP32 S3 - Buzzer.

Schéma de câblage

Connectez le capteur à ultrasons et le buzzer piézoélectrique à votre ESP32 S3 en suivant le schéma ci-dessous. Vérifiez chaque connexion avant de mettre la carte sous tension pour éviter tout court-circuit accidentel.

ESP32 S3 Ultrasonic Sensor Piezo Buzzer Wiring Diagram

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

Les fils de connexion sont pratiques pour un test rapide, mais pas pour un montage final. Placez la carte ESP32 S3 sur une carte à bornier à vis pour ESP32 S3, puis serrez chaque fil sous une vis. Voir le schéma ci-dessous pour la version avec borniers à vis.

ESP32 S3 Ultrasonic Sensor Piezo Buzzer Wiring Diagram (Screw Terminal)

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

Une carte d'extension GPIO pour ESP32 S3 convient aussi. En plus des broches S, 3,3V et GND de chaque GPIO, elle a des broches 3,3V et 5V supplémentaires :

ESP32 S3 Ultrasonic Sensor Piezo Buzzer Wiring Diagram (GPIO Breakout Board)

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

Notes de sécurité

Les broches GPIO de l'ESP32 S3 fonctionnent en logique 3,3V, mais la broche VCC du capteur à ultrasons HC-SR04 nécessite 5V pour un fonctionnement fiable — connectez VCC à la broche 5V de la carte, pas au 3,3V. Les lignes TRIG et ECHO fonctionnent en logique 3,3V sur la plupart des modules, donc elles se connectent directement aux broches GPIO de l'ESP32 S3 sans convertisseur de niveau. Un buzzer piézoélectrique nu consomme un courant minime depuis une broche GPIO et est sûr en 3,3V, mais ne connectez jamais un buzzer haute tension directement sans un relais ou un circuit pilote.

Composant Broche Broche ESP32 S3
Capteur à ultrasons VCC 5V
Capteur à ultrasons GND GND
Capteur à ultrasons TRIG GPIO8
Capteur à ultrasons ECHO GPIO9
Buzzer piézoélectrique Positif (+) GPIO42
Buzzer piézoélectrique Négatif (-) GND

Code ESP32 S3 - Son simple

Le croquis suivant lit le capteur à ultrasons à chaque itération de boucle, calcule la distance à l'objet le plus proche, et pilote le buzzer piézoélectrique selon que cette distance est en dessous d'un seuil fixé. Quand l'objet est proche, le buzzer sonne en continu ; quand l'objet s'éloigne, le buzzer s'arrête immédiatement. Ce couplage direct entre la lecture du capteur et la sortie du buzzer est la forme la plus simple d'audio déclenché par proximité que vous puissiez implémenter sur l'ESP32 S3.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 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/esp32-s3/esp32-s3-ultrasonic-sensor-piezo-buzzer */ /* * This ESP32-S3 code is created by esp32io.com * * This ESP32-S3 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-s3-ultrasonic-sensor-piezo-buzzer */ #define TRIG_PIN 8 // ESP32-S3 pin GPIO8 connected to Ultrasonic Sensor's TRIG pin #define ECHO_PIN 9 // ESP32-S3 pin GPIO9 connected to Ultrasonic Sensor's ECHO pin #define BUZZER_PIN 42 // ESP32-S3 pin GPIO42 connected to Piezo Buzzer's pin #define DISTANCE_THRESHOLD 50 // centimeters // variables will change: float duration_us, distance_cm; void setup() { Serial.begin (9600); // initialize serial port pinMode(TRIG_PIN, OUTPUT); // set ESP32-S3 pin to output mode pinMode(ECHO_PIN, INPUT); // set ESP32-S3 pin to input mode pinMode(BUZZER_PIN, OUTPUT); // set ESP32-S3 pin to output mode } 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; if (distance_cm < DISTANCE_THRESHOLD) digitalWrite(BUZZER_PIN, HIGH); // turn on Piezo Buzzer else digitalWrite(BUZZER_PIN, LOW); // turn off Piezo Buzzer // print the value to Serial Monitor Serial.print("distance: "); Serial.print(distance_cm); Serial.println(" cm"); delay(500); }

Étapes rapides

  1. Nouveau sur ESP32 S3 ? Suivez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Câblez les composants : suivez le schéma de câblage montré ci-dessus.
  3. Connectez l'ESP32 S3 : utilisez un câble USB Type-C pour vous connecter à votre ordinateur.
  4. Configurez Arduino IDE : si c'est la première fois que vous utilisez l'ESP32 S3, voir comment configurer l'environnement pour ESP32 S3 sur Arduino IDE.
  5. Sélectionnez votre carte : choisissez la carte ESP32 S3 et son port COM dans Arduino IDE.
  6. Téléversez le code : copiez le code ci-dessus et téléversez-le sur votre ESP32 S3.
How to upload ESP32 S3 code on Arduino IDE
  1. Bougez votre main devant le capteur à ultrasons.
  2. Écoutez le buzzer : le buzzer piézoélectrique sonnera quand votre main est proche et s'arrêtera quand vous l'éloignez.
  3. Astuce pro : si le capteur donne des lectures erratiques, assurez-vous que les fils TRIG et ECHO ne longent pas des fils d'alimentation — gardez les lignes de signal séparées pour réduire le bruit.

Sortie du Serial Monitor

Ouvrez le Serial Monitor d'Arduino IDE à 9600 bauds pour observer les relevés de distance et l'état du buzzer en temps réel.

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-06-16 09:12:01] Distance: 8 cm — Object detected — Buzzer ON [2026-06-16 09:12:02] Distance: 6 cm — Object detected — Buzzer ON [2026-06-16 09:12:03] Distance: 35 cm — No object — Buzzer OFF [2026-06-16 09:12:04] Distance: 42 cm — No object — Buzzer OFF
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

Explication du code ligne par ligne

Le code ESP32 S3 ci-dessus contient une explication ligne par ligne. Merci de lire les commentaires dans le code !

Code ESP32 S3 - Mélodie

Le croquis suivant joue une mélodie musicale complète via le buzzer piézoélectrique chaque fois qu'un objet entre dans la plage de détection du capteur à ultrasons. Il utilise un fichier d'en-tête compagnon pitches.h qui associe des noms de notes comme NOTE_C4 et NOTE_G3 à leurs fréquences en Hz, gardant le tableau de mélodie facile à lire et à modifier pour n'importe quel air que vous choisissez.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 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/esp32-s3/esp32-s3-ultrasonic-sensor-piezo-buzzer */ /* * This ESP32-S3 code is created by esp32io.com * * This ESP32-S3 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-s3-ultrasonic-sensor-piezo-buzzer */ #include "pitches.h" #define TRIG_PIN 8 // ESP32-S3 pin GPIO8 connected to Ultrasonic Sensor's TRIG pin #define ECHO_PIN 9 // ESP32-S3 pin GPIO9 connected to Ultrasonic Sensor's ECHO pin #define BUZZER_PIN 42 // ESP32-S3 pin GPIO42 connected to Piezo Buzzer's pin #define DISTANCE_THRESHOLD 50 // centimeters // variables will change: float duration_us, distance_cm; // notes in the melody: int melody[] = { NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_G5 }; // note durations: 4 = quarter note, 8 = eighth note, etc, also called tempo: int noteDurations[] = { 8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 2, 8, 8, 8, 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 4, 4 }; void setup() { pinMode(TRIG_PIN, OUTPUT); // set ESP32-S3 pin to output mode pinMode(ECHO_PIN, INPUT); // set ESP32-S3 pin to input mode } 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; if (distance_cm < DISTANCE_THRESHOLD) buzzer(); // play a song delay(500); } void buzzer() { // iterate over the notes of the melody: int size = sizeof(noteDurations) / sizeof(int); for (int thisNote = 0; thisNote < size; thisNote++) { // to calculate the note duration, take one second divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 1000 / noteDurations[thisNote]; tone(BUZZER_PIN, melody[thisNote], noteDuration); // to distinguish the notes, set a minimum time between them. // the note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // stop the tone playing: noTone(BUZZER_PIN); } }

Étapes rapides

  1. Nouveau sur ESP32 S3 ? Suivez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Téléversez le croquis de mélodie : copiez le code ci-dessus et collez-le dans Arduino IDE.
  3. Créez le fichier pitches.h dans Arduino IDE en :
    • Cliquant soit sur le bouton juste en dessous de l'icône du moniteur série et en choisissant New Tab, soit en utilisant les touches Ctrl+Shift+N.
    Arduino IDE 2 adds file
    • Donnant au fichier le nom pitches.h et en cliquant sur le bouton OK
    Arduino IDE 2 adds file pitches.h
    • Copiant le code ci-dessous et en le collant dans le fichier pitches.h créé.
    /************************************************* * Public Constants *************************************************/ #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define NOTE_B2 123 #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_AS3 233 #define NOTE_B3 247 #define NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978
    1. Compilez et téléversez : cliquez sur le bouton Upload dans Arduino IDE.
    How to upload ESP32 S3 code on Arduino IDE
    1. Bougez votre main devant le capteur à ultrasons pour entrer dans la zone de détection.
    2. Écoutez la mélodie : le buzzer piézoélectrique joue l'air complet du début à la fin chaque fois qu'un objet est détecté.
    3. Astuce pro : la fonction delay() à l'intérieur de la boucle de mélodie bloque le reste du code pendant la lecture. Pour éviter ce blocage, remplacez-la par la bibliothèque ezBuzzer, conçue pour jouer des mélodies sans bloquer le reste du code.

    Sortie du Serial Monitor

    Ouvrez le Serial Monitor d'Arduino IDE à 9600 bauds pour observer la lecture de la mélodie déclenchée par la détection de proximité.

    ∞
    Newbiely | Arduino IDE 2.3.8
    ──
    ☐
    ✕
    File
    Edit
    Sketch
    Tools
    Help
    ESP32S3 Dev Module
    Newbiely.ino
    ···
    8 Serial.println("Hello World!");
    Output
    Serial Monitor
    Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
    New Line
    9600 baud
    [2026-06-16 09:18:10] Distance: 9 cm — Object detected — Starting melody [2026-06-16 09:18:10] Note: NOTE_C4 | Duration: 250ms [2026-06-16 09:18:11] Note: NOTE_G3 | Duration: 125ms [2026-06-16 09:18:14] Melody complete
    Ln 11, Col 1
    ESP32S3 Dev Module on COM15
    2

    Explication du code ligne par ligne

    Le code ESP32 S3 ci-dessus contient une explication ligne par ligne. Merci de lire les commentaires dans le code !

    ※ Note:

    Le code ci-dessus utilise la fonction delay(). Cela bloque le reste du code pendant la lecture de la mélodie. Pour éviter de bloquer le reste du code, utilisez plutôt la bibliothèque ezBuzzer. Cette bibliothèque est conçue pour faire biper ou jouer une mélodie sur le buzzer sans bloquer le reste du code.

Idées d'applications

La combinaison capteur à ultrasons et buzzer piézoélectrique de l'ESP32 S3 est un composant polyvalent pour des dizaines de projets sensibles à la proximité. Voici quelques idées pour stimuler votre imagination :

  1. Capteur de stationnement : construisez une aide au stationnement de voiture qui bipe plus vite à mesure qu'un véhicule se rapproche d'un mur ou d'un obstacle.
  2. Alarme intrusion : créez une alerte de sécurité qui émet une tonalité forte chaque fois que quelqu'un entre dans une zone surveillée.
  3. Canne d'assistance pour malvoyants : attachez le capteur à une canne et alertez l'utilisateur des obstacles avec des motifs de buzzer.
  4. Alerte de niveau de liquide : montez le capteur au-dessus d'un réservoir et déclenchez le buzzer quand le niveau de liquide descend en dessous d'un seuil.
  5. Sonnette de proximité : jouez automatiquement une mélodie de carillon quand un visiteur s'approche de votre porte.
  6. Robot évitant les obstacles : utilisez le buzzer comme avertissement sonore pendant que le robot navigue autour des objets.

Section vidéo

Regardez la vidéo pas à pas de ce projet ESP32 S3 ci-dessous.

Mettez-vous au défi

Maintenant que vous avez un circuit ESP32 S3 fonctionnel avec capteur à ultrasons et buzzer piézoélectrique, poussez vos compétences plus loin avec ces défis classés par difficulté :

  1. Débutant : changez le seuil de distance afin que le buzzer s'active seulement quand un objet est à moins de 5 cm au lieu de la valeur par défaut.
  2. Débutant : faites biper le buzzer trois fois brièvement au lieu de sonner en continu quand un objet est détecté.
  3. Intermédiaire : faites varier la fréquence de tonalité du buzzer selon la distance — une tonalité plus aiguë pour les objets plus proches et plus grave pour les objets plus éloignés.
  4. Intermédiaire : utilisez la bibliothèque ezBuzzer pour jouer une mélodie en arrière-plan sans bloquer la boucle de mesure de distance.
  5. Avancé : ajoutez un écran OLED qui affiche le relevé de distance en direct à côté de l'état du buzzer.
  6. Avancé : implémentez une alarme multi-zones avec trois seuils de distance qui déclenchent des motifs de buzzer différents pour chaque zone.

※ 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 !