Taula de continguts:

Cotxe robòtic per evitar obstacles: 9 passos
Cotxe robòtic per evitar obstacles: 9 passos

Vídeo: Cotxe robòtic per evitar obstacles: 9 passos

Vídeo: Cotxe robòtic per evitar obstacles: 9 passos
Vídeo: Лайфхаки для ремонта квартиры. Полезные советы.#2 2024, De novembre
Anonim
Cotxe robòtic per evitar obstacles
Cotxe robòtic per evitar obstacles
Cotxe robòtic per evitar obstacles
Cotxe robòtic per evitar obstacles

Com construir un robot per evitar obstacles

Pas 1: caixa negra

Caixa Negra
Caixa Negra

el primer pas he utilitzat una caixa negra com a base per al meu robot.

Pas 2: Arduino

Arduino
Arduino

L'Arduino és el cervell de tot el sistema i orquestra els nostres motors

Pas 3: connectar l'Arduino a Blackbox

S’adjunta l’Arduino a Blackbox
S’adjunta l’Arduino a Blackbox

Vaig connectar l’arduino a la caixa negra mitjançant una cola calenta

Pas 4: sensor d'ultrasons

Sensor d'ultrasons
Sensor d'ultrasons

Per fer un robot que es pugui moure per si mateix, necessitem una mena d’entrada, un sensor que s’adapti al nostre objectiu. Un sensor d'ultrasons és un instrument que mesura la distància a un objecte mitjançant ones sonores d'ultrasons. Un sensor d'ultrasons utilitza un transductor per enviar i rebre polsos d'ultrasons que retransmeten informació sobre la proximitat d'un objecte

Pas 5: Connexió del tauler de pa del sensor a Arduino

Connexió del tauler de pa del sensor a Arduino
Connexió del tauler de pa del sensor a Arduino
Connexió del tauler de pa del sensor a Arduino
Connexió del tauler de pa del sensor a Arduino

He utilitzat cables per connectar de manera masculina la connexió entre la placa d’arxiu i l’arduino.

Tingueu en compte que el sensor de ping pot tenir un disseny de pin diferent, però hauria de tenir un pin de tensió, un pin de terra, un pin trigonal i un pin eco.

Pas 6: blindatge del motor

Escut del motor
Escut del motor

Les plaques Arduino no poden controlar els motors de corrent continu, ja que els corrents que generen són massa baixos. Per resoldre aquest problema, utilitzem blindatges de motors. El blindatge del motor té 2 canals, que permeten el control de dos motors de corrent continu, o bé 1 motor pas a pas. … En dirigir-vos a aquests pins, podeu seleccionar un canal del motor per iniciar, especificar la direcció del motor (polaritat), configurar la velocitat del motor (PWM), aturar i engegar el motor i controlar l'absorció actual de cada canal.

Pas 7: Connexió del motor Shield a Arduino

Connexió del blindatge del motor a Arduino
Connexió del blindatge del motor a Arduino

Simplement poseu el blindatge del motor a l’arduino amb els cables del sensor encastats

Pas 8: Connexió dels 4 motors i bateries a Shield

Connexió dels 4 motors i bateries a Shield
Connexió dels 4 motors i bateries a Shield

Tots els blindatges del motor tenen (com a mínim) dos canals, un per als motors i un per a una font d'alimentació. Connecteu-los els uns amb els altres

Pas 9: programa el robot

executeu aquest codi

#include #include

Newar sonar NewPing (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 miservo;

#define TRIG_PIN A2 #define ECHO_PIN A3 #define MAX_DISTANCE 150 #define MAX_SPEED 100 #define MAX_SPEED_OFFSET 10

booleà va endavant = fals; int distància = 80; int speedSet = 0;

configuració nul·la () {

myservo.attach (10); myservo.write (115); endarreriment (2000); distància = readPing (); retard (100); distància = readPing (); retard (100); distància = readPing (); retard (100); distància = readPing (); retard (100); }

bucle buit () {int distànciaR = 0; int distànciaL = 0; retard (40); if (distància <= 15) {moveStop (); retard (50); moveBackward (); retard (150); moveStop (); retard (100); distànciaR = lookRight (); retard (100); distànciaL = lookLeft (); retard (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } distància = readPing (); }

int lookRight () {myservo.write (50); retard (250); int distance = readPing (); retard (50); myservo.write (100); distància de retorn; }

int lookLeft () {myservo.write (120); retard (300); int distance = readPing (); retard (100); myservo.write (115); distància de retorn; retard (100); }

int readPing () {delay (70); int cm = sonar.ping_cm (); if (cm == 0) {cm = 200; } retorn cm; }

void moveStop () {motor1.run (RELEASE); motor2.run (LLANÇAMENT); motor3.run (LLANÇAMENT); motor4.run (LLANÇAMENT); } void moveForward () {

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

void moveBackward () {goesForward = false; motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (BACKWARD); motor4.run (BACKWARD); per a (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 (FORWARD); motor4.run (AVANT); retard (500); motor1.run (AVANT); motor2.run (AVANT); motor3.run (FORWARD); motor4.run (AVANT); }

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

Recomanat: