¿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);
}
}
}
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:
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
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/
Yo tambien llegué aquí a traves de engadget, es un buen proyecto, felicidades.
¿A que te gustaria orientarlo? a juego? seguridad? aspiradora?
@ 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.
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
Wow!
Hicimos algo muy similar:
http://www.youtube.com/watch?v=VKftf8Ztisw
What's the must in the Acer Robot video?
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.
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
Publicar un comentario