ESP32 S3 - Capteur Ultrasonique - OLED

Le capteur ultrasonique HC-SR04 combiné à un écran OLED donne à l'ESP32 S3 une station de mesure de distance compacte et autonome — aucun ordinateur portable requis une fois le croquis téléversé. Ce tutoriel vous guide dans le câblage des deux composants à l'ESP32 S3 et l'écriture du code Arduino qui prend des mesures et les affiche sur l'écran OLED en temps réel.

Ce que vous allez construire :

  1. Un circuit connectant un capteur ultrasonique HC-SR04 et un écran OLED SSD1306 à l'ESP32 S3
  2. Un croquis qui déclenche le capteur, calcule la distance, et met à jour l'OLED toutes les 500 millisecondes
  3. Un mètre de distance portable et autonome qui affiche les relevés sans avoir besoin d'un Serial Monitor
  4. Une base que vous pouvez étendre en alarmes de proximité, assistants de stationnement, ou moniteurs de niveau de liquide

À propos du Capteur Ultrasonique et de l'OLED

Le capteur ultrasonique HC-SR04 émet une impulsion sonore haute fréquence et mesure combien de temps l'écho met à revenir, permettant à l'ESP32 S3 de calculer la distance à tout objet devant lui sans contact physique. L'associer à un écran OLED SSD1306 transforme le résultat en une lecture nette et à haut contraste, facile à lire d'un coup d'œil, ce qui le rend idéal pour les instruments autonomes et les projets interactifs.

Spécifications Clés

Nous avons des tutoriels dédiés couvrant chaque composant en profondeur. Chaque tutoriel contient des informations détaillées et des instructions étape par étape sur le brochage du matériel, le principe de fonctionnement, la connexion de câblage à l'ESP32 S3, et le code Arduino. En savoir plus sur eux aux liens suivants :

Schéma de Câblage

Connectez le HC-SR04 et l'écran OLED SSD1306 à votre ESP32 S3 en suivant le schéma ci-dessous, et vérifiez deux fois chaque connexion avant d'alimenter la carte. Le capteur ultrasonique fonctionne en 5V, donc utilisez la broche 5V (VBUS) sur l'ESP32 S3 quand alimenté par USB, tandis que l'OLED peut fonctionner en 3,3V ou 5V selon votre module.

Schéma de Câblage Capteur Ultrasonique OLED ESP32 S3

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

Pour un projet durable, les borniers à vis tiennent mieux les fils que les fils de connexion. Une carte à bornier à vis pour ESP32 S3 règle ce problème. Branchez-y la carte ESP32 S3 et vissez les fils. Les broches ne changent pas. Branchez simplement chaque fil sur le bornier à vis correspondant :

Schéma de Câblage Capteur Ultrasonique OLED ESP32 S3 (Screw Terminal)

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

Vous préférez des connecteurs à broches plutôt que des vis ? Branchez la carte ESP32 S3 sur une carte d'extension GPIO pour ESP32 S3 :

Schéma de Câblage Capteur Ultrasonique OLED ESP32 S3 (GPIO Breakout Board)

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

Notes de Sécurité

Connectez toujours la broche VCC du HC-SR04 au rail 5V plutôt qu'au rail 3,3V — le capteur nécessite 5V pour fonctionner correctement et produira des impulsions d'écho non fiables à des tensions plus basses. Gardez les fils de signal courts et loin des fils d'alimentation pour minimiser le bruit sur la ligne ECHO, qui pourrait produire des lectures de distance erratiques.

Composant Broche Broche ESP32 S3
Ultrasonic Sensor VCC 5V
Ultrasonic Sensor GND GND
Ultrasonic Sensor TRIG GPIO15
Ultrasonic Sensor ECHO GPIO7
OLED Display VCC 3.3V
OLED Display GND GND
OLED Display SCL GPIO9 (Horloge I2C)
OLED Display SDA GPIO8 (Données I2C)

Code ESP32 S3

Le code suivant déclenche le capteur ultrasonique HC-SR04 toutes les 500 millisecondes, lit la durée de l'impulsion d'écho, la convertit en centimètres, et affiche le résultat centré sur l'écran OLED SSD1306. Il utilise la bibliothèque Adafruit SSD1306 pour garder la logique d'affichage claire et lisible, et centre automatiquement la valeur de distance à la fois horizontalement et verticalement sur l'écran.

/* * 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-oled */ /* * 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-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define TRIG_PIN 15 // ESP32-S3 pin GPIO15 connected to Ultrasonic Sensor's TRIG pin #define ECHO_PIN 7 // ESP32-S3 pin GPIO7 connected to Ultrasonic Sensor's ECHO pin // OLED is on the default I2C pins of ESP32-S3: SDA = GPIO8, SCL = GPIO9 Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // create SSD1306 display object connected to I2C String tempString; void setup() { Serial.begin(9600); pinMode(TRIG_PIN, OUTPUT); // set ESP32-S3 pin to output mode pinMode(ECHO_PIN, INPUT); // set ESP32-S3 pin to input mode // initialize OLED display with address 0x3C for 128x64 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); while (true); } delay(2000); // wait for initializing oled.clearDisplay(); // clear display oled.setTextSize(2); // text size oled.setTextColor(WHITE); // text color oled.setCursor(0, 10); // position to display tempString.reserve(10); // to avoid fragmenting memory when using String } 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 long duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance float distance_cm = 0.017 * duration_us; // print the value to Serial Monitor Serial.print("distance: "); Serial.print(distance_cm); Serial.println(" cm"); tempString = String(distance_cm, 2); // two decimal places tempString += " cm"; oledDisplayCenter(tempString); // display distance on OLED } void oledDisplayCenter(String text) { int16_t x1; int16_t y1; uint16_t width; uint16_t height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); // display on horizontal and vertical center oled.clearDisplay(); // clear display oled.setCursor((SCREEN_WIDTH - width) / 2, (SCREEN_HEIGHT - height) / 2); oled.println(text); // text to display oled.display(); }

※ Note:

Le code ci-dessus centre automatiquement le texte horizontalement et verticalement sur l'écran OLED. Voir Comment centrer verticalement/horizontalement sur OLED pour plus de détails.

Étapes Rapides

  1. Nouveau sur ESP32 S3 ? Terminez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Câblez le capteur ultrasonique et l'écran OLED à l'ESP32 S3 en suivant le schéma de câblage ci-dessus.
  3. Connectez la carte ESP32 S3 à votre PC en utilisant 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 dans le menu Tools.
  6. Cliquez sur l'icône Libraries sur la barre de gauche de l'Arduino IDE.
  7. Tapez "SSD1306" dans la boîte de recherche, puis trouvez la bibliothèque SSD1306 par Adafruit.
  8. Cliquez sur le bouton Install pour installer la bibliothèque.
  • Search for Adafruit SSD1306 created by Adafruit and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Library Manager
Type:
All
Topic:
All
Adafruit SSD1306 by Adafruit
SSD1306 oled driver library for monochrome 128x64 and 128x32 displays More info
2.5.9
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
ESP32S3 Dev Module on COM15
1
  1. Il vous sera demandé d'installer d'autres dépendances de bibliothèque.
  2. Cliquez sur le bouton Install All pour installer toutes les dépendances de bibliothèque.
  3. Copiez le code ci-dessus et collez-le dans l'Arduino IDE.
  4. Cliquez sur le bouton Upload pour compiler et téléverser le code sur votre ESP32 S3.
Téléverser le code sur Arduino IDE
  1. Tenez votre main ou un objet à différentes distances devant le capteur.
  2. Regardez le relevé de distance se mettre à jour sur l'écran OLED en temps réel.
  3. Astuce : Si rien n'apparaît sur l'OLED, vérifiez que l'adresse I2C dans le code correspond à votre module (essayez 0x3F si 0x3D ou 0x3C ne fonctionne pas) et confirmez que les fils SDA/SCL ne sont pas inversés.

Sortie du Serial Monitor

La sortie suivante du Serial Monitor montre l'ESP32 S3 lisant la distance depuis le capteur HC-SR04 et mettant à jour l'OLED à intervalles réguliers. Chaque ligne est horodatée afin que vous puissiez vérifier le taux de mise à jour et vérifier que les relevés changent pendant que vous rapprochez ou éloignez un objet.

∞
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:22:01] Distance: 31.4 cm [2026-06-16 09:22:01] Distance: 27.8 cm [2026-06-16 09:22:02] Distance: 19.2 cm [2026-06-16 09:22:02] Distance: 11.6 cm
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

Applications et Idées de Projets

Une fois que vous avez des relevés de distance apparaissant sur l'OLED avec votre ESP32 S3, vous pouvez adapter ce projet en une large gamme d'applications pratiques dans la domotique, la robotique, et la surveillance industrielle.

  1. Assistant de stationnement : Montez le capteur dans un garage et affichez la distance en temps réel pendant qu'un véhicule approche d'une ligne d'arrêt sur l'OLED.
  2. Moniteur de niveau de liquide : Pointez le capteur vers le bas dans un réservoir et affichez la profondeur mesurée comme pourcentage de remplissage sur l'OLED.
  3. Alarme de proximité : Déclenchez un buzzer quand la distance affichée descend sous un seuil configurable.
  4. Robot de détection d'obstacles : Alimentez la logique de navigation avec le relevé de distance de l'OLED pour diriger un véhicule autonome autour des obstacles.
  5. Compteur de personnes : Détectez quand quelqu'un passe une entrée et incrémentez un compte de visiteurs affiché sur l'OLED.
  6. Station de mesure de hauteur : Montez le capteur en hauteur et affichez la hauteur calculée d'un objet ou d'une personne se tenant en dessous.

Tutoriel Vidéo

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

Défiez-vous

Maintenant que vous pouvez afficher des relevés de distance en direct sur l'OLED avec votre ESP32 S3, essayez ces défis progressivement plus difficiles pour approfondir votre compréhension et étendre le projet en quelque chose de plus performant.

  1. Débutant : Modifiez le croquis pour afficher la distance en centimètres et en pouces sur des lignes séparées de l'OLED.
  2. Débutant : Ajoutez une seconde ligne à l'OLED qui montre si l'objet détecté est « NEAR » (sous 20 cm) ou « FAR » (au-dessus de 20 cm).
  3. Intermédiaire : Implémentez un indicateur de proximité à trois niveaux sur l'OLED — « SAFE », « CLOSE », et « DANGER » — avec des couleurs de LED correspondantes en utilisant une LED RGB.
  4. Intermédiaire : Appliquez une moyenne mobile sur cinq échantillons aux relevés de distance pour lisser le bruit et produire un affichage OLED plus stable.
  5. Avancé : Ajoutez un bouton poussoir qui permet à l'utilisateur de définir un seuil d'alerte personnalisé, stocké dans la mémoire flash afin qu'il survive à un cycle d'alimentation.
  6. Avancé : Étendez le projet avec le Wi-Fi afin que l'ESP32 S3 envoie les relevés de distance à un tableau de bord web tout en mettant à jour simultanément l'OLED.

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 !