ESP32 S3 - Capteur de mouvement - Buzzer piezo

Ce tutoriel vous montre comment connecter un capteur de mouvement HC-SR501 et un buzzer piezo à une carte ESP32 S3 et la programmer pour réagir au mouvement par du son. Vous allez construire deux projets pratiques : l'un qui joue une simple tonalité lorsqu'un mouvement est détecté, et l'autre qui joue une mélodie complète déclenchée par le mouvement.

Ce que vous allez construire :

  1. Une alerte sonore simple déclenchée par le mouvement, utilisant l'ESP32 S3 et le capteur HC-SR501
  2. Un lecteur de mélodie déclenché par le mouvement, utilisant un buzzer piezo passif
  3. Un arrêt automatique du son lorsqu'aucun mouvement n'est détecté
  4. Une base pour des systèmes de sécurité et de notification réels

À propos du buzzer piezo et du capteur de mouvement

Le HC-SR501 est un capteur de mouvement infrarouge passif (PIR) qui détecte le mouvement en mesurant le rayonnement infrarouge émis par des corps chauds comme les humains ou les animaux. Le buzzer piezo convertit les signaux électriques en tonalités audibles, ce qui en fait un dispositif de sortie idéal pour les alertes déclenchées par le mouvement. Ensemble, ces deux composants forment le cœur de nombreux systèmes de sécurité et de notification pratiques.

Nous avons des tutoriels spécifiques sur le buzzer piezo et le capteur de mouvement. Chaque tutoriel contient des informations détaillées et des instructions étape par étape sur le brochage du matériel, le principe de fonctionnement, le câblage vers l'ESP32 S3 et le code ESP32 S3. Apprenez-en plus aux liens suivants :

Caractéristiques principales

  • Tension de fonctionnement du HC-SR501 : 5V–20V DC
  • Portée de détection du HC-SR501 : jusqu'à 7 mètres (ajustable)
  • Angle de détection du HC-SR501 : jusqu'à 120°
  • Tension du buzzer piezo actif : 3–24V DC
  • Buzzer piezo passif : nécessite un signal PWM pour produire des tonalités et des mélodies

Veuillez noter que ce tutoriel utilise un buzzer 3–5V, mais vous pouvez l'adapter pour un buzzer 12V. Vous pouvez en apprendre plus sur les options de buzzer dans le ESP32 S3 - Buzzer.

Schéma de câblage

Connectez le capteur de mouvement HC-SR501 et le buzzer piezo à votre ESP32 S3 en suivant les schémas ci-dessous, en veillant à respecter la bonne polarité pour les deux composants.

Le schéma de câblage avec alimentation depuis le câble USB

ESP32 S3 Motion Sensor Piezo Buzzer Wiring Diagram

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

Les fils des modules et les fils épais tiennent souvent mal dans les connecteurs femelles. Une carte à bornier à vis pour ESP32 S3 règle ce problème. Branchez-y la carte ESP32 S3 et vissez les fils. Voici le montage avec la carte à bornier à vis :

ESP32 S3 Motion 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 Motion Sensor Piezo Buzzer Wiring Diagram (GPIO Breakout Board)

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

Le schéma de câblage avec alimentation depuis un adaptateur 5V

ESP32 S3 Motion Sensor Piezo Buzzer Wiring Diagram 5V power adapter

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

Vous voulez un montage plus propre et plus sûr ? La carte ESP32 S3 se branche sur une carte à bornier à vis pour ESP32 S3, qui transforme chaque broche en bornier à vis. Les broches ne changent pas. Branchez simplement chaque fil sur le bornier à vis correspondant :

ESP32 S3 Motion Sensor Piezo Buzzer Wiring Diagram 5V power adapter (Screw Terminal)

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

Vous pouvez aussi utiliser une carte d'extension GPIO pour ESP32 S3. Chaque GPIO a ses propres broches S, 3,3V et GND, et les fils des modules s'y branchent directement :

ESP32 S3 Motion Sensor Piezo Buzzer Wiring Diagram 5V power adapter (GPIO Breakout Board)

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

Notes de sécurité

Le capteur HC-SR501 nécessite 5V–20V sur sa broche VCC, tandis que les broches GPIO de l'ESP32 S3 fonctionnent en logique 3,3V. Le signal de sortie du capteur est typiquement de 3,3V, ce qui est compatible avec les entrées de l'ESP32 S3. Vérifiez toujours que la borne positive du buzzer est connectée à la broche GPIO désignée et que la borne négative est connectée à GND pour éviter une polarité inversée.

Réglage initial

Réglage de la portée de détection Vissez-le complètement dans le sens horaire.
Réglage du délai Vissez-le complètement dans le sens antihoraire.
Sélecteur de déclenchement répété Placez le cavalier comme sur l'image ci-dessous.
ESP32 S3 motion sensor initial setting

Code ESP32 S3 - Son simple

Le code suivant programme l'ESP32 S3 pour surveiller le capteur de mouvement HC-SR501 et activer immédiatement le buzzer piezo chaque fois qu'un mouvement est détecté. Lorsqu'aucun mouvement n'est présent, le buzzer reste silencieux, créant un système d'alerte audible simple. Téléversez ce sketch sur votre ESP32 S3 et testez-le en agitant la main devant le capteur.

/* * 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-motion-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-motion-sensor-piezo-buzzer */ #define MOTION_SENSOR_PIN 42 // ESP32-S3 pin GPIO42 connected to the OUTPUT pin of motion sensor #define BUZZER_PIN 41 // ESP32-S3 pin GPIO41 connected to Buzzer's pin int motionStateCurrent = LOW; // current state of motion sensor's pin int motionStatePrevious = LOW; // previous state of motion sensor's pin void setup() { Serial.begin(9600); // initialize serial pinMode(MOTION_SENSOR_PIN, INPUT); // set ESP32-S3 pin to input mode pinMode(BUZZER_PIN, OUTPUT); // set ESP32-S3 pin to output mode } void loop() { motionStatePrevious = motionStateCurrent; // store old state motionStateCurrent = digitalRead(MOTION_SENSOR_PIN); // read new state if (motionStatePrevious == LOW && motionStateCurrent == HIGH) { // pin state change: LOW -> HIGH Serial.println("Motion detected!, making sound"); digitalWrite(BUZZER_PIN, HIGH); // turn on } else if (motionStatePrevious == HIGH && motionStateCurrent == LOW) { // pin state change: HIGH -> LOW Serial.println("Motion stopped!, stops making sound"); digitalWrite(BUZZER_PIN, LOW); // turn off } }

Étapes rapides

  1. Nouveau sur ESP32 S3 ? Terminez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Effectuez le câblage comme montré dans le schéma ci-dessus.
  3. Connectez la carte ESP32 S3 à votre PC via un câble USB Type-C.
  4. Ouvrez l'Arduino IDE sur votre PC.
  5. Sélectionnez la bonne carte ESP32 S3 et le bon port COM.
  6. Copiez le code ci-dessus et collez-le dans l'Arduino IDE.
  7. Compilez et téléversez le code sur la carte ESP32 S3 en cliquant sur le bouton Upload dans l'Arduino IDE.
  8. Agitez la main devant le capteur.
  9. Écoutez le son du buzzer piezo.
  10. Astuce pro : Ajustez les potentiomètres de sensibilité et de délai du HC-SR501 pour régler finement la portée de détection et la durée pendant laquelle le buzzer sonne après l'arrêt du mouvement.

Explication du code ligne par ligne

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

Code ESP32 S3 - Mélodie

Le code suivant étend le projet en jouant une mélodie musicale complète via un buzzer piezo passif chaque fois que le HC-SR501 détecte un mouvement. Cette approche utilise le contrôle de fréquence PWM pour générer des notes musicales distinctes, et la lecture s'arrête automatiquement lorsqu'aucun mouvement n'est détecté. Suivez les étapes ci-dessous pour configurer le fichier d'en-tête des tonalités requis par ce sketch.

/* * 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-motion-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-motion-sensor-piezo-buzzer */ #include "pitches.h" #define MOTION_SENSOR_PIN 42 // ESP32-S3 pin GPIO42 connected to the OUTPUT pin of motion sensor #define BUZZER_PIN 41 // ESP32-S3 pin GPIO41 connected to Buzzer's pin // 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() { Serial.begin(9600); // initialize serial pinMode(MOTION_SENSOR_PIN, INPUT); // set ESP32-S3 pin to input mode } void loop() { int motionState = digitalRead(MOTION_SENSOR_PIN); // read new state if (motionState == HIGH) { Serial.println("The motion is detected"); buzzer(); } } 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 ? Terminez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Copiez le code ci-dessus et collez-le dans l'Arduino IDE.
  3. Créez le fichier pitches.h dans l'Arduino IDE en :
  • Cliquant sur le bouton juste en dessous de l'icône du moniteur série et en choisissant New Tab, ou 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 le code sur la carte ESP32 S3 en cliquant sur le bouton Upload dans l'Arduino IDE.
  2. Agitez la main devant le capteur.
  3. Écoutez la mélodie du buzzer piezo.
  4. Astuce pro : Essayez de remplacer le tableau de mélodie par votre propre séquence de notes dans le sketch pour personnaliser l'air de l'alerte.

Explication du code ligne par ligne

Le code ESP32 S3 ci-dessus contient une explication ligne par ligne. Veuillez 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.

Sortie du moniteur série

Ouvrez le Serial Monitor dans l'Arduino IDE (réglez le débit en bauds sur 9600) après avoir téléversé le code. Vous devriez voir une sortie similaire aux lectures suivantes, avec des horodatages reflétant les moments où le mouvement est détecté et disparaît.

∞
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 08:12:03 - Motion detected — buzzer ON 2026-06-16 08:12:07 - No motion — buzzer OFF 2026-06-16 08:12:45 - Motion detected — buzzer ON 2026-06-16 08:12:52 - No motion — buzzer OFF
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

Applications

Les systèmes de buzzer déclenchés par le mouvement construits avec l'ESP32 S3 sont des composants pratiques et polyvalents pour une large gamme de projets réels dans des environnements domestiques, de bureau et industriels.

  1. Alerte de sécurité domestique : Faites sonner une alarme lorsqu'un intrus entre dans une pièce ou une zone restreinte.
  2. Système de sonnette : Faites biper automatiquement quand quelqu'un approche d'une porte ou d'une entrée.
  3. Moniteur de sécurité enfant : Alertez les parents quand un enfant entre dans une zone dangereuse comme un escalier ou une zone de piscine.
  4. Accueil client en magasin : Jouez une tonalité de bienvenue quand un client entre dans un magasin.
  5. Détection d'animaux sauvages : Déclenchez un buzzer quand des animaux approchent d'un jardin ou d'une zone protégée.
  6. Indicateur d'occupation de bureau : Faites sonner une alerte quand quelqu'un entre dans une salle de réunion inoccupée.

Vidéo

Regardez le tutoriel vidéo étape par étape pour ce projet ESP32 S3 ci-dessous.

Défis

Ces défis sont conçus pour approfondir votre compréhension de l'ESP32 S3, de la détection de mouvement et du contrôle du buzzer au-delà des bases présentées dans ce tutoriel.

  1. Débutant : Modifiez le code afin que le buzzer bipe trois fois (impulsions courtes) au lieu de sonner en continu lorsqu'un mouvement est détecté.
  2. Intermédiaire : Ajoutez un indicateur LED en plus du buzzer afin que la lumière et le son s'activent ensemble lorsqu'un mouvement est détecté, et s'éteignent tous les deux lorsque le mouvement s'arrête.
  3. Avancé : Implémentez une fonction de mise en silence basée sur l'horloge interne de l'ESP32 S3 afin que le buzzer soit désactivé pendant les heures de nuit (par exemple, 22h à 7h) même lorsqu'un mouvement est détecté.

Commentaires

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