Sie sind auf Seite 1von 52

Mini tanque robótico Keyestudio

Introducción:
El mini tanque robótico Keyestudio es un sistema integrado de componentes basados en
Arduino, con foco en la educación. Este kit, tiene funciones tales como la evasión de
obstáculos por ondas de ultrasonido y control remoto mediante bluetooth. Las
funcionalidades de este modelo pueden ser extendidas mediante módulos adicionales
compatibles con Arduino. Su diseño se encuentra orientado al aprendizaje de la
programación con Arduino de una manera divertida y estimulante.
Componentes:

ID Nombre Cantidad Imagen

1 Placa tipo Arduino UNO 1

2 Shield L298P 1

3 Shield sensores V5 1
Sensor ultrasónico HC-
4 1
SR04

5 Módulo bluetooth HC-06 1

Armazón plástico para


6 1
servomotor

7 Servo motor 1

8 Placa de acrílico 1
9 Soporte metálico 4

Rueda de tracción de
10 2
tanque

Rueda de soporte de
11 2
tanque

12 Banda de oruga 2

13 Motor DC 6V 2

14 Copla de cobre 2
15 Portapilas de 2 celdas 1

16 Cable USB-Serial 1

17 Cilindro de cobre 2

18 Rodamiento pequeño 4

Prisma de cobre M3
19 8
10mm
Prisma de cobre M3
20 4
45mm

4+2
21 Tornillo 1.2 5mm
(repuesto)

4+1
22 Perno allen M4 35mm
(repuesto)

23+2
23 Perno allen M3 8mm
(repuesto)

4+2
24 Perno cruz M3 10mm
(repuesto)
4+2
25 Perno allen M3 25mm
(repuesto)

4+1
26 Perno allen M4 12 mm
(repuesto)

2+1
27 Perno allen M4 50 mm
(repuesto)

2+2
28 Tuerca M3
(repuesto)
2+1
29 Tuerca M4 con traba
(repuesto)

14+1
30 Tuerca M4
(repuesto)

31 Soporte plástico 2

32 Ordena cables 1
Cable Dupont 20cm
33 1
de 4 pines

34 Amarracables negro 4

35 Cable negro 150mm 2

36 Cable Rojo 150mm 2

37 Cable negro 200mm 2

38 Cable rojo 200mm 2


39 Llave allen M2 1

40 Destornillador tipo paleta 1

41 Destornillador tipo cruz 1

42 Llave allen M4 1

43 Llave allen M3 1
Unir un soporte metálico y un soporte de plástico utilizando un perno allen M4 de 12 milímetros, a
través del orificio central de ambos.
Fijar la unión de manera que ambos soportes queden paralelos utilizando una tuerca M4. Puede
ajustarse mejor utilizando una llave allen M4 incluida en el kit.
Unir un motor DC de 6V a una copla de cobre y ajustarla con el destornillador tipo cruz. Puede ser
necesario soltarla primero con el mismo destornillador.
Encajar el motor DC de 6V (con la copla de cobre ajustada) en uno de los orificios de la estructura
principal.
Fijar el motor DC utilizando dos pernos allen M3 de 8 milímetros. Ajustar usando la llave allen M3.
Encajar una rueda de tracción de tanque en la copla de cobre adherida al motor DC de 6V que
sobresale por la estructura principal.
Fijar la rueda de tracción de tanque utilizando un perno allen M4 de 12 milímetros y apretar
utilizando la llave allen M4.
Atravesar una rueda de soporte de tanque desde el lado grueso al delgado, con un perno allen M4
de 50 milímetros.
Incorporar un cilindro de cobre y un rodamiento pequeño a la unión formada por el perno y la rueda.
El borde más ancho del rodamiento debe ir hacia la rueda. Encajar todo en el cuerpo principal.
Agregar un segundo rodamiento pequeño, en dirección opuesta al primero, de manera que ambos
queden encajados en el soporte metálico de la estructura. Fijar el perno con una tuerca M4 con
traba. Se puede ajustar mejor utilizando la llave allen M4.

Repetir los pasos 1 al 10 para armar una segunda estructura de motor.


Unir el portapilas de 2 celdas a otro soporte metálico, mediante dos pernos tipo cruz M3 de 10
milímetros, en forma perpendicular y a uno de sus costados.
Fijar todo utilizando dos tuercas M3 y la llave allen M3 si se prefiere para que quede más ajustado.
Traspasar la estructura con 4 pernos allen M4 de 35 milímetros, formando un cuadrado al centro
del soporte metálico.
Fijar los pernos con tuercas M4 y la ayuda de la llave allen M4.
Unir la estructura del portapilas a las dos estructuras de motores (armadas en los pasos 1 al 10),
traspasando la parte libre de los pernos de la estructura superior en los soportes de plástico de las
estructuras de base.
Fijar las 3 estructuras utilizando 4 tuercas M4 y presionar con la respectiva llave allen.
Agregar un último soporte metálico para dar firmeza a la unión. Su posición es paralela al soporte
superior.
Ajustar todo mediante 4 tuercas M4 y la ayuda de la llave allen M4. En caso de notar que queda
ligeramente suelta la unión se puede ajustar más usando la llave allen y un alicate (no incluido). Esto
sucede cuando las uniones anteriores no quedaron suficientemente firmes.
Traspasar la estructura compacta desde abajo hacia arriba con 4 pernos allen M3 de 25 milímetros,
pasándolos a través de los orificios libres de los soportes plásticos.
Ajustar 4 prismas de cobre M3 de 45 milímetros en la punta de los pernos. Puede ayudar la llave
allen M3.
Colocar una banda de oruga a cada costado de la estructura principal, cubriendo ambas ruedas. En
caso de que la operación resulte dificultosa se puede simplificar soltando un poco una de las ruedas
y luego de colocar la banda volver a ajustarla.
Tomar la placa de acrílico y remover su cobertura protectora de papel por ambos lados. Luego
encajar en ella 8 prismas de cobre M3 de 10 milímetros como se muestra en la figura.
Fijar cada uno de los prismas a la placa con un perno allen M3 de 8 milímetros. Puede ajustar con la
llave allen M3.
Cuadrar la placa de acrílico sobre la estructura principal, de manera que el orificio de la placa quede
al centro de los prismas de cobre largos. Es importante que la mayor parte de la placa quede en
dirección opuesta al portapilas.
Fijar la placa de acrílico a la estructura principal utilizando 4 pernos allen M3 de 8 milímetros y la
llave allen M3.
Montar el módulo de servo motor sobre la estructura principal, del lado opuesto al portapilas, de
manera que los orificios de su base calcen con los prismas de cobre.
Fijar el módulo de servo motor a los prismas de cobre con 4 pernos allen M3 de 8 milímetros.
Montar el sensor ultrasónico HC-SR04 frente al módulo de servomotor. Con 2 amarracables negros
fijarlo a la estructura.
Montar la placa tipo Arduino UNO sobre la estructura principal, con las entradas de corriente y serial
hacia afuera de la placa de acrílico.
Fijar la placa tipo Arduino UNO a la base de acrílico utilizando 4 pernos allen M3 de 8 milímetros.
No es aconsejable apretarlos demasiado pues podría terminar dañando la placa.
Colocar el shield L298P sobre la placa tipo Arduino UNO, cuidando que casa uno de los puertos
quede en contacto. Presionar con suavidad hasta que entre completamente.
De la misma manera, montar el shield de sensores V5 sobre el shield L298P.
Colocar el módulo bluetooth HC-06 como se muestra en la figura, sobre el shield de sensores V5.
Finalmente comprobar que el modelo armado sea consistente con el que se puede ver en la figura.
Conexiones:

Luego de armado el robot, debemos hacer el circuito para que el robot se desplace.

Motores:

Deben conectarse de manera alternada (positivo-negativo-positivo-negativo) en la pieza verde del


shield L298P. El cable positivo viene representado por el color rojo y el cable negativo por el color
negro (en el diagrama verde y azul respectivamente). Se ajustan usando el destornillador tipo paleta.
Es necesario remover temporalmente el shield de sensores V5 para realizar esta conexión
cómodamente.

Baterías:

Solamente conectar el cable del portapilas a la placa tipo Arduino UNO como si el portapilas fuese
un cargador de computador. En caso de que el conector se dañara se puede conectar directamente
los cables de la siguiente manera:
Servo motor:

Se debe conectar al shield de sensores como se muestra en la figura. Los cables a conectar son los
mismos que vienen con el servo motor.

Sensor ultrasónico:

La conexión debe ser según la norma de colores descrita en la figura siguiente. Esta se realiza con el
cable Dupont de 4 pines disponible en el kit.
Código:
En el programa Arduino (disponible en www.arduino.cl sección descargas) se debe crear un nuevo
archivo y guardarlo como nombre_archivo.ino en su directorio de trabajo (cualquier carpeta del
computador). Luego se debe copiar y pegar el siguiente código en el programa:

/*
L = Left
R = Right
F = forward
B = backward
*/
#include <Servo.h>
int pinLB = 12; // define pin 12
int pinLF = 3; // define pin 3
int pinRB = 13; // define pin 13
int pinRF = 11; // define pin 11
////////////////////////////////
int inputPin = 4; // define pin for sensor echo
int outputPin =5; // define pin for sensor trig

int Fspeedd = 0; // forward speed


int Rspeedd = 0; // right speed
int Lspeedd = 0; // left speed
int directionn = 0; // forward=8 backward=2 left=4 right=6
Servo myservo; // set myservo
int delay_time = 250; // settling time after steering servo motor
moving B
int Fgo = 8; // Move F
int Rgo = 6; // move to the R
int Lgo = 4; // move to the L
int Bgo = 2; // move B
void setup()
{
Serial.begin(9600); // Define motor output pin
pinMode(pinLB,OUTPUT); // pin 12
pinMode(pinLF,OUTPUT); // pin 3 (PWM)
pinMode(pinRB,OUTPUT); // pin 13
pinMode(pinRF,OUTPUT); // pin 11 (PWM)
pinMode(inputPin, INPUT); // define input pin for sensor
pinMode(outputPin, OUTPUT); // define output pin for sensor
myservo.attach(9); // Define servo motor output pin to D9 (PWM)
}
void advance() // move forward
{
digitalWrite(pinLB,LOW); // right wheel moves forward
digitalWrite(pinRB, LOW); // left wheel moves forward
analogWrite(pinLF,255);
analogWrite(pinRF,255);
}
void stopp() // stop
{
digitalWrite(pinLB,HIGH);
digitalWrite(pinRB,HIGH);
analogWrite(pinLF,0);
analogWrite(pinRF,0);
}
void right() // turn right (single wheel)
{
digitalWrite(pinLB,HIGH); // wheel on the left moves forward
digitalWrite(pinRB,LOW); // wheel on the right moves backward
analogWrite(pinLF, 255);
analogWrite(pinRF,255);
}
void left() // turn left (single wheel)
{
digitalWrite(pinLB,LOW); // wheel on the left moves backward
digitalWrite(pinRB,HIGH); // wheel on the right moves forward
analogWrite(pinLF, 255);
analogWrite(pinRF,255);
}

void back() // move backward


{
digitalWrite(pinLB,HIGH); // motor moves to left rear
digitalWrite(pinRB,HIGH); // motor moves to right rear
analogWrite(pinLF,255);
analogWrite(pinRF,255);
}
void detection() // measure 3 angles (0.90.179)
{
int delay_time = 250; // stabilizing time for servo motor
after moving backward
ask_pin_F(); // read the distance ahead
if(Fspeedd < 10) // if distance ahead is <10cm
{
stopp(); // clear data
delay(100);
back(); // move backward for 0.2S
delay(200);
}
if(Fspeedd < 25) // if distance ahead is <25cm
{
stopp();
delay(100); // clear data
ask_pin_L(); // read distance on the left
delay(delay_time); // stabilizing time for servo motor
ask_pin_R(); // read distance on the right
delay(delay_time); // stabilizing time for servo motor

if(Lspeedd > Rspeedd) // if distance on the left is


>distance on the right
{
directionn = Lgo; // move to the L
}

if(Lspeedd <= Rspeedd) // if distance on the left is <=


distance on the right
{
directionn = Rgo; // move to the right
}
if (Lspeedd < 10 && Rspeedd < 10) // if distance on left
and right are both <10cm
{
directionn = Bgo; // move backward
}}
else // if distance ahead is >25cm
{
directionn = Fgo; // move forward
}}
void ask_pin_F() // measure the distance ahead
{
myservo.write(90);
digitalWrite(outputPin, LOW); // ultrasonic sensor transmit
low level signal 2μs
delayMicroseconds(2);
digitalWrite(outputPin, HIGH); // ultrasonic sensor transmit
high level signal10μs, at least 10μs
delayMicroseconds(10);
digitalWrite(outputPin, LOW); // keep transmitting low level
signal
float Fdistance = pulseIn(inputPin, HIGH); // read the time in
between
Fdistance= Fdistance/5.8/10; // convert time into distance
(unit: cm)
Fspeedd = Fdistance; // read the distance into
Fspeedd
}
void ask_pin_L() // measure distance on the left
{
myservo.write(5);
delay(delay_time);
digitalWrite(outputPin, LOW); // ultrasonic sensor transmit
low level signal 2μs
delayMicroseconds(2);
digitalWrite(outputPin, HIGH); // ultrasonic sensor transmit
high level signal10μs, at least 10μs
delayMicroseconds(10);
digitalWrite(outputPin, LOW); // keep transmitting low level
signal
float Ldistance = pulseIn(inputPin, HIGH); // read the time in
between
Ldistance= Ldistance/5.8/10; // convert time into distance
(unit: cm)
Lspeedd = Ldistance; // read the distance into
Lspeedd
}
void ask_pin_R() // measure distance on the right
{
myservo.write(177);
delay(delay_time);
digitalWrite(outputPin, LOW); // ultrasonic sensor transmit
low level signal 2μs
delayMicroseconds(2);
digitalWrite(outputPin, HIGH); // ultrasonic sensor transmit
high level signal10μs, at least 10μs
delayMicroseconds(10);
digitalWrite(outputPin, LOW); // keep transmitting low level
signal
float Rdistance = pulseIn(inputPin, HIGH); // read the time in
between
Rdistance= Rdistance/5.8/10; // convert time into distance
(unit: cm)
Rspeedd = Rdistance; // read the distance into
Rspeedd
}
void loop()
{
myservo.write(90); // home set the servo motor, ready for next
measurement
detection(); // measure the angle and determine which
direction to move
if(directionn == 2) // if directionn= 2
{
back();
delay(800); // go backward
left() ;
delay(200); // Move slightly to the left (to prevent
stuck in dead end)
}
if(directionn == 6) // if directionn = 6
{
back();
delay(100);
right();
delay(600); // turn right
}
if(directionn == 4) // if directionn = 4
{
back();
delay(600);
left();
delay(600); // turn left
}
if(directionn == 8) // if directionn = 8
{
advance(); // move forward
delay(100);
} }

Finalmente se debe conectar el cable USB-Serial al robot y al computador donde está escribiendo el
programa, descargarlo y cuando termine de descargarse el robot comenzará a funcionar.

Si el programa no se descarga correctamente pruebe las siguientes opciones:

- Verificar que el equipo reconozca que hay algo conectado al puerto USB
- Verificar que en el programa estén seleccionados la placa y el puerto USB correctos
- Desconectar el shield L298P de la placa tipo Arduino UNO, descargar y volver a conectar el
shield.

Si el programa se descarga correctamente pero el comportamiento del robot no es el adecuado,


verifique que las conexiones hayan sido en los puertos correctos. Pruebe intercambiando la manera
en que conectó los motores derecho e izquierdo y pruebe nuevamente.

Para obtener mayor información acerca de como programar en Arduino o de como instalarlo en su
equipo, visite http://arduino.cl/category/aprende/tutoriales/tutoriales-basico/ .