martes, 22 de mayo de 2012

Proyecto Arduino

Nuestro proyecto Drive consiste en un carrito a escala que se mueve controlado por un dispositivo móvil. 

Herramientas y tecnología utilizada
Software:

  • Arduino Software
  • Amarino
  • Librería MeetAndroid para arduino


Hardware:

  • Teléfono LG Optimus E510F con Android 2.3
  • Carrito Magician chassis
  • Batería de 9 Volts (Las 4 baterías AA no fueron suficientes)
  • Arduino Uno








  • Modulo Bluetooth para arduino
  • Puente H (Chip SN754410NE)

  • Cables Interconectores (macho-macho) 












Pasos a Seguir


Primeramente armamos el carrito:



Después hicimos un circuito con el puente H para hacer que los motores se movieran. Para hacer esto debemos seguir los siguientes pasos:

Tenemos que colocar el puente H en nuestro protoboard de manera que se pueda ver la pequeña forma de U hacia arriba. Tenemos que identificar los pines de nuestro chip. El pin de lado izquierdo de la U sería el pin 1, debajo de ese sería el 2 y así sucesivamente. El de lado derecho de la Usería el pin 16.

Ahora tenemos que acomodar los cables de la manera en la que se muestra en el diagrama
Los pines 1, 9 y 15 van a la parte positiva del protoboard donde habrá 5V. 
El pin 8 va a el pin VIN donde habrá 12 V y con este correrán los dos motores dc.
Los pines 4, 5, 12 y 13 van a la parte negativa del protoboard.
El motor izquierdo va en los pines 3 y 6.
El motor derecho va en los pines 11 y 14.
El pin 2 del puente H va a el pin digital 2 del Arduino.
El pin 7 del puente H va a el pin digital 3 del Arduino.
El pin 10 del puente H va al pin digital 8 del Arduino.
El pin 15 del puente H va al pin digital 7 del Arduino.



Ahora tenemos que conectar el módulo bluetooth a nuestro arduino para que se pueda comunicar con el dispositivo móvil.

El bluetooth se conecto de la siguente manera:





Nota: Si ya estamos utilizando la entrada de 5V podemos usar la de 3 que viene en nuestro arduino.

El carrito armado quedó de la siguiente manera:



Ahora tenemos que descargar el software Amarino para probar si la conexión fue realizada exitosamente

Aqui estan los pasos a seguir para realizar las pruebas

Ahora que ya establecimos comunicación entre el celular y el arduino, tenemos que programar el arduino para que capte dicha señal y podamos manejar el carrito a nuestro antojo

El código que utilizamos en nuestro arduino fue el siguiente:


#include 

#define baudrate 115200

MeetAndroid phone;

// Motores
int motor_left[] = {2, 3}; //se definen los pines del motor izquierdo
int motor_right[] = {7, 8};//se definen los pines del motor derecho
int i;
int ledPin =  13;    // LED 

// ————————————————————————— Setup
void setup() {

// Configurar motores
int i;
for(i = 0; i < 2; i++){
pinMode(motor_left[i], OUTPUT);
pinMode(motor_right[i], OUTPUT);
pinMode(ledPin, OUTPUT);
}

Serial.begin(baudrate); // se define la tasa de baudios número de unidades de señal por segundo
}

void loop() {
phone.receive();

while (Serial.available() < 1) {} 
char value = Serial.read(); //lee el valor 


if (value == '1'){
turn_left();
Serial.println("1");
}

if (value == '2'){
turn_right();
Serial.println("2");
}

if (value == '3'){
drive_backward();
Serial.println("3");
}

if (value == '4'){
drive_forward();
Serial.println("4");
}

if (value == '0'){
motor_stop();
Serial.println("0");
}
}
}

// Funciones

void motor_stop(){ 
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], LOW);

digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], LOW);
}

void turn_left(){

digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);

digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);

}

void turn_right(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);

digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}

void drive_backward(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);

digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}

void drive_forward(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);

digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}
Ahora nos conectamos a Amarino con el código ya programado y en Monitor podemos enviarle mensajes para que se mueva. En este caso, el carrito se moverá con los números 1, 2, 3 y 4.

Aquí está un ejemplo de nuestro carrito ya funcionando

video




6 comentarios:

  1. Disculpa una pregunta el codigo en mi programa de arduino no me lo corrio pero le quite el que esta al final y si me lo corrio ahora te pregunto en que me afecta quitarle esa variable ?

    ResponderEliminar
  2. Respuestas
    1. Emmm yo hare este carro y solo tengo un dia xD y pues creo que uso motores de 6V - 9V porque sino no le serviria la bateria de 9V que usaron.

      Eliminar
    2. a ti te funciono el codigo?, ami me manda varios errores

      Eliminar
  3. la ultima es una libreria descargala y se la cargas a el programa de arduino

    ResponderEliminar
  4. la ultima es una libreria descargala y se la cargas a el programa de arduino

    ResponderEliminar