
Robot Éviteur d'Obstacle
- 31 Jan, 2025
1️⃣ Introduction
La robotique est un domaine passionnant qui permet de créer des machines autonomes capables d’interagir avec leur environnement. Aujourd’hui, nous allons voir comment concevoir un robot évite-obstacle en utilisant une carte Arduino Uno, un capteur ultrasonique HC-SR04, un driver de moteur L298N, et un châssis 2 roues motrices (2WD).
Ce robot sera capable de détecter les obstacles et de changer de direction automatiquement, sans intervention humaine. Grâce au capteur HC-SR04, il mesurera la distance des objets devant lui et prendra une décision :
✅ Si la voie est libre → il avance.
✅ Si un obstacle est détecté → il recule et tourne pour éviter la collision.
Pourquoi réaliser ce projet ?
- Simple et éducatif : Idéal pour comprendre le fonctionnement des capteurs et des moteurs avec Arduino.
- Autonome et intelligent : Il ne nécessite pas de télécommande, il réagit seul à son environnement.
- Base pour des projets plus avancés : Ce projet peut être amélioré avec plusieurs capteurs ou une intelligence artificielle.
Dans cet article, nous verrons le matériel nécessaire, le montage électronique, le code Arduino et les tests pour faire fonctionner ce robot. Prêt à vous lancer dans la création de votre propre robot autonome ? C’est parti ! 🎯🤩
2️⃣ Matériel Requis 🛠️
Liste des composants nécessaires :
✅ Arduino Uno
✅ Module HC-SR04
✅ Driver L298N
✅ Châssis 2WD
✅ Fils de connexion
✅ Batterie 9V
✅ Support Pile 9V
3️⃣ Code Arduino Explication 💻
1.Définition des broches et des paramètres
Dans cette première partie du code, nous définissons les broches utilisées pour le capteur ultrasonique HC-SR04 et pour les moteurs connectés au driver L298N. Le TRIG_PIN et ECHO_PIN permettent d’envoyer et de recevoir le signal ultrasonique pour mesurer la distance. Ensuite, nous définissons les broches des moteurs (IN1, IN2, IN3, IN4) qui permettent de contrôler leur mouvement. Enfin, la constante DISTANCE_OBSTACLE est définie pour fixer le seuil à 20 cm, c'est-à-dire la distance minimale avant que le robot ne considère qu’un obstacle est présent.
2. Initialisation des broches dans setup()
La fonction setup()
est exécutée une seule fois au démarrage de l'Arduino. Ici, nous configurons la communication série (Serial.begin(9600);
) pour afficher les valeurs mesurées par le capteur sur le moniteur série. Ensuite, nous définissons les broches du capteur ultrasonique en mode entrée (ECHO) et sortie (TRIG). De même, les broches des moteurs sont configurées en mode sortie pour leur permettre de recevoir des signaux de commande. Enfin, nous appelons stopMotors();
pour s'assurer que les moteurs restent arrêtés au démarrage.
3. Boucle principale loop()
et gestion des obstacles
Dans la fonction loop()
, le robot mesure en continu la distance devant lui grâce à getDistance();
. Cette valeur est affichée sur le moniteur série avec Serial.print()
. Ensuite, une condition if
vérifie si la distance mesurée est supérieure ou inférieure à la limite définie (20 cm) :
- Si aucun obstacle n'est détecté (distance > 20 cm), le robot avance normalement (
moveForward();
). -
Si un obstacle est détecté (distance ≤ 20 cm), le robot s’arrête (
stopMotors();
), attend 500ms (delay(500);
), tourne à droite (turnRight();
), puis continue d’avancer (moveForward();
). Cela permet au robot d’éviter l’obstacle de manière autonome.
4. Fonction getDistance()
pour mesurer la distance avec HC-SR04
Cette fonction permet d’obtenir la distance entre le robot et un obstacle grâce au capteur HC-SR04. Elle envoie une brève impulsion via TRIG_PIN
, puis mesure le temps mis par l’écho du signal à revenir grâce à pulseIn(ECHO_PIN, HIGH);
. La distance est ensuite calculée en centimètres avec la formule duration * 0.034 / 2
, où 0.034 cm/µs est la vitesse du son. Cette distance est ensuite retournée à la boucle principale pour être utilisée dans la logique d’évitement d’obstacles.
5.Fonction moveForward()
et turnRight()
Ces fonctions permettent de faire avancer le robot ou de le faire tourner à droite.
-
moveForward();
active les moteurs pour faire avancer les roues dans le même sens (IN1 et IN3 = HIGH, IN2 et IN4 = LOW). -
turnRight();
fait tourner le robot à droite en activant uniquement une roue avant et l'autre en arrière (IN1 = HIGH, IN2 = LOW, IN3 = LOW, IN4 = HIGH), ce qui permet de modifier la direction du robot.
6.Fonction stopMotors()
pour arrêter les moteurs
Lorsque cette fonction est appelée, toutes les broches IN1, IN2, IN3 et IN4 sont mises à LOW, ce qui arrête immédiatement les moteurs. Elle est utilisée chaque fois que le robot détecte un obstacle avant d’exécuter une action comme tourner à droite. Cette fonction est essentielle pour éviter des mouvements non désirés ou pour stopper le robot en cas de problème.
3️⃣ Schéma des Connexions :
1️⃣ Connexion du Capteur HC-SR04 à l'Arduino Uno
Broche HC-SR04 | Broche Arduino Uno |
---|---|
VCC | 5V |
GND | GND |
TRIG | 6 |
ECHO | 7 |
2️⃣ Connexion du Module L298N à l'Arduino Uno
Broche L298N | Broche Arduino Uno |
---|---|
IN1 | 9 |
IN2 | 10 |
IN3 | 11 |
IN4 | 12 |
3️⃣ Connexion de l'Alimentation
Composant | Connexion |
---|---|
L298N VCC | Batterie 9V + |
L298N GND | GND Arduino & Batterie (-) |
Arduino VIN | L298N Sortie 5V |
Conclusion : Un Robot Évite-Obstacle Intelligent et Autonome 🤖🚀
Dans cet article, nous avons exploré la conception et la programmation d’un robot évite-obstacle utilisant un Arduino Uno, un capteur ultrasonique HC-SR04, et un driver moteur L298N. Grâce à ce projet, nous avons appris à :
✅ Mesurer la distance des obstacles avec le capteur HC-SR04.
✅ Piloter les moteurs avec le module L298N et l’Arduino.
✅ Programmer une logique d’évitement en arrêtant le robot et en lui faisant changer de direction.
✅ Créer un câblage fonctionnel pour assurer une alimentation stable et efficace.
Pourquoi ce projet est intéressant ?
Ce robot est une excellente introduction à la robotique et à la programmation embarquée. Il peut être utilisé pour développer des compétences en électronique, en programmation et en automatisation.