Introduction: Automatic Barrier Gate With ESP32 and HC-SR04 (Arduino IDE)
In this project, we will build an automatic barrier system controlled by an ESP32. The system uses an HC-SR04 ultrasonic sensor to detect when a car approaches. When the measured distance becomes short enough, the ESP32 activates a servo motor that automatically opens the barrier.
This project is perfect for learning how to integrate sensors, actuators, and microcontrollers while exploring the basics of automation. It can be used as a parking gate prototype, or a simple interactive electronics demonstration.
------------------------------------------------------------------------------------------
Dans ce projet, nous allons créer une barrière automatique contrôlée par un ESP32. Le système utilise un capteur à ultrason HC-SR04 pour détecter le passage d’une voiture. Lorsque la distance mesurée est suffisamment courte, l’ESP32 active un servomoteur qui ouvre la barrière automatiquement.
Ce projet est idéal pour comprendre l’intégration entre capteurs, actionneurs et microcontrôleurs, tout en explorant les bases de l’automatisation. Il peut être utilisé comme prototype de parking ou simple démonstration d’électronique interactive.
Supplies
-----------------------------------------------------------------------
- ESP32 development board
- 30 pin esp32 expansion board
- USB-A to Micro-USB cable
- Breadboard
- HC-SR04 ultrasonic sensor
- 9g servomotor
- 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
- servomoteur 9g
- Trois résistances de 1 KOhm
- Fils de connexion
----------------------------------------------------------------------
Step 1: Circuit Diagram / Schéma
The circuit diagram is made using : thttps://www.wokwi.com/
For more details on how the ultrasonic sensor works and why a voltage divider is used, please visit this page:
https://www.instructables.com/HC-SR04-Usltrasonic-Sensor-With-ESP32-Using-Arduin/
------------------------------------------------------------------------------------------
Le schéma est réalisé via : thttps://www.wokwi.com/
Pour en savoir davantage sur le fonctionnement du capteur ultrason et sur la raison d'utiliser un diviseur de tension, vous pouvez consulter cette page :
https://www.instructables.com/HC-SR04-Usltrasonic-Sensor-With-ESP32-Using-Arduin/
Step 2: 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".
Step 3: 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.
5- Then go to the Library Manager. Search for “esp32servo” and install the package “ESP32Servo by Kevin Harrington, John K. Bennett.”
-------------------------------------------------------------------------------------------
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.
5- Allez ensuite dans Library Manager . Recherchez "esp32servo" et installez le paquet "ESPServo by Kevin Harrington,John K. Bennett" .
Step 4: 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/450212747741128705
-------------------------------------------------------------------------------------------
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.
Step 5: 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.
Step 6: Sensor Detection Note / Remarque Sur La Détection Du Capteur
The HC-SR04 ultrasonic sensor performs best when the detected object has a flat and rigid surface. Hard materials such as metal, plastic, or concrete reflect the ultrasonic waves very effectively, which provides stable and accurate distance measurements. This makes it ideal for detecting the front of a car, since the bodywork offers a large, flat and reflective surface.
However, the sensor may become less accurate when the object is soft (cloth, foam), thin, very curved, or placed at a large angle, as these surfaces do not reflect the ultrasonic waves directly back to the sensor.
-------------------------------------------------------------------------------------------
Le capteur ultrason HC-SR04 fonctionne de manière optimale lorsque l’objet détecté possède une surface plate et rigide. Les matériaux durs comme le métal, le plastique ou le béton réfléchissent très bien les ondes ultrasonores, ce qui permet d’obtenir des mesures stables et précises. Cela convient parfaitement à la détection d’une voiture, dont la carrosserie offre une grande surface plane et réfléchissante.
En revanche, le capteur peut devenir moins précis si l’objet est mou (tissu, mousse), fin, très arrondi ou placé avec un angle important, car ces surfaces renvoient moins bien l’onde ultrasonore vers le capteur.





