- Comment construire un robot en évitant les obstacles à l'aide d'un capteur à ultrasons
- Composants requis
- Schéma
- Robot évitant les obstacles à l'aide d'Arduino - Code
Obstacle Evoiding Robot est un appareil intelligent qui peut détecter automatiquement l'obstacle devant lui et les éviter en se tournant dans une autre direction. Cette conception permet au robot de naviguer dans un environnement inconnu en évitant les collisions, ce qui est une exigence principale pour tout robot mobile autonome. L'application du robot Obstacle Evoiding n'est pas limitée et il est utilisé dans la plupart des organisations militaires maintenant, ce qui permet d'effectuer de nombreux travaux risqués qui ne peuvent être effectués par aucun soldat.
Nous avons précédemment construit Obstacle Evoiding Robot en utilisant Raspberry Pi et en utilisant PIC Microcontroller. Cette fois, nous allons construire un robot évitant les obstacles en utilisant un capteur à ultrasons et Arduino. Ici, un capteur à ultrasons est utilisé pour détecter les obstacles sur le chemin en calculant la distance entre le robot et l'obstacle. Si le robot trouve un obstacle, il change de direction et continue de se déplacer.
Comment construire un robot en évitant les obstacles à l'aide d'un capteur à ultrasons
Avant d'aller construire le robot, il est important de comprendre comment fonctionne le capteur à ultrasons car ce capteur aura un rôle important dans la détection d'obstacle. Le principe de base du fonctionnement du capteur à ultrasons est de noter le temps nécessaire au capteur pour transmettre les faisceaux ultrasonores et recevoir les faisceaux ultrasoniques après avoir frappé la surface. Ensuite, la distance est calculée à l'aide de la formule. Dans ce projet, le capteur à ultrasons HC-SR04 largement disponible est utilisé. Pour utiliser ce capteur, une approche similaire sera suivie expliquée ci-dessus.
Ainsi, la broche Trig de HC-SR04 est rendue haute pendant au moins 10 us. Un faisceau sonore est transmis avec 8 impulsions de 40 KHz chacune.
Le signal atteint ensuite la surface et revient et est capturé par la broche Echo du récepteur du HC-SR04. La broche Echo avait déjà fait haut au moment de l'envoi haut.
Le temps mis par la poutre pour revenir en arrière est enregistré dans une variable et converti en distance à l'aide de calculs appropriés comme ci-dessous
Distance = (Temps x Vitesse du son dans l'air (343 m / s)) / 2
Nous avons utilisé un capteur à ultrasons dans de nombreux projets, pour en savoir plus sur le capteur à ultrasons, vérifier d'autres projets liés au capteur à ultrasons.
Les composants pour cet obstacle évitant le robot peuvent être trouvés facilement. Afin de fabriquer des châssis, n'importe quel châssis de jouet peut être utilisé ou peut être fabriqué sur mesure.
Composants requis
- Arduino NANO ou Uno (toute version)
- Capteur à ultrasons HC-SR04
- Module de commande de moteur LM298N
- Moteurs 5V DC
- Batterie
- roues
- Châssis
- Fils de cavalier
Schéma
Le schéma de circuit complet de ce projet est donné ci-dessous, comme vous pouvez le voir, il utilise un Arduino nano. Mais nous pouvons également construire un robot évitant les obstacles en utilisant Arduino UNO avec le même circuit (suivre le même brochage) et le même code.
Une fois le circuit prêt, nous devons construire notre voiture en évitant les obstacles en assemblant le circuit sur un châssis robotique comme indiqué ci-dessous.
Robot évitant les obstacles à l'aide d'Arduino - Code
Le programme complet avec une vidéo de démonstration est donné à la fin de ce projet. Le programme comprendra la configuration du module HC-SR04 et la sortie des signaux vers les broches du moteur pour déplacer la direction du moteur en conséquence. Aucune bibliothèque ne sera utilisée dans ce projet.
Définissez d' abord la broche de déclenchement et d'écho de HC-SR04 dans le programme. Dans ce projet, la broche de déclenchement est connectée à GPIO9 et la broche d'écho est connectée à GPIO10 d'Arduino NANO.
int trigPin = 9; // broche de déclenchement de HC-SR04 int echoPin = 10; // Broche d'écho de HC-SR04
Définissez les broches pour l'entrée du module de commande de moteur LM298N. Le LM298N dispose de 4 broches d'entrée de données utilisées pour contrôler la direction du moteur qui y est connecté.
int revleft4 = 4; // Mouvement inverse du moteur gauche int fwdleft5 = 5; // Mouvement ForWarD du moteur gauche int revright6 = 6; // Mouvement inverse du moteur droit int fwdright7 = 7; // Mouvement ForWarD du moteur droit
Dans la fonction setup () , définissez la direction des données des broches GPIO utilisées. Les quatre broches du moteur et la broche de déclenchement sont définies comme OUTPUT et la broche d'écho est définie comme entrée.
pinMode (revleft4, OUTPUT); // définir les broches du moteur comme sortie pinMode (fwdleft5, OUTPUT); pinMode (revright6, OUTPUT); pinMode (fwdright7, OUTPUT); pinMode (trigPin, OUTPUT); // définit la broche de déclenchement comme pinMode de sortie (echoPin, INPUT); // définit la broche d'écho comme entrée pour capturer les ondes réfléchies
Dans la fonction loop () , obtenez la distance de HC-SR04 et en fonction de la distance, déplacez la direction du moteur. La distance montrera la distance de l'objet devant le robot. La distance est prise en faisant éclater un faisceau d'ultrasons jusqu'à 10 us et en le recevant après 10 us. Pour en savoir plus sur la mesure de la distance à l'aide du capteur à ultrasons et d'Arduino, suivez le lien.
digitalWrite (trigPin, LOW); delayMicrosecondes (2); digitalWrite (trigPin, HIGH); // envoie des ondes pendant 10 us delayMicroseconds (10); durée = pulseIn (echoPin, HIGH); // réception des ondes réfléchies distance = durée / 58,2; // conversion en retard de distance (10);
Si la distance est supérieure à la distance définie, cela signifie qu'il n'y a pas d'obstacle sur sa trajectoire et qu'il se déplacera vers l'avant.
if (distance> 19) { digitalWrite (fwdright7, HIGH); // avancer digitalWrite (revright6, LOW); digitalWrite (fwdleft5, HIGH); digitalWrite (revleft4, LOW); }
Si la distance est inférieure à la distance définie pour éviter un obstacle, cela signifie qu'il y a un obstacle devant. Donc, dans cette situation, le robot s'arrêtera pendant un moment et reculera après cela, s'arrêtera à nouveau pendant un moment, puis prendra son tour dans une autre direction.
if (distance <18) { digitalWrite (fwdright7, LOW); // Arrêtez digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); retard (500); digitalWrite (fwdright7, LOW); // movebackword digitalWrite (revright6, HIGH); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, HIGH); retard (500); digitalWrite (fwdright7, LOW); // Arrêtez digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); retard (100); digitalWrite (fwdright7, HIGH); digitalWrite (revright6, LOW); digitalWrite (revleft4, LOW); digitalWrite (fwdleft5, LOW); retard (500); }
C'est ainsi qu'un robot peut éviter les obstacles sur son chemin sans se coincer nulle part. Trouvez le code complet et la vidéo ci-dessous.