jueves, 22 de marzo de 2012

Tutorial para hacer el Robot


TUTORIAL

Aquí os enseñaremos paso a paso a construir este robot siguiendo todo el proceso que realizamos.

Estos son todos los materiales que hemos utilizado:



Lo primero que hicimos fue hacer pruebas de conexiones con leds y resistencias en una placa para ir practicando y preparándonos para hacer el proyecto:


 


Una vez que tuvimos la soltura necesaria para conectar leds, resistencias y cables empezamos a programar el Arduino con el ordenador y conectarlo al chip para que empezara a funcionar:





Ahora vamos con la estructura, lo primero que hicimos fue montar las ruedas, los motores y el soporte ayudándonos de bridas, tornillos y tuercas:



Y aquí está la primera apariencia de nuestro robot, aunque por motivos varios decidimos cambiarla por la que veréis al final:



Esta es una foto de nuestro famoso Arduino:



Esto es lo que tuvimos que meter en nuestro Arduino para que se moviera y no se chocara contra las paredes:

 
const int numOfReadings = 10;                   // number of readings to take/ items in the array
int readings[numOfReadings];                    // stores the distance readings in an array
int arrayIndex = 0;                             // arrayIndex of the current item in the array
int total = 0;                                  // stores the cumlative total
int averageDistance = 0;                        // stores the average value

// Establecer los pins y las variables para el sensor de proximidad SRF05:

int echoPin = 12;                               // SRF05 echo pin (digital 2)
int initPin = 13;                               // SRF05 trigger pin (digital 3)
unsigned long pulseTime = 0;                    // stores the pulse in Micro Seconds
unsigned long distance = 0;                     // variable for storing the distance (cm)

int motor1Pin1 = 3;                             // pin 2 on L293D
int motor1Pin2 = 4;                             // pin 7 on L293D
int enable1Pin = 9;                             // pin 1 on L293D
int motor2Pin1 = 5;                             // pin 10 on L293D
int motor2Pin2 = 6;                             // pin  15 on L293D
int enable2Pin = 10;                            // pin 9 on L293D

void setup() {
  // Establecer los pins de salida de los motores:
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(enable1Pin, OUTPUT);
  pinMode(motor2Pin1, OUTPUT);
  pinMode(motor2Pin2, OUTPUT);
  pinMode(enable2Pin, OUTPUT);
  //Activar los pins para que el motor pueda girar:
  digitalWrite(enable1Pin, HIGH);
  digitalWrite(enable2Pin, HIGH);

  pinMode(initPin, OUTPUT);                     // set init pin 3 as output
  pinMode(echoPin, INPUT);                      // set echo pin 2 as input

  // Crear bucle de matriz para recorrer en iteración todos los elementos de la matriz

  for (int thisReading = 0; thisReading < numOfReadings; thisReading++) {
    readings[thisReading] = 0;
  }
}

void loop() {
  digitalWrite(initPin, HIGH);                  // send 10 microsecond pulse
  delayMicroseconds(10);                                // wait 10 microseconds before turning off
  digitalWrite(initPin, LOW);                   // stop sending the pulse
  pulseTime = pulseIn(echoPin, HIGH);           // Look for a return pulse, it should be high as the pulse goes low-high-low
  distance = pulseTime/58;                      // Distance = pulse time / 58 to convert to cm.
  total= total - readings[arrayIndex];          // subtract the last distance
  readings[arrayIndex] = distance;              // add distance reading to array
  total= total + readings[arrayIndex];          // add the reading to the total
  arrayIndex = arrayIndex + 1;                  // go to the next item in the array                                

  // Al final de la matriz (10 elementos) entonces inicio nuevo
  if (arrayIndex >= numOfReadings)  {
    arrayIndex = 0;
  }

  averageDistance = total / numOfReadings;      // calculate the average distance
  delay(10);

  // Calcula la distancia y se mueve de acuerdo con ella

  if (averageDistance <= 10){
    // Ir hacia atrás
    digitalWrite(motor1Pin1, HIGH);
    digitalWrite(motor1Pin2, LOW);
    digitalWrite(motor2Pin1, HIGH);
    digitalWrite(motor2Pin2, LOW);   

  }

  if (averageDistance <= 25 && averageDistance > 10) {
    // Girar
    digitalWrite(motor1Pin1, HIGH);
    digitalWrite(motor1Pin2, LOW);
    digitalWrite(motor2Pin1, LOW);
    digitalWrite(motor2Pin2, HIGH);
  }
  if (averageDistance > 25)   {
    // Ir hacia delante
    digitalWrite(motor1Pin1, LOW);
    digitalWrite(motor1Pin2, HIGH);
    digitalWrite(motor2Pin1, LOW);
    digitalWrite(motor2Pin2, HIGH);    

  }
}

Y aquí está nuestro chip que hizo que funcionara el Arduino y por ende, el robot. Tenía 16 patillas y aqui explico la función de cada una
  • Enable: Activa todas las patillas de su fila.
  • Input: Guía las órdenes para el motor desde el Arduino hasta el chip.
  • Output: Guía las órdenes para el motor desde el chip.
  • GND: Es el terminal negativo de la alimentación.
  • VS: Es el terminal positivo de la alimentación.
Y aquí os dejo la foto del chip y de sus patillas:




También tuvimos que conectar el sensor de proximidad para que no se chocara:



 Pongo dos fotos de las conexiones que tuvimos que hacer y aunque los nombres estén en inglés no hace falta traducirlos, y si queréis hacerlo tampoco es muy complicado:




Además de estas conexiones con cables, luego teniamos que soldar todos los cables que iban a los motores, los leds, el interruptor y el sensor de proximidad.

Una vez hechas todas las conexiones, algunas con empalmes por falta de cables más largos, terminamos de dar los retoques a la forma exterior de nuestro apreciado robot. Nosotros Queriamos que se pareciera a esto: 



Aunque finalmente ha quedado así:

En esta foto se puede ver el sensor y los leds (aunque apagados).


Aquí se ve nuestro interruptor que decide si funciona o no nuestro Volkswagen.



Esto es el coche visto desde abajo y se pueden ver las soldaduras de los motores y las bridas.



Y esta es nuestra puerta secreta por donde podemos arreglar algun pequeño fallo que se produzca.




martes, 14 de febrero de 2012


 
 


 En un principio no parece nada, pero al final acabará siendo un escarabajo :P














 Al final conseguimos que no nos diese error, después de muchos intentos

Trabajo y risas en clase

Y más pruebas

 Y... a clase de nuevo



 
 Y comienzan los ERRORES

 El profe nos explica como comenzar a configuar el arduino

 Pero aún así nos sigue dando error



Y con nuestro arduino conseguimos ´´que se haga la luz´´




 Aqui una vista general 

Y la correspondiente explicación del profesor


 
 Y... ouch, pusimos la rueda de delante al reves

Y al darnos cuenta de nuestro sublime error, lo pusimos bién

 Parejo resistiendose a hacerse fotos
 El grupo entero
Maroli haciendo de las suyas con arribas (jajaja)