lunes, 1 de diciembre de 2008

Acer Aspire One + Arduino = Rover AA1

Esta idea ya la tenia pensada desde hace varios meses, ya que imaginé que sería una forma práctica de realizar un robot. Y sí lo fué. No lo habia hecho porque primero lo quería hacer con mi laptop normal (Vaio K-13) pero estaba un poco complicado porque la laptop pesa aproximadamente 3.5 kg. lo cuál representaba mucho peso para moverlo con los Tamiyas. Hasta que finalmente tengo la oportunidad de tener una Netbook Acer Aspire One, y por su tamaño y peso quedó perfecto para el proyecto.

¿Como lo construí?
Usé un cuadro de acrílico cortado a la medida de la AA1 (netbook) y con espacio suficiente para colocar en la parte de atrás el circuito necesario.
Perforé con el taladro lo hoyos necesarios para colocar los Tamiya Gearbox y poner las llantas.
En la parte de atrás, justo en medio, puse una "rueda loca" para que tenga libertad de movimiento.
También pegué sobre el acrílico una Protoboard Tiny y el Arduino Diecimila.
En el protoboard usé un puente H L293D para manejar los motores de DC con el Arduino.
Coloqué todo junto sobre el acrílico, y escribí un pequeño código en el Arduino que simplemente leyera el puerto serial por el USB y que dependiendo el valor en el puerto realizara cierta acción (girar a la izq, girar a la derecha, avanzar, detenerse).
Después escribí otro pequeño programa en Processing el cual abre un applet de java y al presionar las teclas de flecha en el teclado manda la información por el puerto serial y el Arduino las interpreta.
Finalmente hago una conexión desde otra computadora al escritorio remoto de la AA1, configuro un programa (webcamXP) para que transmita el video de la webcam de la AA1 por una dirección IP local y pueda verlo desde la otra laptop.
Y listo, eso fue suficiente para hacerlo funcionar.




Este es uno de mis mejores proyectos y pienso seguir desarrollandolo, se me ocurren varias ideas pero iré haciendo una a la vez.

Problemas conocidos:
  • No tiene reversa
  • La netbook no está firmemente sujetada a la base
  • Se usa dos aplicaciones por separado (webcamXP y Processing)
  • Los motores no se cordinan lo suficiente cuando avanzan al mismo tiempo
  • Complicado de conducir
Mejoras deseadas:
  • Reversa
  • Sensor de distancia
  • Hacer la velocidad variable
  • Conducir con un Wii Nunchuck
  • Una misma aplicación
  • Base más segura
  • Conducir con un iPhone
¿Tienes alguna otra sugerencia? Soy todo oidos.

update:

Código Arduino:

int powe = 2;
int act = 11;
int act2 = 10;

void setup(){
Serial.begin(9600);
pinMode(powe, OUTPUT);
}

void loop()
{
byte val;
digitalWrite(powe,HIGH);
if (Serial.available())
{
val= Serial.read();
if(val==10){
analogWrite(act, 0);
analogWrite(act2, 0);
}
if(val==20){
analogWrite(act, 170);
analogWrite(act2, 170);
}
if(val==30){
analogWrite(act,170);
analogWrite(act2, 0);
}
if(val==40){
analogWrite(act, 0);
analogWrite(act2, 170);
}
}
}

Código Processing:

import processing.serial.*;
Serial port;

void setup()
{
size(320,240);
println("Available serial ports:");
println(Serial.list());
port = new Serial(this, "COM3", 9600);
}

void draw()
{
keyPressed();
void keyPressed(){
if (key == CODED){
if (keyCode == DOWN){
port.write(10);
}
if (keyCode == UP){
port.write(20);
}
if (keyCode == RIGHT){
port.write(30);
}
if (keyCode == LEFT){
port.write(40);
}
}
}




9 comentarios:

cb88 dijo...

you should probably consider linux solutions while harder to get going they will be more integragted

you can do obect tracking with opencv

Linux supports the webcam in the aspire one as well

OscarAM dijo...

Tienes un link desde Engadget.com, eres notado en el mundo grande ya, hechale ganas, son curiosas y utiles tus experimentos y creaciones.

http://www.engadget.com/2008/12/01/arduino-armed-acer-aspire-one-and-wheels-tools-around-shoots-vi/

Punksolid dijo...

Yo tambien llegué aquí a traves de engadget, es un buen proyecto, felicidades.
¿A que te gustaria orientarlo? a juego? seguridad? aspiradora?

Mau dijo...

@ cb88
i'm gonna check that about linux, thanks

@OscarAM
Gracias por los ánimos, en serio quiero desarrollar más este proyecto.

@Punksolid
jajaja "aspiradora"
Muchas gracias, la verdad es que primero quiero depurar algunas cosas del proyecto, perfeccionarlo un poco más y ya después pensaré a qué quiero orientarlo. Lo que sí que no quiero dejarlo así nomás.

Jesse dijo...

I did the same thing a few months ago using phidgets motor controllers, java, and skype.

lego version
http://www.youtube.com/watch?v=FMyU4LkdYH0

I tried doing it again like yours but my motors were too big:
http://www.youtube.com/watch?v=PtiNrFu6nuM

Erwin Ried dijo...

Wow!

Hicimos algo muy similar:

http://www.youtube.com/watch?v=VKftf8Ztisw

Anónimo dijo...

What's the must in the Acer Robot video?

Desert dijo...

Oye porqe no entrar a la robocup@home Mexico?, hay algunas categorias faciles y les puedes dar una leccion de robotica a los de las universidades. Segun veo ya eres un amateur-expert. Avisame si te interesa, yo le entro en cuestiones de vision y seguimiento.

Micah Conti dijo...

I am currently building a similar project with the arduino and the hbridge. I was able to accomplish most of what you did. The tutorial was great, except one thing. I am having issues controlling both motors separately. Can you post a higher quality, up close, picture of your breadboard? I would really appreciate it. Thanks