HC-SR04 Usltrasonic Sensor With ESP32 Using Arduino IDE
by sss2022 in Circuits > Electronics
58 Views, 2 Favorites, 0 Comments
HC-SR04 Usltrasonic Sensor With ESP32 Using Arduino IDE
In this project, we will learn how to use an HC-SR04 ultrasonic sensor with an ESP32 board to measure distance easily and accurately. This type of sensor is widely used in robotics, home automation, and electronics projects to detect obstacles or measure distances without physical contact.
The goal is to understand how the sensor works, how to interface it with the ESP32, and how to display the measured values in real time.
------------------------------------------------------------------------------------------
Dans ce projet, nous allons apprendre à utiliser un capteur à ultrasons HC-SR04 avec une carte ESP32 afin de mesurer des distances de manière simple et précise. Ce type de capteur est largement utilisé dans les projets de robotique, de domotique et d’électronique pour détecter des obstacles ou mesurer des longueurs sans contact.
L’objectif est de comprendre comment le capteur fonctionne, comment l’interfacer avec l’ESP32 et comment afficher les valeurs mesurées en temps réel.
Supplies
-----------------------------------------------------------------------
- ESP32 development board
- 30 pin esp32 expansion board
- USB-A to Micro-USB cable
- Breadboard
- HC-SR04 ultrasonic sensor
- Three 1 KOhm resistors
- Jumper wires
-----------------------------------------------------------------------
- Carte de développement ESP32
- Carte d'extension ESP32 à 30 broches
- Câble USB-A vers micro-USB
- Platine d'essai
- Capteur à ultrasons HC-SR04
- Trois résistances de 1 KOhm
- Fils de connexion
----------------------------------------------------------------------
How the HC-SR04 Ultrasonic Sensor Works? / Comment Fonctionne Le Capteur À Ultrasons HC-SR04?
The HC-SR04 ultrasonic sensor works by sending out an ultrasonic pulse and measuring the time it takes for the echo to return after bouncing off an object.
The process happens in three main steps:
- Triggering: the TRIG pin receives a 10 µs pulse, which makes the sensor emit a 40 kHz ultrasonic burst.
- Reflection: the sound wave travels through the air, hits an object, and bounces back toward the sensor.
- Echo detection: the ECHO pin goes HIGH for the exact duration of the wave’s round trip. This duration is then used to calculate the distance using the formula:
Distance=(Time×Speed of Sound)/2
The division by 2 is necessary because the wave travels to the object and back.
Using this principle, the ESP32 can measure distances with good accuracy and in real time.
------------------------------------------------------------------------------------------
Le capteur à ultrasons HC-SR04 fonctionne en envoyant une onde ultrasonore et en mesurant le temps nécessaire pour que cette onde revienne après avoir rebondi sur un obstacle.
Le processus se déroule en trois étapes :
- Émission : la broche TRIG déclenche une impulsion de 10 µs, ce qui pousse le capteur à émettre un signal ultrasonore à 40 kHz.
- Réflexion : l’onde sonique se propage dans l’air, touche un objet, puis revient vers le capteur.
- Réception : la broche ECHO passe à l’état HIGH pendant la durée exacte du trajet aller-retour du signal. Cette durée permet alors de calculer la distance grâce à la formule :
Distance=(Temps×Vitesse du son)/2
La division par 2 est nécessaire car l’onde effectue un aller-retour.
En utilisant ce principe, l’ESP32 peut mesurer des distances avec une bonne précision et en temps réel.
Why Using a Voltage Divider? / Pourquoi Utiliser Un Diviseur De Tension?
In this project, the voltage divider is a key component used to protect the ESP32. The HC-SR04 sensor operates at 5V, and its ECHO pin outputs a 5V logic signal, which exceeds the 3.3V input limit of the ESP32.
To prevent damage, we use a voltage divider made of two resistors. This circuit lowers the input voltage according to the formula:
Vout=5V×R1/(R1+R2)
By choosing appropriate resistor values (for example R1 = 2 kΩ and R2 = 1 kΩ), the voltage is reduced to about 3.3V, which is completely safe for the ESP32. This ensures a clean, stable signal compatible with the microcontroller’s 3.3V logic.
------------------------------------------------------------------------------------------
Dans ce Projet, le diviseur de tension joue un rôle essentiel pour protéger l’ESP32. Le capteur HC-SR04 fonctionne en 5 V et sa broche ECHO renvoie un signal logique de 5 V, ce qui dépasse la limite de 3,3 V supportée par les entrées de l’ESP32.
Pour éviter d’endommager la carte, nous utilisons un diviseur de tension composé de deux résistances. Ce montage permet d’abaisser la tension d’entrée selon la formule :
Vsortie=5V×R1/(R1+R2)
En choisissant des valeurs adaptées (par exemple R1 = 2 kΩ et R2 = 1 kΩ), la tension est réduite à environ 3,3 V, parfaitement sûre pour l’ESP32. Ce diviseur garantit un signal propre, stable et compatible avec la logique 3,3 V du microcontrôleur.
Circuit Diagram / Schéma
The circuit diagram is made using : thttps://www.wokwi.com/
------------------------------------------------------------------------------------------
Le schéma est réalisé via : thttps://www.wokwi.com/
Installing ESP32 in Arduino IDE / Installation De L'ESP32 Dans L'IDE De L'arduino
1- Open Arduino IDE, then go to File> Preferences
2- Enter the following into the “Additional Board Manager URLs” field:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Then, click the “OK” button.
-------------------------------------------------------------------------------------------
1- Ouvrir l’Arduino IDE, puis va dans File> Preferences.
2- Dans le champ “Additional Board Manager URLs”, saisir l’adresse suivante :
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Ensuite, cliquer sur le bouton "OK".
Libraries / Bibliothèques
1- Open Arduino IDE, then go to the Board Manager. In the search bar, install the “ESP32 by Espressif Systems” library.
2- Once the installation is complete, add and select the ESP32 board you are using from the Tools > Boards menu.
3- On your computer, open the Device Manager to check which COM port your ESP32 board is connected to.
4- Go back to Arduino IDE, navigate to Tools > Port, and select the COM port corresponding to your board.
-------------------------------------------------------------------------------------------
1- Ouvrir Arduino IDE, puis accéder au Gestionnaire de cartes (Board Manager). Dans la barre de recherche, installer la bibliothèque “ESP32 by Espressif Systems”.
2- Une fois l’installation terminée, ajouter et sélectionner la carte ESP32 que vous utilisez dans le menu Tools > Boards
3- Sur l’ordinateur, ouvrir le Gestionnaire de périphériques (Device Manager) pour vérifier sur quel port COM est connectée la carte ESP32.
4- Revenir dans Arduino IDE, aller dans Tools > Port et sélectionner le port COM correspondant à la carte.
Source Code / Code Source
You can find the full source code below, and you also have the option to simulate your program directly here. This allows you to test and understand how it works before running it on your actual ESP32.
https://wokwi.com/projects/449578162377887745
-------------------------------------------------------------------------------------------
Vous trouverez le code source complet ci-dessous, et vous avez également la possibilité de simuler votre programme directement ici. Cela vous permet de tester et de comprendre son fonctionnement avant de l’exécuter sur votre réel ESP32.
Erreur : “Wrong Boot Mode Detected (0x13)! the Chip Needs to Be in Download Mode.”
When you compile your program to upload it, you might encounter the error:
“A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode.”
The solution is simple:
1- Click Upload in the Arduino IDE.
2- When you see:
3- Hold down the BOOT button on your ESP32.
4- Release the BOOT button when your program is uploaded successfully to the board.
Important note: even after fixing this error, the program may still fail to start immediately. If that happens, simply press the RESET button on the ESP32 to get it working properly.
-------------------------------------------------------------------------------------------
Lorsque vous compilez votre programme pour le téléverser, vous pouvez rencontrer l’erreur :
“A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode.”
La solution est simple :
1- Cliquez sur Upload dans Arduino IDE.
2- Lorsque vous voyez :
3- Maintenez le bouton BOOT de votre ESP32.
4- Relâchez le bouton BOOT quand votre programme est téléversé correctement sur la carte.
Remarque importante : même lorsque cette erreur est résolue, il peut arriver que le programme ne démarre pas directement. Dans ce cas, il suffit d’appuyer sur le bouton RESET de l’ESP32 pour que tout fonctionne correctement.
Reading Measurements in the Serial Monitor / Lecture Des Mesures Sur Le Serial Monitor
To verify the operation of the ultrasonic sensor with the ESP32, we use the Serial Monitor in the Arduino IDE. After uploading the code, open Tools > Serial Monitor and set the baud rate to 115200 (the same value used in Serial.begin(115200)).
The Serial Monitor displays the distance measured by the sensor in real time, allowing you to quickly check whether the TRIG pulses and ECHO responses are working correctly. You will see the distance values scroll in centimeters, this can confirm that the wiring, sensor and ESP32 are working as expected.
------------------------------------------------------------------------------------------
Pour vérifier le fonctionnement du capteur ultrason avec l’ESP32, nous utilisons le Moniteur série de l’Arduino IDE. Après avoir téléversé le code, ouvrez Outils > Moniteur série et réglez la vitesse sur 115200 bauds (la même que dans Serial.begin(115200)).
Le Serial Monitor affiche en temps réel la distance mesurée par le capteur, ce qui permet de vérifier rapidement si les déclenchements TRIG et les retours ECHO fonctionnent correctement. Vous verrez défiler les valeurs en centimètres, ce qui peut confirmer que le câblage , le capteur et l’ESP32 fonctionnent comme prévu.