Table des matières:

Obstacle évitant la voiture robotique : 9 étapes
Obstacle évitant la voiture robotique : 9 étapes

Vidéo: Obstacle évitant la voiture robotique : 9 étapes

Vidéo: Obstacle évitant la voiture robotique : 9 étapes
Vidéo: Obstacle Avoiding Robot Car Using An Arduino 2024, Novembre
Anonim
Obstacle évitant la voiture robotique
Obstacle évitant la voiture robotique
Obstacle évitant la voiture robotique
Obstacle évitant la voiture robotique

Comment construire un robot évitant les obstacles

Étape 1: Boîte noire

Boîte noire
Boîte noire

la première étape, j'ai utilisé une boîte noire comme base pour mon robot.

Étape 2: Arduino

Arduino
Arduino

L'Arduino est le cerveau de tout le système et orchestre nos moteurs

Étape 3: Fixation de l'Arduino à la Blackbox

Attacher l'Arduino à la Blackbox
Attacher l'Arduino à la Blackbox

J'ai attaché l'arduino à la boîte noire à l'aide de colle chaude

Étape 4: Capteur à ultrasons

Capteur à ultrasons
Capteur à ultrasons

Afin de créer un robot capable de se déplacer tout seul, nous avons besoin d'une sorte d'entrée, d'un capteur qui correspond à notre objectif. Un capteur à ultrasons est un instrument qui mesure la distance à un objet à l'aide d'ondes sonores ultrasonores. Un capteur à ultrasons utilise un transducteur pour envoyer et recevoir des impulsions ultrasonores qui relaient des informations sur la proximité d'un objet

Étape 5: Connexion de la planche à pain du capteur à Arduino

Breadboard Connexion du capteur à Arduino
Breadboard Connexion du capteur à Arduino
Breadboard Connexion du capteur à Arduino
Breadboard Connexion du capteur à Arduino

J'ai utilisé des fils pour faire la connexion entre la maquette et l'arduino.

Faites attention au fait que votre capteur de ping peut avoir une disposition de broches différente, mais il devrait avoir une broche de tension, une broche de masse, une broche de déclenchement et une broche d'écho.

Étape 6: Blindage du moteur

Bouclier de moteur
Bouclier de moteur

Les cartes Arduino ne peuvent pas contrôler les moteurs à courant continu par elles-mêmes, car les courants qu'elles génèrent sont trop faibles. Pour résoudre ce problème, nous utilisons des blindages de moteur. moteur pas à pas. … En adressant ces broches, vous pouvez sélectionner un canal moteur à initier, spécifier la direction du moteur (polarité), régler la vitesse du moteur (PWM), arrêter et démarrer le moteur et surveiller l'absorption de courant de chaque canal

Étape 7: connexion du blindage du moteur à Arduino

Connexion du blindage du moteur à Arduino
Connexion du blindage du moteur à Arduino

Fixez simplement le blindage du moteur à l'arduino avec les fils du capteur écrasés

Étape 8: connexion des 4 moteurs et des batteries au blindage

Connexion des 4 moteurs et des batteries au blindage
Connexion des 4 moteurs et des batteries au blindage

Chaque Motor Shield a (au moins) deux canaux, un pour les moteurs et un pour une source d'alimentation, connectez-les les uns par rapport aux autres

Étape 9: programmer le robot

exécuter ce code

#include #include

Nouveau sonar Ping (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motor1(1, MOTOR12_1KHZ); AF_DCMotor motor2(2, MOTOR12_1KHZ); AF_DCMotor motor3(3, MOTOR34_1KHZ); AF_DCMotor motor4(4, MOTOR34_1KHZ); Servo myservo;

#définir TRIG_PIN A2 #définir ECHO_PIN A3 #définir MAX_DISTANCE 150 #définir MAX_SPEED 100 #définir MAX_SPEED_OFFSET 10

booléen goForward=false; distance entière = 80; int speedSet = 0;

void setup() {

monservo.attach(10); monservo.write(115); retard (2000); distance = readPing(); retard (100); distance = readPing(); retard (100); distance = readPing(); retard (100); distance = readPing(); retard (100); }

boucle vide() { int distanceR = 0; int distanceL = 0; retard (40); if(distance<=15) { moveStop(); retard (50); recule(); retard (150); moveStop(); retard (100); distanceR = regarderDroit(); retard (100); distanceL = regarderGauche(); retard (100);

if(distanceR>=distanceL) { tournerDroit(); moveStop(); } else { tournerGauche(); moveStop(); } } else { moveForward(); } distance = readPing(); }

int lookRight() { monservo.write(50); retard (250); int distance = readPing(); retard (50); monservo.write(100); distance de retour; }

int lookLeft() { monservo.write(120); retard (300); int distance = readPing(); retard (100); monservo.write(115); distance de retour; retard (100); }

int readPing() { délai(70); int cm = sonar.ping_cm(); si(cm==0) {cm = 200; } renvoie cm; }

void moveStop() { motor1.run(RELEASE); moteur2.run(RELÂCHER); motor3.run(LIBÉRER); motor4.run(LIBÉRER); } void moveForward() {

if(!goesForward) { GoesForward=true; motor1.run(AVANT); motor2.run(AVANT); motor3.run(AVANT); motor4.run(AVANT); for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) { motor1.setSpeed(speedSet); motor2.setSpeed(speedSet); motor3.setSpeed(speedSet); motor4.setSpeed(speedSet); retard(5); } } }

void moveBackward() { goForward=false; motor1.run(BACKWARD); motor2.run(BACKWARD); motor3.run(BACKWARD); motor4.run(BACKWARD); for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) { motor1.setSpeed(speedSet); motor2.setSpeed(speedSet); motor3.setSpeed(speedSet); motor4.setSpeed(speedSet); retard(5); } void turnLeft() { motor1.run(BACKWARD); motor2.run(BACKWARD); motor3.run(AVANT); motor4.run(AVANT); retard (500); motor1.run(AVANT); motor2.run(AVANT); motor3.run(AVANT); motor4.run(AVANT); }

void turnLeft() { motor1.run(BACKWARD); motor2.run(BACKWARD); motor3.run(AVANT); motor4.run(AVANT); retard (500); motor1.run(AVANT); motor2.run(AVANT); motor3.run(AVANT); motor4.run(AVANT); }

Conseillé: