You are on page 1of 7

TankBot (ARJ)

Grupo: Alfredo Hugueth Polo, Roberto Sánchez Castro y Jesus Yepez Ricaurte.
Universidad del Norte - Ingeniería eléctrica y electrónica.
huguethm@uninorte.edu.co, rsanchezm@uninorte.edu.co,
jesusy@uninorte.edu.co

Abril 2019

Resumen — En este documento se explica de forma detallada


en base a un proyecto anterior el proceso de diseño, de un III. REQUISITOS DE DISEÑO
“tankbot” que cumpliese ciertos requisitos; presentando procesos
de montaje y problemas a tener en cuenta antes y durante su Para participar en la competencia el robot debía cumplir
ensamblaje. con algunos requisitos específicos, para que los encuentros
fuesen de la forma más justa posible.
Palabras clave — arduino; tankbot; robot.
Empezando por el cañón:
This document explains in detail the design process of a
"tankbot" which meets certain requirements based on a previous  El cañón NO podrá disparar de manera continua, la luz
project; presenting assembly processes and problems to consider puede estar activa máximo durante 1 segundo. Cada
before and during their assembly.
activación será seguida por un periodo de inactividad
Keywords - arduino; tankbot; robot. de al menos 1 segundo. •
 El cañón debe estar posicionado horizontalmente a una
I. INTRODUCCIÓN altura de 10cm del suelo y puede ser fijo o giratorio (en
el plano horizontal).
La robótica es una de las áreas más importantes dentro
del campo de acción de los Ingenieros electricista y Y respecto a los blancos:
electrónicos, esta ha experimentado un crecimiento
exponencial en las últimas décadas, todo con el propósito  Cada robot deberá tener dos blancos, uno en cada
general de mejorar la calidad de vida del ser humano. En este costado del robot.
curso, se aplican técnicas aprendidas en clase e investigadas  Cada blanco estará compuesto por una fotorresistencia
por cuenta propia, para diseñar y construir hardware y escribir mediana colocada su centro a una altura de 10cm del
un código en lenguaje de Arduino de un “Tankbot” que suelo.
cumpla con ciertas especificaciones de cañón y blancos, que  El robot debe contar con dos LEDs, cada uno asociado
se presentan más a delante en el documento; simulando un a una de las fotorresistencias, de tal manera que el LED
robot de combate. Precisamente, de una forma se encenderá cuando se reciba un impacto de láser en la
exageradamente simplificada, esto es de vital importancia en fotorresistencia correspondiente. Una vez ambos LEDs
el mundo de la robótica militar y automotriz. Para este corte, estén encendidos el robot debe desactivarse.
se realiza el diseño y construcción del robot, destinado para  El rango de sensibilidad para la activación de los
funcionar en un ambiente predeterminado con pocas variables, sensores debe ser de 0 a 60cm (aprox. 2 baldosas del
como lo es la competencia final. Esto puede ser visto como los laboratorio).
primeros pasos para optimizar los recursos y la complejidad de  Los blancos NO pueden tener ningún tipo de escudo o
los robots para que sean capaces de realizar tareas más protección y deben estar FIJOS al cuerpo principal del
complicadas de la vida real. robot.

II. OBJETIVOS
● Implementar los conocimientos adquiridos en la clase
e investigados acerca de la robótica usando arduino.
● Diseñar, construir y probar un “TankBot” de acuerdo
a especificaciones dadas.
● Participar en la competencia del curso, cuya finalidad
es tener la mayor cantidad de puntos al finalizar,
cuyo formato será de “Todos contra todos - 1 vs 1”.
IV. LISTA DE COMPONENTES VI. ANÁLISIS DE COMPONENTES Y PROBLEMAS
ENCONTRADOS
Estas son las partes individuales del robot con sus respectivas
referencias:
Módulo infrarrojo KY-005 38 kHz: Inicialmente, se pensó
1. Chasis Rover Mini MEC_0537. utilizar un módulo Bluetooth para manejar el robot, pero tras
2. Dos mini servomotores de rotación continua FS90R. una evaluación entre los miembros del equipo, se decidió que
3. Dos ruedas para los motores, y una rueda loca debido a las similitudes en cuanto a funcionalidad (Para este
(incluidas con la compra del chasis). proyecto en específico), era más conveniente usar un módulo
4. Power bank de 2600 mA/h. infrarrojo debido al costo del componente. El módulo que se
5. Módulo infrarrojo KY-005 38 kHz. adquirió venía con un control para el mismo, pero su uso fue
6. Protoboard pequeño SYB-46. descartado debido a las recomendaciones hechas por el
7. Arduino UNO. docente encargado de las clases de laboratorio. El modulo fue
8. Adaptador para cuatro baterías AA 1.5V. conectado a un pin digital de la placa de Arduino. A cada
9. Dos fotorresistencias medianas. botón del control usado para dirigir movimientos, se le asignó
10. Regla de plástico de 30cm. una señal en particular, la interpretación de la señal
11. Apuntador laser. hexadecimal enviada por cada botón usado en el control
12. Dos leds de color rojo. remoto, generaría un movimiento en los servomotores, o bien
13. Control de televisión SONY RM-YD079. que este mismo se detuviese.

Además de pegante instantáneo, cautín y estaño, para realizar Power bank: Debido a que la batería portable usada para los
soldaduras; cables tipo jumpers y bridas de plástico. robots anteriores dejó de funcionar, fue necesario reemplazarla
con una nueva, con una especificación de 2500mAh, para
alimentar a la placa de Arduino y a los servomotores al mismo
V. RECOMENDACIONES Y BOCETOS INICIALES tiempo.
Teniendo en cuenta todavía las recomendaciones dictadas por
parte de los profesores para la realización del proyecto del Fotorresistencias: Debido a las especificaciones impuestas
robot seguidor de línea, presentado en el primer corte de este para la construcción del robot, usar un módulo para recibir los
semestre, y otras guías más pertinentes a este robot, estas son disparos del láser de los adversarios no era permitido debido a
las más destacables: su tamaño, es por ello que se decidió usar fotorresistencias de
tamaño mediano. Las fotorresistencias debieron ser ajustadas
● Continuar usando el mismo chasis usado para el mediante resistencias comunes para variar su sensibilidad con
primero y segundo robot. respecto a la luz. Con luz ambiente los valores obtenidos
● Para controlar los movimientos del robot, usar el rondaban los 4500 y al ser tocadas con la luz del láser
módulo bluetooth para arduino o un módulo arrojaban valores menores a 500.
infrarrojo.
● En caso de escoger el modulo Bluetooth; tener Leds: Los leds fueron conectados a los pines digitales del
cuidado con las conexiones entre este y la placa de arduino, ya que solo se necesitaban que estuviesen encendidos
arduino, ya que una mala conexión podría generar o apagados en el tiempo, y estos estados serian definidos por
daños en los equipos. los valores que arrojarían las fotorresistencias (Al recibir luz
● En caso de escoger el modulo infrarrojo; no usar del láser y bajar su resistencia los Leds debían encender
controles de aire acondicionado o proyectores, ya que automáticamente). A su vez la condición de los Led definía si
estos no siempre envían la misma señal al presionar el robot debía detenerse o no.
el mismo botón.
Y si otros grupos también decidían hacerlo con Láser: Por recomendaciones del maestro encargado de la
módulos infrarrojos, no usar un control de la misma clase de laboratorio, la luz que el láser debía emitir para la
marca, ya que podrían interferir con él envió de competencia, sería difícilmente alcanzado por uno diseñado
señales al robot de aquel otro grupo usando para la placa de Arduino, es por ello que se declinó por
infrarrojos. comprar varios láseres que posteriormente fueron desarmados
● Usar un apuntador laser genérico y no con el fin de poder conectar en el circuito del robot. Se tuvo
específicamente un láser para arduino, ya que estos que utilizar varios láseres, ya que al desarmar y tratar de
son poco potentes. soldar a los cables de alimentación del mismo 2 de ellos
● Poner fotorresistencias de tamaño mediano como quedaron inutilizables, siendo el tercero, aquel que se pudo
blancos en el robot. integrar al robot final.
VII. PROCESO DE MONTAJE Luego se arma el circuito para los módulos de fotorresistencia
El proceso de montaje del robot se empieza a hacer a partir del y los leds; en el caso de las fotorresistencias para cumplir con
anterior robot, el seguidor de luz. Este ya contaba con algunas los requisitos de diseño, se crea un soporte a 10 cm del suelo,
de los elementos físicos requeridas para este TankBot, estas a partir de pedazos de una regla de plástico, que tuviese dos
son el chasis, los servomotores, el power bank la protoboard y columnas, donde irían ubicadas las fotorresistencias, y encima
el arduino. una plataforma orientada horizontalmente para ubicar el
puntero laser. Este se extrajo de su carcasa original con el
objetivo de ser arreglado para funcionar con los cables de
alimentación provenientes del Arduino.

Ilustración 1. Robot anterior (seguidor de luz).

Primeramente, se retiran los tres módulos de fotorresistencias Ilustración 4. Robot parcialmente terminado.
de los lados y el frente del carro, despegando cuidadosamente
el adhesivo con que se había pegado anteriormente; se retira
todo el cableado del arduino y la protoboard. Siguiendo el hilo de la sección anterior, el power bank (el de
color verde) dejó de funcionar, por lo que rápidamente se
adquiere uno nuevo, aunque con menos capacidad de carga
que el anterior, 2600 mA/h.
Por este inconveniente es necesario desarmar la parte trasera
superior del robot, se cortaron las bridas que sostenían a la
placa de Arduino, para no dañar o alterar el cableado; después,
de forma precavida se despega la silicona líquida aplicada
entre el power bank defectuoso, el chasis y la protoboard. El
nuevo power bank, es ubicado al lado de la placa de arduino,
este se pega con pegante instantáneo y el Arduino con bridas.
Para terminar, se decide no usar el adaptador de baterías AA,
porque en las pruebas, la potencia suministrada por el power
Ilustración 2. Chasis del robot sin cableado ni sensores.
bank era suficiente para alimentar el Arduino, los módulos de
fotorresistencia, los leds, el láser, el modulo infrarrojo y los
Se procede a hacer las nuevas conexiones para el modulo
servomotores a la vez, sin observarse que a ninguno de los
infrarrojo, ubicándolo con el receptor orientado hacia arriba,
componentes le faltase potencia. Mas, sin embargo, se
para facilitar él envió de señales del control de múltiples
conserva en el robot, por si en el futuro se requiere.
direcciones; a continuación, los cables tienen que ser
tensionados y amarrados para que no interfirieses con el
movimiento de las ruedas y le diese una apariencia mejor al
robot.

Ilustración 3. Robot con el receptor infrarrojo.


Ilustración 5. Vista superior robot terminado.
Detener el robot al tener 2 leds encendidos: Con el fin de
cumplir la condición de perder una contienda, se adiciono el
código la condición de que al tener los dos leds encendidos,
los servomotores debían detenerse y no recibir más
instrucciones por parte del módulo infrarrojo, de este modo se
realizaron distintas pruebas al poner en movimiento al robot y
dispararle con el láser a las fotorresistencias para comprobar el
funcionamiento hasta llegar al punto en el que lo cumplía a la
perfección.

Disparo del láser: Para el disparo del láser se utilizó la


función Millis, ya que un Delay, sería ineficiente debido a las
funciones que debe cumplir el robot, esta función permitió
enviar las señales de encendido y apagado al láser para que
emitiese luz en intervalos continuos de un segundo.
Ilustración 6. Vista lateral derecha robot terminado. Láser desactivado con Leds: Al igual que para los
servomotores, se añadió una condición al código con el fin de
que el láser dejase de emitir luz al estar ambos leds
encendidos.

Altura correcta de las fotorresistencias, láser y prueba


completa: Con el fin de cumplir las condiciones de Hardware
exigidas para la competencia, se agregaron soportes al chasis,
para así poder colocar el láser y el par de fotorresistencias a 10
cm del suelo, luego de esto se hizo una prueba completa
durante la clase teórica, se controló el movimiento del robot
mediante el control remoto, se observó si el láser disparaba en
el intervalo correcto y se le apuntó a las fotorresistencias con
un laser externo con el fin de comprobar si los leds se
encendían lo que a su vez llevaba a que los servomotores se
Ilustración 7. Vista lateral izquierda robot terminado.
detuviesen, es decir que el robot estaba listo para la
competencia.

«A continuación una demostración de cómo fueron los


encuentros el día de la competencia. En el video se muestra el
VIII. PRUEBAS encuentro entre del encuentro entre Roboloco vs Rayo
McQueen:» [https://youtu.be/amIx9cZZdww]
Manejo del robot con el control remoto: Lo primero que se
realizó fue adicionar el modulo infrarrojo a los pines de
arduino, y tras realizar el código para esto, se observó que los
Servomotores cumplían a la perfección con los comandos del
control remoto, realizando movimientos hacia adelante, atrás y
deteniéndose según fuese el caso.
Fotorresistencias fuera del circuito: Al adquirir las
fotorresistencias se midieron sus valores con el uso de un
Multímetro, para así tener una referencia de las condiciones en
luz ambiente (4.5K) y al ser apuntadas con la luz de un láser
(≤ 0.5k).

Fotorresistencias en el circuito y Led: Las fotorresistencias


y los Leds fueron integradas al circuito, con el fin de ajustar el
código y hacer, que cuando la fotorresistencia recibiese la luz
de un láser, el led correspondiente a la posición de la misma
(izquierda o derecha), se encendiese.
IX. CÓDIGO pinMode(A0,INPUT); // definimos los puertos
analogicos como entrada

#include <IRremote.h> // libreria para leer pinMode(A1,INPUT);


poder leer el receptor infrarrojo pinMode(Led_de,OUTPUT); // definimos los
#include <Servo.h> puertos digitales como salida
pinMode(Led_iz,OUTPUT);

// Codigo para robotica- robot a control Remoto pinMode(Laser,OUTPUT);

Servo motor_de;
Servo motor_iz; motor_de.attach(9); // asignamos cada
servomotor a un pin digital
int RECEPTOR = 11; // asignamos el pin 11 al
receptor infrarrojo motor_iz.attach(10);

boolean sw_1 = LOW; // definimos diferentes irrecv.enableIRIn(); // con esta funcion


swiches para controlar el laser, los leds ubicados permitimos la lectura del receptor infrarrojo
en cada lado y poder detener el robot en el }
momento de que los dos sw esten activos
void mover_atras(){
boolean sw_2 = LOW;
motor_de.write(10);// De esta forma movemos
boolean sw_T = LOW; el servomotor derecho en sentido horario
boolean sw_laser = LOW; motor_iz.write(170);// De esta forma movemos
int Laser = 7; // asignamos el pin en el que ira el servomotor izquierdo en sentido antihorario
ubicado el laser }
unsigned long tiempoPasado = 0; // definimos el void mover_izquierda(){
tiempo que inicializaremos en 0
motor_iz.write(10); // detenemos el servo
const long intervalo = 1000; // El led debe motor izquierdo
activarse cada seg y despues apagarse por un
segundo motor_de.write(90); // Seguimos moviendo el
servo derecho con el objetivo de que este de la
vuelta a la izquierda
IRrecv irrecv(RECEPTOR); // libreria }
decode_results codigo; void mover_derecha(){
#define Led_de 5 motor_de.write(170); // detenemos el servo
#define Led_iz 4 motor derecho

#define Boton_adelante 0x2F0 // codigo en motor_iz.write(90); // movemos el servo


hexadecimal de cada boton de movimiento izquierdo a velocidad para que este rote a la
derecha
#define Boton_derecha 0xCD0
}
#define Boton_izquierda 0x2D0
void mover_adelante(){
#define Boton_atras 0xAF0
motor_de.write(170); // con esta funcion
#define Boton_centro 0xA70 movemos los dos servos a una velocidad
proporcial para que se mueva hacia adelante

void setup() { motor_iz.write(10);

Serial.begin(9600); }
void detener(){
motor_de.write(90); if(Valor_iz > 500){
motor_iz.write(90); digitalWrite(4,HIGH);
} sw_2 = HIGH;
int leer_sensoriz(){ }
int lectura; if (sw_1 == HIGH && sw_2 == HIGH){
lectura = analogRead(A1); detener(); // Si las dos fotoresistencias son
impactadas por el laser, debe de detenerse el
return lectura; // leemos el sensor que se
robot
posiciona en la parte izquierda de nuestro chasis
sw_T = HIGH;
}
}
int leer_sensorde(){
if(sw_T == LOW){
int lectura;
// siempe que el sw_T sea LOW significa que
lectura = analogRead(A0);
las dos fotoresistencias no han recibido el
return lectura; // leemos el sensor que se impacto del laser, por lo tanto podemos
posiciona en la parte derecha del chasis interpretar los datos
} if (irrecv.decode(&codigo)){
void loop() { // siempre que el valor que recibe el receptor
sea igual al asignado para cada caso, el robot
unsigned long tiempoContado = millis(); //
debe de hacer lo asignado a cada boton
usamos millis para contar el tiempo que tiene el
programa funcionando Serial.println(codigo.value, HEX);
int Valor_de = analogRead(A0); if (codigo.value == Boton_adelante){
int Valor_iz = analogRead(A1); mover_adelante();
if( (tiempoContado - tiempoPasado) >= }
intervalo){ // si el tiempo contado es mayor al
if (codigo.value == Boton_derecha){
intervalo, el arduino debe de hacer el cambio en
el estado del laser mover_derecha();
tiempoPasado = tiempoContado; }
if (sw_laser == LOW){ if(codigo.value == Boton_izquierda){
sw_laser = HIGH; mover_izquierda();
}else{ }
sw_laser = LOW; if (codigo.value == Boton_atras){
} mover_atras();
} }
digitalWrite(7,sw_laser); if (codigo.value == Boton_centro){
if(Valor_de > 500){ detener();
digitalWrite(5,HIGH); // con este condicional }
nos aseguramos de que el led encienda en el
irrecv.resume();
momento de ser impactado por el laser
// se retoma la interpretación de datos
sw_1 = HIGH;
}
}
}}
X. EXPLICACIÓN DEL CÓDIGO XII. RECOMENDACIONES Y SUGERENCIAS

Para este código se utilizaron distintas funciones con el fin de Para mejorar el rendimiento del robot, se sugiere mejorar el
controlar o leer los valores de los diferentes elementos del código realizado, ya una optimización del mismo conllevaría a
robot (Servomotores, fotorresistencias, leds, modulo infrarrojo un mejor funcionamiento, acatando las señales enviadas por el
y láser). Para los servomotores se usaron 5 funciones control y realizando los movimientos de manera más precisa y
mover_atras, mover_adelante, mover_izquierda, rápida. Otras sugerencias tales como poder crear blancos
mover_derecha y detener. Todo esto con el fin de cambiar el móviles y un cañón móvil, van más allá de lo exigido para la
estado de movimiento del robot, cumpliendo cada función con competencia, pero un robot más competitivo sería aquel capaz
el cometido enviado por el control del módulo infrarrojo, este de esconder o mover sus objetivos y de poseer un arma móvil
a su vez tiene su propia función llamada irrecv.enableIRIn, para ganarle a los rivales, pero como se dijo anteriormente,
esta recibe una instrucción especifica por parte del control esto va más allá de lo exigido y tal vez del propio curso.
remoto según el botón que se esté pulsando, el valor que arroje
la función sería utilizado para llamar a una de las funciones de
movimiento de los servomotores, haciéndolos obedecer las Referencias
instrucciones de aquel que lo maneja. Por otra parte, se utilizó
la función Millis, para obtener el intervalo de tiempo de [1] Afrotechmods, “Laser Tripwire circuit / photoresistor
encendido y apagado del láser. leer_sensorde y leer_sensoriz, tutorial - YouTube,” 2010. [Online]. Available:
son las funciones utilizadas para leer los valores arrojados por https://www.youtube.com/watch?v=BNfGoy5dqbg.
las fotorresistencias colocadas en el lado derecho e izquierdo [Accedido: 20-Apr-2019].
del chasis respectivamente, mediante las funciones, la placa
[2] “Encender un diodo láser con Arduino,” 2016.
Arduino es capaz de saber si a las fotorresistencias están
[Online]. Available: https://www.luisllamas.es/diodo-
siendo tocadas por la luz de un láser y por ende mandar una
laser-arduino/. [Accedido: 22-Apr-2019].
señal a los leds, que cambiaría su estado de apagado a
encendido según el valor que se obtuvo de la fotorresistencia.
El estado de los leds a su vez funciona como un swich de
encendido y apagado. Cuando se activaba un Led, la señal de
este y de su swich era HIGH, al tener los dos swich en HIGH
(sw_1 y sw_2), se activaría un tercer swich (sw_T) el cual
estar en HIGH llama a la función detener que como su nombre
lo indica permite detener la recepción de señal del módulo
infrarrojo y del disparo del láser.

XI. LIMITACIONES
Refiriéndose al diseño final, el robot presenta ciertas
limitaciones que con mayor planeación y el uso de otros
sensores y motores pueden ser resueltas, a continuación, se
expondrán algunas de las más evidentes:
El “arma” del robot es la principal limitación del mismo, ya
que su éxito para acertar en el blanco del rival depende en
gran medida de los movimientos del robot adversario,
teniendo en cuenta que la luz emitida por el láser solo era
capaz de viajar en línea recta. Los procesos que debe realizar
el Arduino pueden ralentizar su respuesta a los comandos
enviados por el control remoto y por ende comprometer el
movimiento del robot dentro de la pista. La instalación del
láser no fue totalmente perfecta en el soporte, por ende, quedo
inclinado hacia abajo, esto genera una clara desventaja ya que
la luz no era capaz de golpear de lleno los blancos de los
rivales, condicionando así la activación de los leds del
enemigo y por ende la victoria en los enfrentamientos.

You might also like