OBSTÁCULO EVITANDO ROBOT
FINANCIADO POR; INTEL KENIA EN ASOCIACIÓN CON LA SOCIEDAD DE ESTUDIANTES DE INGENIERÍA AUTOMATIZACIÓN CLUB JKUAT.
MIEMBROS DEL PROYECTO:
1 ANTONY KARIUKI
2 ERIC KINYANJUI
3 EMMANUEL KINYANJUI
PROYECTO DE INSTRUCTIVO:
REQUISITOS:
1 TABLERO DE GENERACIÓN 2 DE GALILEO DE INTEL
MOTOR SERVO 2
Servos son básicamente motores Dc con retroalimentación de posición que significa que usted pueden decir el microcontrolador a través de su código para mover el servo a la posición deseada. En galileo junta puede mover un servo estándar de entre 0 a 180 grados y 90 es el centro del servo (hace senseServo tiene tres cables i.e.Brown,Red,Yellow o el color tal vez negro, rojo, blanco.
1 marrón o cable negro debe conectarse a tierra del microcontrolador.
2 cable rojo debe conectarse a Vcc (4.8V a 6V).
3 amarillo o blanco es para conectarse a la salida digital del microcontrolador y se llama cable de señal.
JUNTA DE 1BREAD 3
La mitad de tamaño protoboard es suficiente para este robot.
4 CALIBRE DE ALAMBRES Y CABLES DE PUENTE
Para hacer las conexiones en el protoboard necesita ya sea calibre alambre o cables de puente de macho a macho.
5 1 CONTROLADOR DE MOTOR L293D
L293D es un chip de 16 pines y es un popular conductor del motor que puede utilizarse para pequeños motores que tienen baja corriente de salida.
6 sensor de distancia analógico GP2D12 de Sharp X 1.
El sensor consiste en dos ojos. Un ojo envía la luz infrarroja y el otro ojo ve el reflejo de esa luz infrarroja y medidas de la distancia que luego se envía al microcontrolador a través de la entrada analógica para realizar otras operaciones basadas en la distancia (las operaciones deben ser definidas en el código.
Hay tres cables que vienen desde el sensor.i.e.Red,Black y el blanco o puede ser roja, marrón y amarillo.
1 rojo está conectado a 5V de arduino.
2 negro o marrón a masa de arduino.
3 blanco o amarillo a la clavija de entrada analógica de galileo boardi.e. en este caso a analog pin 0
7 BATERÍAS
La Junta de Galileo debe 9V(recommended). Así que es mejor utilizar dos baterías diferentes.
1 x 9V PP3 batería para la Junta y 4 baterías del AA por ejemplo 6V para motores y servo.
8 soporte de la batería AA de 1 x 4
9 2 x conector de batería
Un conector de la batería debe tener un enchufe de CC al final por lo que se puede ser directamente conectado a la toma de CC de galileo. El enchufe de CC puede adquirirse fácilmente en cualquier tienda de electrónica local.
10 1 x cinta de doble cara
No se usar tornillos o tuercas para el montaje de los componentes. Apenas pegamos los componentes en la placa de acrílico usando cinta de doble cara.
11 soldador
Un soldador estándar
PROCEDIMIENTO
1 primero sueldan los cables a los conductores del motor. En mi caso, he cortado los puentes de macho a macho en mitad y soldada a los conductores del motor. Ayuda en el fácil conexiones en el protoboard.
2 luego montamos las ruedas al eje del motor con la ayuda del tornillo que tenes con las ruedas.
3 después de montamos la rueda del echador en la parte inferior delantera y center(roughly) de la robusteza usando cinta de doble cara. La rueda del echador generalmente viene con agujeros para el montaje fácil mediante pequeños tornillos y tuercas, pero si no desea taladrar agujeros en la hoja de acrílico (robot base) entonces usted simplemente puede pegarlo con cinta de doble cara como lo hice.
4 colocan los dos motores en la hoja de acrílico con la ayuda de dos caras. La distancia entre la rueda del echador delantero y las ruedas traseras era tan pequeña como sea posible.
5 coloca un servo en el frente con cinta de doble cara
6 la placa intel para galileo y protoboard se colocaron en la base con una cinta de doble cara.
7 entonces colocamos una batería de 9V con el conector (con enchufe de CC) y 4 pilas AA con conector (sin el enchufe de CC) en la base del robot.
8 la distribución de energía en este circuito es el siguiente: el sensor y ambos los pernos permiten de controlador de motor L293D funcionan con fuente de 5V regulada de la Junta de galileo. La Junta utiliza alimentación de 9V y regula a 5 v con la ayuda del regulador de voltaje incorporado. Los motores y los servos funcionan por 6V (4 pilas AA).
9 conectamos el circuito como se muestra a continuación;
10 del circuito:
El cable de señal (blanco o amarillo) del sensor sharp es conectado al pin analógico 0 de galileo, Vcc(red) a 5V y tierra (negro o marrón) a la tierra de Galilea. El color de los cables puede variar.
El cable de señal (blanco o amarillo) de servo es conectado al pin digital 8 de galileo, Vcc(red) a 6V y tierra (negro o marrón) a la tierra de Galilea. (la tierra de la batería de 6V y galileo debe ser combinada). El color de los cables puede variar.
Los motores son impulsados por digitales pines 4,5,6 y 7 y son accionados por 6V.
CÓDIGO
El código utilizado para el obstáculo evitando robot incluido;
#include //includes la librería servo
int motor_pin1 = 4;
int motor_pin2 = 5;
int motor_pin3 = 6;
int motor_pin4 = 7;
int servopin = 8;
int sensorpin = 0;
dist int = 0;
int leftdist = 0;
int rightdist = 0;
objeto de int = 500; distancia a la que el robot busque otra ruta
Servo myservo;
void setup)
{
pinMode(motor_pin1,OUTPUT);
pinMode(motor_pin2,OUTPUT);
pinMode(motor_pin3,OUTPUT);
pinMode(motor_pin4,OUTPUT);
myservo.Attach(servopin);
myservo.Write(90);
Delay(700);
}
void loop()
{
Dist = analogRead(sensorpin); Lee el sensor
if(dist < Object) {//if distancia es de menos de 550
Forward(); luego avanzar
}
Si (dist > = objeto) {//if distancia es mayor o igual a 550
findroute();
}
}
void forward() {/ / usar combinación que funcione para usted
digitalWrite(motor_pin1,HIGH);
digitalWrite(motor_pin2,LOW);
digitalWrite(motor_pin3,HIGH);
digitalWrite(motor_pin4,LOW);
retorno;
}
void findroute() {}
halt(); parada
backward(); ir hacia atrás
Lookleft(); ir a la subrutina lookleft
lookright(); ir a la subrutina lookright
Si (leftdist < rightdist)
{
turnleft();
}
otra cosa
{
TurnRight ();
}
}
void backward() {}
digitalWrite(motor_pin1,LOW);
digitalWrite(motor_pin2,HIGH);
digitalWrite(motor_pin3,LOW);
digitalWrite(motor_pin4,HIGH);
Delay(500);
halt();
retorno;
}
void frenar () {}
digitalWrite(motor_pin1,LOW);
digitalWrite(motor_pin2,LOW);
digitalWrite(motor_pin3,LOW);
digitalWrite(motor_pin4,LOW);
Delay(500); esperar después de parar
retorno;
}
void lookleft() {}
myservo.Write(150);
Delay(700); Espere a que el servo llegar
leftdist = analogRead(sensorpin);
myservo.Write(90);
Delay(700); Espere a que el servo llegar
retorno;
}
void lookright () {}
myservo.Write(30);
Delay(700); Espere a que el servo llegar
rightdist = analogRead(sensorpin);
myservo.Write(90);
Delay(700); Espere a que el servo llegar
retorno;
}
vacío de la izquierda () {}
digitalWrite(motor_pin1,HIGH); utilizar la combinación que funcione para usted
digitalWrite(motor_pin2,LOW); motor derecho gira hacia adelante e izquierdo motor hacia atrás
digitalWrite(motor_pin3,LOW);
digitalWrite(motor_pin4,HIGH);
Delay(1000); Espere a que el robot hacer la vuelta
halt();
retorno;
}
turnright nula () {}
digitalWrite(motor_pin1,LOW); utilizar la combinación que funcione para usted
digitalWrite(motor_pin2,HIGH); motor izquierdo gira el motor adelante y derecha atrás
digitalWrite(motor_pin3,HIGH);
digitalWrite(motor_pin4,LOW);
Delay(1000); Espere a que el robot hacer la vuelta
halt();
retorno;
}