Un robot détecteur d'obstacles est un type de robot équipé de capteurs lui permettant de détecter et d'éviter les obstacles dans son environnement. Ce type de robot utilise différents capteurs pour identifier les objets, murs, ou autres obstacles et adapte sa trajectoire pour éviter des collisions. Il est utilisé dans diverses applications, comme la navigation autonome, les véhicules intelligents, ou encore les aspirateurs robotisés.
Voici les principaux éléments et capteurs qu’un robot détecteur d’obstacles peut utiliser :
Capteurs infrarouges (IR) : Ils émettent un faisceau infrarouge et détectent les obstacles en mesurant la réflexion du signal. Si le faisceau est renvoyé vers le capteur, un obstacle est détecté.
Capteurs ultrasonores : Ils fonctionnent comme des radars, en envoyant des ondes ultrasonores qui rebondissent sur les objets. Le robot mesure le temps pris par l’onde pour revenir, ce qui permet de calculer la distance.
LIDAR (Light Detection and Ranging) : Ce capteur envoie des impulsions lumineuses pour détecter la distance et la forme des objets autour du robot, offrant une cartographie détaillée de l’environnement.
Caméras et vision par ordinateur : En utilisant des caméras et des algorithmes de traitement d'image, certains robots peuvent détecter et analyser visuellement les obstacles pour les éviter.
Capteurs tactiles ou de pression : Ces capteurs détectent les obstacles seulement au moment de l'impact. Cela permet une réaction immédiate, mais sans prévenir à l'avance.
Applications : Un robot détecteur d'obstacles est utilisé dans les secteurs industriels, pour des tâches de surveillance ou d'exploration, ainsi que dans la robotique de service (robots aspirateurs, tondeuses automatiques, etc.). Ces robots sont également essentiels pour les véhicules autonomes qui doivent naviguer en toute sécurité dans des environnements complexes.
Un robot détecteur d'obstacles commandé par ESP32 avec un capteur ultrasonique HC-SR04 et un servomoteur est conçu pour détecter des obstacles et ajuster sa trajectoire pour les éviter. L'ajout d'un servomoteur au capteur ultrasonique permet de déplacer le capteur sur un angle donné (gauche, centre, droite) pour scanner l'environnement. Cela permet au robot d’analyser plusieurs directions et de prendre des décisions plus précises pour contourner les obstacles.
Le robot utilise une série d’étapes pour détecter, analyser et réagir aux obstacles en combinant la rotation du capteur ultrasonique et le contrôle des moteurs. Voici comment cela se déroule :
1- Initialisation :
Le servomoteur est fixé au capteur HC-SR04 et positionné au centre du robot pour qu’il puisse balayer de gauche à droite.
La carte ESP32 initialise les broches de commande des moteurs, du capteur HC-SR04, et du servomoteur.
2- Détection des Obstacles :
Le servomoteur fait pivoter le capteur ultrasonique à différents angles (par exemple -45°, 0°, +45°) pour scanner les distances à gauche, au centre et à droite.
À chaque position (gauche, centre, droite), le capteur ultrasonique mesure la distance jusqu’aux obstacles.
3- Prise de Décision :
Si la distance mesurée au centre est inférieure au seuil défini (par exemple, 15 cm), cela signifie qu'un obstacle est devant le robot.
Le robot compare ensuite les distances à gauche et à droite pour déterminer dans quelle direction tourner.
Il tourne vers la direction où la distance est la plus grande, indiquant une zone sans obstacle.
4- Évitement de l'Obstacle :
Le robot change de direction en fonction des informations de distance recueillies.
Une fois l’obstacle contourné, le servomoteur ramène le capteur en position centrale et le robot continue d'avancer.
5- Boucle Continue :
Le processus de détection, décision et mouvement se répète en continu, permettant au robot de naviguer de manière autonome dans son environnement.
Carte ESP32:
La carte ESP32 est la carte de contrôle principale du robot. Elle est programmée pour lire les données des capteurs et contrôler les moteurs en fonction des informations reçues.
Capteurs HC-SR04:
Ces capteurs à ultrasons sont utilisés pour détecter la distance entre le robot et l'objet à suivre. Chaque capteur est composé d'un émetteur et d'un récepteur ultrasonique. L'émetteur envoie un signal ultrasonique qui rebondit sur l'objet et revient au récepteur. En mesurant le temps que prend le signal pour revenir, le capteur peut calculer la distance entre le robot et l'objet.
Servomoteur :
Positionné pour faire pivoter le capteur HC-SR04, permettant au robot de scanner dans différentes directions.
Module L298N:
Le module L298N est un pont en H permettant de contrôler des moteurs à courant continu (DC) ou des moteurs pas à pas. Associé à un ESP32, il peut être utilisé pour piloter les deux moteurs du robot voiture.
Kit robot voitures de 2 roues
Le robot aura besoin de moteurs pour se déplacer et de roues pour assurer la mobilité. Les moteurs peuvent être de types différents en fonction de la conception du robot, mais ils doivent être compatibles avec le module L298N.
Le châssis est la structure du robot sur laquelle sont montés les autres composants. Il peut être fabriqué à partir de divers matériaux tels que le plastique, le bois ou le métal, et sa conception dépendra de la taille et de la forme souhaitées pour le robot.
Alimentation électrique :
Le robot aura besoin d'une source d'alimentation électrique pour fonctionner. Cela peut être une batterie rechargeable ou des piles, en fonction de la portabilité et de la durée d'utilisation souhaitées.
Câblage et connecteurs :
Des fils électriques et des connecteurs seront nécessaires pour relier les différents composants entre eux et à la carte Arduino UNO.
Plaque d'essai (Breadboard) :
On utilise la plaque d'essai pour faciliter le câblage des différents composants.
VCC → Borne (+) de la battreie 9V ou 3V3 de la carte ESP32
GND → GND.
Trig → GPIO12 (ou autre GPIO).
Echo → GPIO14 (ou autre GPIO).
VCC → Borne (+) de la battreie 9V
GND → GND.
Signal (PWM) → GPIO13 (ou autre GPIO pour contrôler la position).
VCC → Alimentation moteur (battreie 9V).
GND → GND.
ENA → GPIO33 (pour PWM de la vitesse).
IN1, IN2 → GPIO25, GPIO26 (contrôle de la direction du moteur 1).
IN3, IN4 → GPIO27, GPIO32 (contrôle de la direction du moteur 2).
OUT1, OUT2 → Moteur 1.
OUT3, OUT4 → Moteur 2.
Voici un code simplifié pour illustrer le fonctionnement de ce robot détecteur d’obstacles avec un capteur HC-SR04 et un servomoteur.
Ce code utilise la bibliothèque hc-sr04 pour lire les données reçues par le capteur ultrason HC-SR04 et la bibliothèque DCMotor.py pour commander le module L298N.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
from hcsr04 import HCSR04 from DCMotor import DCMotor import machine from machine import Pin, PWM import time from time import sleep frequency = 15000 # Connecter la carte ESP32 au module L298N pin1 = Pin(22, Pin.OUT) pin2 = Pin(21, Pin.OUT) pin3 = Pin(19, Pin.OUT) pin4 = Pin(18, Pin.OUT) enable = PWM(Pin(23), frequency) enable1 = PWM(Pin(5), frequency) dc_motor = DCMotor(pin1, pin2, enable) dc_motor = DCMotor(pin1, pin2, enable, 350, 1023) dc_motor1 = DCMotor(pin3, pin4, enable1) dc_motor1 = DCMotor(pin3, pin4, enable1, 350, 1023) # Connecter le servomoteur à la carte ESP3 p15 = machine.Pin(15) servo = machine.PWM(p15,freq=50) servo.duty(70) # Connecter le capteur HC-SR04 à la carte ESP32 sensor = HCSR04(trigger_pin=17,echo_pin=16,echo_timeout_us=1000000) while True: distance = sensor.distance_cm() print(distance,' cm') if (distance<20): # si le capteur HC-SR04 detecte un obstacle dc_motor.stop() # la voiture s arrete dc_motor1.stop() time.sleep_ms(1000) dc_motor.backwards(100) # la voiture recule dc_motor1.backwards(100) time.sleep_ms(1000) dc_motor.stop() # la voiture s arrete dc_motor1.stop() time.sleep_ms(1000) for x in range(70,20,-1):# tourner le capteur HC-SR04 a droite servo.duty(x) time.sleep_ms(50) distance_droite = sensor.distance_cm() time.sleep_ms(100) for x in range(20,110): # tourner le capteur HC-SR04 à gauche servo.duty(x) time.sleep_ms(50) distance_gauche = sensor.distance_cm() time.sleep_ms(1000) for x in range(110,70,-1): servo.duty(x) time.sleep_ms(100) if (distance_gauche < distance_droite) : # comparer les deux distances pour choisir la bonne direction dc_motor1.forward(100) # la voiture tourne à droite time.sleep_ms(1000) dc_motor1.stop() time.sleep_ms(500) else: dc_motor.forward(100) # la voiture tourne à gauche time.sleep_ms(1000) dc_motor.stop() time.sleep_ms(500) else: dc_motor.forward(100) # la voiture avance dc_motor1.forward(100) time.sleep_ms(100) |
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info