You are on page 1of 10

UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES

“UNIANDES”

Tema:

Búsqueda con Agentes – Robot resuelve Laberintos

Autores: Juan Intriago, Roberto Fernández, Alexis Chicaiza, Daniel Olmedo

Docente: Ing. Ana Lucia Sandoval

Nivel: 6to Sistemas

Fecha: 29-05-2019

Periodo

abril - agosto 2019


Tema:

Búsqueda con agentes -robot resuelve laberintos

Objetivo general:

La implementación de los algoritmos de búsqueda para la resolución del laberinto aplicado en un


robot de prueba.

Desarrollo.

Metodología Top Down

La Metodología Top-Down también se usa muchísimo en otras disciplinas como el desarrollo o


la gestión de proyectos. En resumen, para aplicarlo a redes sería primero analizar los
requerimientos puntuales para que en base a estos seleccionar los protocolos y la topología de
red a utilizar, luego seleccionar los equipos para iniciar las fases de documentación e
implementación de la propuesta para llegar a la ejecución, monitoreo y optimización de la red
propuesta en un ciclo que no tiene final.

Objetivo General:

Desarrollar un informe en el cual se demuestre el proceso de elaboración de un robot laberintos


en base a agentes de búsqueda.

Fase 1. Análisis y Requisitos:

Análisis del Problema:

Existen problemas en cuanto a la implementación de agentes de búsqueda orientado a la


resolución de laberintos, puesto que al tratarse de un tema nuevo para los estudiantes que
integran el grupo, se ve en la necesidad de investigar e implementar la funcionalidad de
los agentes de búsqueda.

Aquí se detalla los componentes a utilizar.

Componentes Electrónicos

Nombre Componente electrónico

-Protoboard.

-Ultrasónico HC – SR04.
-2 Micromotores.

-Batería Lipo.

-Arduino UNO.

-Cables Macho Hembra.


-Cables Macho Macho.

Par de Llantas pololu

-Servomotores 90 grados.

-Módulo l298n para control de motores.

Protoboard: Se trata de una placa de conectividad la cual se compone de perforaciones


conductoras de corriente, en este caso se lo usa de una manera simple y directa

Sensor Ultrasónico: El sensor hc-sr04 en particular tiene una sensibilidad muy buena del
orden de los 3mm, teniendo en cuenta que la mayoría de las aplicaciones donde este
sensor es utilizado es para medir o detectar obstáculos o distancias mayores a varios
centímetros, podemos decir que su sensibilidad es muy buena.

Micromotores/Motor-reductores: Estos diminutos motorreductores de CC con


cepillado están disponibles en una amplia gama de relaciones de engranajes, desde 5: 1
hasta 1000: 1, y con cinco motores diferentes: motores de alta potencia de 6 V y 12 V con
escobillas de carbón de larga duración (HPCB). y motores de 6 V de alta potencia (HP),
potencia media (MP) y baja potencia (LP) con cepillos de metales preciosos de vida más
corta. Los motores HPCB de 6 V y 12 V ofrecen el mismo rendimiento en sus respectivos
voltajes nominales, solo que el motor de 12 V consume la mitad de la corriente del motor
de 6 V. Los motores HPCB de 6 V y HP 6 V son idénticos, excepto por sus cepillos, que
solo afectan la vida útil del motor
Batería Lipo: Las baterías LiPo (abreviatura de Litio y polímero) son baterías
recargables usadas en aplicaciones que requieren corrientes superiores a 1A con bajo peso
y tamaño reducido, por ejemplo sistemas de radiocontrol, como aviones, helicópteros,
drones, cámaras, celulares, linternas, entre otros.
Arduino UNO: Arduino Uno es una placa electrónica basada en el microcontrolador
ATmega328. Cuenta con 14 entradas/salidas digitales, de las cuales 6 se pueden utilizar como
salidas PWM (Modulación por ancho de pulsos) y otras 6 son entradas analógicas. Además,
incluye un resonador cerámico de 16 MHz, un conector USB, un conector de alimentación, una
cabecera ICSP y un botón de reseteado. La placa incluye todo lo necesario para que el
microcontrolador haga su trabajo, basta conectarla a un ordenador con un cable USB o a la
corriente eléctrica a través de un transformador.
Servo Motor: Un servomotor es un tipo especial de motor que permite controlar la
posición del eje en un momento dado. Esta diseñado para moverse determinada cantidad
de grados y luego mantenerse fijo en una posición.

Driver l293d: Este driver permite controlar dos motores de corriente continua y motores
paso a paso de no mas de 2 amperes, existen algunos módulos disponibles para la compra
que ya vienen con el driver soldado y algunos pines para controlar las entradas y las
salidas.
Fase 2. Diseño lógico

-Diseño del diagrama Esquemático.

-Diseño del diagrama Pictográfico

Diseño de Chasis en Blender


Fase 3. Desarrollo del Diseño Físico (falta chasis)

-Conexión de modulo ultrasónico HC – SR04 al Protoboard y al Arduino uno

-Conexión del servo motor 90 grados a la placa arduino uno y protoboard para alimentacion
de energia.

-Conexión del arduino uno al protoboard para alimentación de la placa base.


- Conexión del Módulo l298n con los micromotores.

-Diseño del chasis y su construcción final

-Utilización del software Arduino

Fase 4: Probar, optimizar y documentar diseño

-Codificación en el Software Arduino para pruebas del robot.

/Robot Laberinto Desarrollado por Grupo 5 6to Semestre uniandes Extension Ibarra 2019/
/*Juan Intriago - Daniel Olmedo - Roberto Fernandez - Alexis Chicaiza */
#include <Servo.h> //libreria de servo
Servo miServo;
int angulo=90;//Servo dirigido hacia adelante
// Aqui defino los pines del Trigger y el Echo del SH-04
const int trigPin = 5;
const int echoPin = 6;
//Variables para la duracion y la distancia
long duracion;
int distancia;
int distanciaAd;
int distanciaIzq;
int distanciaDer;
//variables para controlar el movimiento del robot
int t=285;//tiempo
int v =1000;//espera para el calculo de la distancia
int AdDer=11;
int AtDer=10;
int AdIzq=9;
int AtIzq=8;

void setup(){
//senial naranja del servo conectado al pin7; rojo a 5V y negro o marron es masa
miServo.attach(7); //attach(pin,min,max)pin 7 por defecto 544 y 2400
Serial.begin(9600);
pinMode(AdDer, OUTPUT);
pinMode(AtDer, OUTPUT);
pinMode(AdIzq, OUTPUT);
pinMode(AtIzq, OUTPUT);
//Distancia
pinMode(echoPin, INPUT);
pinMode(trigPin, INPUT);
//declarar el estado inicial ()
digitalWrite(AdDer, HIGH);
digitalWrite(AtDer, HIGH);
digitalWrite(AdIzq, HIGH);
digitalWrite(AtIzq, HIGH);
delay(1000);
}
void loop(){
sensorProximidad();
}
void sensorProximidad(){
miServo.write(90);delay(v);
distancia=CalcularDistancia();
distanciaAd=distancia;
Serial.print("distancia ad: ");Serial.println(distanciaAd);
adelante(t);
if(distanciaAd<28){
detener();
miServo.write(180);delay(v);
distancia=CalcularDistancia();
distanciaIzq=distancia;
Serial.print("distancia I: ");Serial.println(distanciaDer);delay(v);
miServo.write(0);delay(v);
distancia=CalcularDistancia();
distanciaDer=distancia;
Serial.print("distancia D:");Serial.println(distanciaDer);delay(v);
if(distanciaIzq>distanciaDer){
girarIzq(t);
}
else{
girarDer(t);
}
}
}
int CalcularDistancia()
{
digitalWrite(trigPin, LOW);//envia un pulso baja parasegurarse que apagado
delayMicroseconds(2);//se mantiene el pulso en 2 milisegundos
digitalWrite(trigPin, HIGH); //genera un pulso de triger por 10ms
delayMicroseconds(10);
digitalWrite(trigPin, LOW); //se paga el trigPin
duracion = pulseIn(echoPin, HIGH); //lee el echo, retorna el tiempo que vaja la señal en
regresar
distancia = (duracion/2)/29;//calculo entre la distancia y velocidad del sonido
return distancia;//delay(200)
}
void adelante(int ti)
{
Serial.println("ad ");
digitalWrite(AdDer, HIGH);
digitalWrite(AdIzq, HIGH);
digitalWrite(AtDer, LOW);
digitalWrite(AtIzq, LOW);
}
void atras(int ti)
{
Serial.println("atras ");
digitalWrite(AdDer, LOW);
digitalWrite(AdIzq, LOW);
digitalWrite(AtDer, HIGH);
digitalWrite(AtIzq, HIGH);
delay(ti); detener();
}
void girarIzq(int ti)
{
Serial.println("izq ");
digitalWrite(AdDer, HIGH);
digitalWrite(AdIzq, LOW);
digitalWrite(AtDer, LOW);
digitalWrite(AtIzq, HIGH);
delay(ti); detener();
}
void girarDer(int ti)
{
Serial.println("der ");
digitalWrite(AdDer, LOW);
digitalWrite(AdIzq, HIGH);
digitalWrite(AtDer, HIGH);
digitalWrite(AtIzq, LOW);
delay(ti); detener();
}
void detener()
{
digitalWrite(AdDer, LOW);
digitalWrite(AdIzq, LOW);
digitalWrite(AtDer, LOW);
digitalWrite(AtIzq, LOW);
}
Fase 5: Implementar y probar.

Prueba de funcionalidad:

https://www.youtube.com/watch?v=7xHFsQJ5L1s&feature=youtu.be

You might also like