Professional Documents
Culture Documents
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
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.
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.
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);
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.