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);
}
}
}




domingo, 30 de noviembre de 2008

New Stuff!

Hace algunos dias atrás me donaron y adquirí nuevo material/herramientas para desarrollo de proyectos. Uno de ellos es un par de Tamiya Gearbox de 6 velocidades cada uno, con llantas sport incluidas. Estos en especial me agradaron mucho porque pienso que son básicos para armar un robot. Donados por Lutgardo. He buscado más de estos en internet y no he encontrado, hay otros modelos pero son más pequeños, exactamente este no lo he visto por ningun lado.


Tambien adquerí un Router Linksys wrt54g version 5.0, hasta donde estos routers son muy convenientes ya que les puede modificar el firmaware, bueno pero la version que tengo creo que es más complicado. Sin embargo creo que tambien le podré sacar provecho en algún proyecto de comunicacion Wi-Fi.

Si algún día deseas hacerme una donación en apoyo a mis proyectos, te lo agradeceré muchisimo.

domingo, 19 de octubre de 2008

Cambiar el disco duro de la Acer Aspire One





Mi amigo Victor se hizo de una Acer Aspire One, pero como buen envidioso se compró la más básica, así que solo venia con 512 mb en RAM y con un SSD de 8 GB, para cuando me enteré que la tenía ya le habia cambiado la memoria a 1GB y había instalado XP, pero no quedó conforme y el espacio en disco duro no le agradó mucho, asi que me preguntó que si le podia ayudar a cambiarle el disco duro, el anteriormente había encontrado un página donde demostraba que se podía cambiar el disco duro SSD por uno de un iPod. Así que accedí a ayudarlo.Conseguí un disco duro de 30gb de iPod de quinta generacion que es el que se encesita para esto (ZIF). Les dejo una página donde pueden comparar mejor los discos duros del iPod. En mi caso usé el Toshiba MK3008GAL.
Lo primero que hay que hacer es retirar la baterias y sacar todos los tornillos de la parte de abajo de la Acer One, incluso los que se encuentran debajo de las gomitas en la base de la Netbook.
Posteriormente hay que levantar el teclado haciendo presion en los sujetadores que tiene justo arriba de las teclas F2, F8, Pausa. Hay que tener cuidado al momento de levantar el teclado y desconectar la membrana levantando el sujetador hacia arriba.
Después hay que quitar los tornillos de la carcasa por la parte de arriba, una vez hecho eso, quitamos la carcasa superior con cuidado.
Quitamos la tarjeta inalambrica, la tarjeta I/O del lado derecho y el SSD.
Usaremos la misma membrana del disco duro para ponerselo al nuevo. Hay que tener cuidado al momento de ponerle la membrana al disco duro de iPod, cuesta un poco de trabajo meterla.
En la parte de abajo de la tarjeta madre, hay que hacer espacio eliminando unos soportes que tienes para la tarjeta y para el SSD, en mi caso usé unas pinzas de corte pero también se puede usar un Dremel. Esto último, para que el disco duro tenga espacio y se pueda acomodar a la perfección y quede debajo de la motherboard. Finalmente conectamos el DD a la motherboard y listo, ensamblamos todo otra vez.

No pude instalarle Windows XP porque no tengo una CD-ROM externo, pero mañana lo haré y les cuento como me fué.

Si te gustó este mini tutorial, entonces vas a encontrar muuuuy interesante Make: en Español, hay un sin fin de proyectos que puedes hacer tú mismo!

viernes, 3 de octubre de 2008

ReleShield para Arduino

Este es un proyecto patrocinado por ElectroLabo, distribuidor de Arduino en México


Para las personas que ya están más familiarizadas con el Arduino este proyecto lo pueden encontrar interesante.
Se trata de un prototipo para el Arduino usando un protoshield y algunos otros componentes, la finalidad es simple pero muy útil. ¿Alguna vez has deseado controlar las luces de tu casa desde la computadora? O tal vez algún otro electrodoméstico de la casa. Bueno pues este proyecto va más o menos dirigido a eso. El ReleShield tiene la capacidad de activar/desactivar hasta tres dispositivos al mismo tiempo pero independientemente uno del otro, los cuales requieran estar conectado a la corriente alterna, siendo que el ReleShield es de corriente directa. ¿Cómo lo hace? El relé o relevador (del francés relais, relevo) es un dispositivo electromecánico, que funciona como un interruptor controlado por un circuito eléctrico en el que, por medio de un electroimán, se acciona un juego de uno o varios contactos que permiten abrir o cerrar otros circuitos eléctricos independientes (wikipedia), entonces con las salidas digitales del Arduino podemos controlar varios relés.

Material necesario:

1 placa ProtoShield para Arduino
3 Relés RAS-0510 (puede ser cualquier otro pero tienes que conocer sus especificaciones)
6 terminales dobles
2 sensores LM35 (opcional)
Cable el necesario para soldar y cable plano
Tira de pines (28 aprox)
5 leds (opcional)

Manos a la obra!

Anteriormente ya había hecho un circuito similar donde únicamente conectaba las terminales al relé y a un par de pines para conectarlo al Arduino, por lo tanto ya estoy un poco familiarizado en cuanto a como hay que hacer las conexiones, el funcionamiento y la programación para éstos, por ello hice algo que no tenía que hacer y que fue brincarme un paso. Monté todo como fuera cayendo y no realicé un esquemático previo a armarlo. Así que yo recomiendo altamente que hagan un esquemático para facilitar el trabajo de soldar y evitar cruzar tantos cables. De todas formas hice el mío después de terminarlo, siempre es bueno hacerlo y tenerlo a la mano para futuras referencias.


Bien, ahora empecemos a armar el ReleShield.

Primero soldamos los pines sobre el protoshield para los pines digitales y el power, únicamente.
Aprovechamos para soldar también las terminales en los lados correspondientes como se muestra en la imagen.
Después, montamos los relés, esta parte puede ser un poco difícil ya que la orientación de los pines de los relés no coinciden del todo bien con las perforaciones del protoshield, así que hay que ayudarse de una pinzas de punta para doblar un poco las patitas y lograr meterlos. Como se puede notar en la imagen, existe una separación entre cada componente que hasta ahora hemos colocado, normalmente cualquiera pudiera pensar que lo mejor es ahorrar espacio y posiblemente agregar más componentes, pero la razón de hacerlo de esta forma es porque conforme se va armando el prototipo hay que ir pensando hacia delante, es decir el siguiente paso ha realizar que es hacer todas las conexiones, soldando, por debajo de la placa (preferentemente), y el tener los componentes demasiado cerca puede complicar esa tarea.
Una vez que ya tenemos colocado los tres relés, volteamos la placa y soldamos primero el pin (2) de cada relé que tiene que ir a tierra (cable verde), después conectamos los pines (1) que van del relé a los pines digitales del Arduino (2, 3, 4), finalmente terminamos las demás conexiones de los pines (3, 4, 5) de los relés hacia las terminales, como se ve en el esquemático.


Cabe mencionar que los relevadores que se usaron en este proyecto tienen las siguientes especificaciones: Relevador 1 polo, 2 tiros, bobina de 5 VDC, contactos de 120 VAC/10 Amp., 250 VAC/7 Amp. y/o 24 VDC/10 Amp. (http://www.sunhold.com/ras2.html)
Esto quiere decir que el relevador se conmuta con señales TTL (5v) y que del lado de potencia soporta 120v a 10 amperes, 250v a 7 amperes o 24v a 10amp, prácticamente nos puede servir para casi cualquier electrodoméstico.

Listo!

Hasta este momento ya tenemos la primera parte del ReleShield terminada. Lo cual quiere decir que ya podemos montar sobre el Arduino el ReleShield y hacer las primeras pruebas.
Para hacer una pequeña prueba y ver que todo quedó bien conectado, corremos el siguiente código en el Arduino.
int Re1Pin = 2; //indicamos los pines que se van a usar
int Re2Pin = 3;
int Re3Pin = 4;

void setup(void){ //se configuran como salida para mandar las señales
pinMode(Re1Pin, OUTPUT);
pinMode(Re2Pin, OUTPUT);
pinMode(Re3Pin, OUTPUT);
}

void loop(void){

digitalWrite(Re1Pin, HIGH); //se activa el Relé 1, el 2 y 3 desactivado
digitalWrite(Re2Pin, LOW);
digitalWrite(Re3Pin, LOW);
delay(200);
digitalWrite(Re1Pin, LOW); //se activa el Relé 2, el 1 y 3 desactivado
digitalWrite(Re2Pin, HIGH);
digitalWrite(Re3Pin, LOW);
delay(200);
digitalWrite(Re1Pin, LOW); //se activa el Relé 3, el 1 y 2 desactivado
digitalWrite(Re2Pin, LOW);
digitalWrite(Re3Pin, HIGH);
delay(200);

}
Con este código, se hará que cada relé se active solo por 200 milisegundos uno tras del otro, de esta forma con el multímetro podemos checar que las conexiones en la terminales sean las correctas. Si todo sale lo correcto, entonces ya podemos empezar a usar el ReleShield.

Sin embargo, aun se puede mejorar más el proyecto, en esta segunda parte agregaremos un par de sensores de temperatura LM35 y unos cuantos LEDs. La segunda parte es totalmente opcional, ya que el ReleShield ya está 100% funcional y cumple su objetivo principal. Pero si queremos algo más robusto, agregamos algunos LEDs que nos indiquen alguna parte del proceso en el que se encuentra el Arduino. Y si además queremos hacer un control basado en la temperatura ambiente, ya sea una habitación o un electrodoméstico como un refrigerador, agregamos un sensor de temperatura LM35.

¿Para que poner un sensor de temperatura?

Bueno, la principal razón es para controlar ciertos dispositivos de acuerdo a la temperatura ambiente o artificial. En mi caso fue porque mi refrigerador se descompuso y trabaja sin apagarse, es decir, el termostato no está regulando bien, es por eso que incorporé dos sensores, uno interno (soldado en el ReleShield) y otro externo con una extensión de cable plano para conectarlo al ReleShield y colocarlo en zonas donde no conviene exponer el Arduino y el ReleShield. Igualmente, otras ideas puede ser: activar un ventilador o un aire acondicionado si hace mucho calor, o activar un calentador si hace frio, etc.
Además, el sensor externo se puede quitar y usar cualquier otro sensor que mande señales analógicas.

Finalmente así queda la configuración final:

¿Cómo crees que se pueda mejorar el ReleShield?

domingo, 28 de septiembre de 2008

Hackeando el escritorio


Hace un tiempo atrás, mientras estaba en Buenos Aires, Argentina, compré un cable adaptador para conectar un disco duro de IDE a USB, y así poder utilizar el disco duro de 80 Gb que tengo. Resulta ser un poco molesto tener el disco duro sobre el escritorio y que solo esté estorbando. Ya que no es un dispositivo con el cuál cargue con él a todas partes, decidí incorporarlo completamente al escritorio.

miércoles, 16 de julio de 2008

Mi evolución con los celulares

Si no mal recuerdo fue hasta la prepa que empecé a usar un celular, aún recuerdo que ya empezaban a hacerse populares entre las masas mayores de 16 años. todavía recuerdo que estaba juntando los vasos de cartón de Coca Cola para cambiarlos por un celular Nokia 5190 rojo. Pero nunca logré obtenerlo ya que cuando finalmente junté todos los vasos necesarios ya se habían agotado los celulares color diablo.
El primer celular que tuve fue a partir de que mi tía decidió cambiar su celular, así que ella me obsequió un Nokia 918 color dorado con batería nueva y cargador genérico, en aquél entonces fácilmente un cargador genérico te podia costar $200 pesos. Mandar "mensajes de dos vías" era lo más wooow del momento. El chiste no me duró mucho, después de dos meses de usarlo, mientras me bajaba del coche para ir a la farmacia, accidentalmente se me cayó en la calle y no me percaté de la situación. Compré, salí y me subi de nuevo al auto, cuando llegué a mi casa me di cuenta que ya no lo tenía.
Pasó un gran lapso de tiempo para cuando me compre un celular nuevo, en esta ocasión yo mismo ahorré para comprárme mi propio celular, recién había salido la tecnología GSM y ahora ya no solo estaba de moda mandar "mensajes de dos vías", si no que además ya podías cambiar de celular y quedarte con tu chip. El que más quería en ese entonces era un Sonyericsson T68i, pero era muy caro, así que me conformé con uno mas o menos parecido jeje, el Sonyericsson T200. Se podía notar claramente el cambio, fácil de usar y muy cómodo, este fue uno de los mejores celulares y uno de los favoritos para mí. Después de un tiempo me inicié en MercadoLibre y me topé con un accesorio para este celular, que era un adaptador para ponerle una tarjeta de memoria SD y escuchar MP3, cosa que en aquel entonces ningun otro celular lo tenia, estaba muy bueno. Finalmente decidí cambiar de celular como al año o poco menos, el T200 se lo vendí al dueño de la cafeteria de la prepa ("el chino").
Pronto empezaron a salir los nuevos celulares con pantalla a color, y bien yo no podía dejar pasar la oportunidad de tener uno :D, entonces me decidí a comprar el Motorola C350 "MotoDJ", la verdad que no tenía nada de especial el celular, ahí fue donde me di cuenta que Motorola no era para mí, para empezar la teclas de SEND y END estaban al revés de como normalmente todos los demás celulares lo tienen, simplemente este celular no me gustó mucho, hasta me da flojera hablar de él jajaja.
No recuerdo cual fue el motivo pero tuve que vender el celular, y pagar algo. Así que pase un lapso eterno de tiempo como de dos semanas, y me compré otro celular, pero esta vez la intención era únicamente comunicarme, así que recurrí a obtener un Sonyericsson T100. Lo que se puede rescatar de este celular es que cumplía su función, era ligero, pequeño y la batería duraba mucho. Pero des este celular desquité la garantía una vez y casi a punto de ser vencida. Casi al cumplirse el año de uso, por razones ajenas a golpes y mal uso del celular, simplemente perdió la señal, ya no mostraba la intensidad de señal las "barritas". Así que lo llevé al centro de atención a clientes y me dieron uno nuevo. Ese fue hasta ese momento el celular que más tiempo me había durado, al rededor de casi dos años.
No fue hasta que entré a la universidad y en segundo semestre pensé en cambiar de celular nuevamente, las cámaras en celular empezaban a verse en algunos modelos, y en aquel entonces el que más me gustaba era el Nokia 3220, tenia un diseño muy chido, moderno y juvenil, y lo mejor de todo con led's jaja. Tenia sonidos muy chidos, aparte las fotos no salían tan mal y se podía grabar video y compartirlos por medio de un mensaje multimedia. La bateria duraba bastante y con un cable usb se podáa pasar todas la fotos, videos, contactos, mensajes, imágenes a la PC.
Pasó un tiempo y un buen día, me enteré de la existencia de un celular pionero en su tipo, el Sonyericsson W800. Nunca se había visto antes algo tan moderno, en cuanto a celulares se refiere, en México. Era el primer celular que incorporaba todo junto: teléfono, cámarade 2 megapixeles (con autofocus, esto es importante), radio FM y reproductor de Mp3. Fue diseñado casi a la perfección, y pensado en todo, venía con todos los accesorios necesarios: audífonos de alta calidad, cable usb y memoria externa de 512 mb. Sin duda era el mejor para usar cómodamente el reproductor de música. Con un adaptador Bluetooth usb, se podía controlar el puntero y parte del teclado en la PC, como un control remoto. A este celular le saqué casi el máximo provecho y ese es el que más me ha durado hasta este momento, al rededor de 2 años y medio. Me duró tanto porque no encontraba otro celular que pudiera superar la funcionalidad del W800.
Hasta que finalemente el señor Steve Jobs hizo lo suyo, presentando el iPhone. Después de 9 meses de haber salido al mercado, yo pude obtener el mío.
Tiene muchos pros y muchos contras, pero estoy contento con él, no creo cambiar a otro celular, si no es el mismo en una nueva versión.

miércoles, 25 de junio de 2008

¿Donde comprar el Arduino en México?


Fácil, en ElectroLabo, una tienda en linea donde podrás comprar, además del Arduino Diecimila, algunos otros componentes, como un display LCD con luz de 16x2. No conozco otro lugar en México en donde vendan el Arduino, es bueno saber que ya se pueda adquirir el Arduino cómodamente aquí. Los precios son accesibles para cualquier persona que estudia electrónica o que desea aprender.

Además, ElectroLabo ofrece varios ejercicios básicos, ejemplos y proyectos para realizarlos con el Arduino, todos ellos muy interesantes.

Así que si en tí ha despertado el interés por el Arduino ya sabes donde comprarlo!!

Apurate porque se acaban :P

Si te interesa el Arduino, entonces también vas a encontrar muuuuy interesante Make: es Español puedes encontrar muy bueno proyectos!

lunes, 5 de mayo de 2008

Arduino Flush-O-Matic

Este fin de semana, se me ocurrió hacer un dispositivo que jalara la palanca del excusado, o en otras palabras, que tirara de la cadena del WC (water closet). Como el sistema iba a necesitar de alguna parte mecánica, para jalar la palanca, lo más indicado fue usar un servomotor.
A continuación les mostraré paso a paso como lo hice, de igual forma puede servir como tutorial.

Material:
  • Arduino Diecimila
  • Protoboard
  • Servo HS-311
  • 2 Leds (rojo y verde)
  • Sumbador
  • Pushbutton
  • Display LCD Hitachi
  • 2 resitencias: una de 4.7k a 10 kohms (para el pushbutton) y otra de 1 kohm(para el sumbador)
  • Cable, el necesario para hacer las conecxiones en el protoboard (20 aprox)
  • Eliminador de corriente de pared
  • Alambre, el necesario para montar el servo al excusado
Primero, lo que hice fue un pequeña estructura con el alambre para sostener el servo al tanque del excusado, lo dibujé antes para darme una idea de como moldear el alambre.
Lo monté en el tanque para revisar que quedara bien y si nó hacer pequeñis ajustes con las pinzas
Después, monte en el protoboard el Arduino (sujetado por una liga) y el display LCD con la finalidad de ver que pines digitales me quedaban libres. El objetivo del display es mostrar un mensaje de acuerdo al proceso en el que se encontrara el sistema. Para el display usé la librería LCD4bit, de este modo usaria menos pines que la libreria LiquidCrystal. Los mensajes que se mostrarán los siguientes:
  • Ready (Listo)
  • Flushing... (Jalando...)
  • Well done! (Bien hecho!)
loading, please wait... (cargando, por favor espere...)
  • almost ready... (casi listo...)

Noten que los leds prenden de acuerdo al mensaje, en el caso del loading prende el rojo, y mientras eso sucede no se puede accionar el sistema nuevamente, hasta que el mensaje de Ready aparezca.

Una vez que probé el display con un pequeño programa para ver que el ciclo de los mensajes funcionara, intenté conectar el servo. Usé la librería ServoTimer1, pero aquí fue donde tuve el mayor problema. Yo pensaba que el servo lo podía conectar a cualquier pin digital, y despues de algunas horas de pelearme con el circuito y no lograr que funcionara el servo, se me ocurrió revisar los archivos del la librería de ServoTimer1, hasta que por fin me topé en el Header la parte donde decía: // Only works for 9 and 10, supuse que se refería a los pines, pero el problema en realidad fue que el display estaba utilizando esos pines, lo cual me llevó necesariamente a modificar la libreria del display.

Busqué en el archivo cpp de la librería hasta encontrar la parte:

//DB should be an unseparated group of pins - because of lazy coding in pushNibble()
int DB[] = {7, 8, 9, 10}; //wire these to DB4~7 on LCD.

justo ahi se encontraba la parte de los pines, asi que como el pin 6 no lo estaba ocupando, recorrí todo un número, quedando de la siguiente forma:

//DB should be an unseparated group of pins - because of lazy coding in pushNibble()
int DB[] = {6, 7, 8, 9}; //wire these to DB4~7 on LCD.

guardé el archivo y abrí el software Arduino, para ver si ya funcionaba, pero no fue así. Busqué en internet cual podría ser el error, y me dí cuenta que solo tenia que borrar el archivo LCD4bit.o y volverlo a compilar en el software de Arduino. Finalmente funcionó el servo, pude haber recorrido más los pines del display, para usar los dos pines de ServoTimer1, pero como solo ocupé uno, no fue necesario.

Monté el servo en el tanque para medir la distancia entre el servo y mecanismo del excusado, y con el alambre "conecté" el servo con el mecanismo, para que el servo jalara la palanca. Hice algunas pruebas con el Arduino, para ver cuantos grados tenia que hacer girar el servo y de donde a donde, finalmente ví que, en la posición que lo coloqué, necesitaba hacerlo girar de 180° a 30°.
Si tú piensas realizar este proyecto, asegúrate de cerrar la llave de paso de agua del excusado, para no desperdiciar agua en pruebas.

Después de todo esto lo que quedaba era solo programación. A continuación pongo el codigo que escribí, para que cualquiera pueda usarlo o modificarlo a su gusto.

/*
Arduino Flush-O-Matic
por Mauricio Gomez
toolex.blogspot.com
mauriciogomezp@gmail.com
www.udlap.mx
*/
#include
#include

LCD4Bit lcd = LCD4Bit(2);
ServoTimer1 servo1;
int ledPing = 4;
int ledPinr = 3;
int buttonPin = 5;
int valor = 0;
int val = 0;
int bitPin = 13;

void setup()
{
Serial.begin(96000);
Serial.println("Ready");
servo1.attach(10);
lcd.init();
pinMode(ledPing, OUTPUT);
pinMode(ledPinr, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(bitPin, OUTPUT);
}

void loop()
{
val = digitalRead(buttonPin);
digitalWrite(ledPinr, LOW);
digitalWrite(ledPing, HIGH);
servo1.write(170);
lcd.clear();
lcd.printIn("Ready");
lcd.cursorTo(2, 0);
lcd.printIn(" ");
if (val == LOW){
digitalWrite(ledPing, LOW);
digitalWrite(ledPinr, HIGH);
lcd.clear();
lcd.printIn("Flushing...");
servo1.write(0);
digitalWrite(bitPin, HIGH);
delay(4200);
digitalWrite(bitPin, LOW);
digitalWrite(ledPinr, LOW);
digitalWrite(ledPing, HIGH);
lcd.clear();
lcd.printIn("Well done!!");
servo1.write(170);
delay(1500);
lcd.clear();
lcd.printIn("Loading...");
lcd.cursorTo(2, 0);
lcd.printIn("Please Wait");
digitalWrite(ledPing, LOW);
digitalWrite(ledPinr, HIGH);
delay(22000);
lcd.clear();
lcd.printIn("Almost Ready...");
delay(19000);
digitalWrite(ledPinr, LOW);
digitalWrite(bitPin, LOW);
delay(250);
digitalWrite(ledPinr, HIGH);
digitalWrite(bitPin, HIGH);
delay(250);
digitalWrite(ledPinr, LOW);
digitalWrite(bitPin, LOW);
delay(250);
digitalWrite(ledPinr, HIGH);
digitalWrite(bitPin, HIGH);
delay(250);
digitalWrite(bitPin, LOW);
}
}

la lógica de la programación no se me da mucho, así que si lo quieren criticar, sientanse en completa libertad.

Los leds, le pushbutton y el sumbador los coloqué de la siguiente forma:

pin2 = LCD
pin3 = led rojo
pin4 = led verde
pin5 = pushbutton con una resitencia de 4.7k a 10k conectada a Vcc, y del otro lado del pushbutton a tierra (GND). Yo le pegué una moneda (10 centavos) al pushbutton para que fuera más fácil de presionar
pin6 = LCD
pin7 = LCD
pin8 = LCD
pin9 = LCD
pin10 = data servo
pin12 = LCD
pin13 = + sumbador, del otro lado a tierra con una resitencia de 1k, esto es para que no suene tan fuerte el sumbador

todo los pines usados son los digitales y sólo fueron usados los mencionados anteriormente.

La configuración del display que yo tengo (genérico Hitachi 44780u) queda de la siguiente forma:

pin1 = GND
pin2 = Vcc
pin3 = GND
pin4 = Arduino pin12
pin5 = GND
pin6 = Arduino pin2
pin11 = Arduino pin6
pin12 = Arduino pin7
pin13 = Arduino pin8
pin14 = Arduino pin9

En general, el único problema que tuve fue el del servo y el lcd, fuera de eso fue un proyecto que pude hacer en un solo día. La idea original era poner un sensor de aproximación, en lugar del pushbutton, y que el dispositivo fuera automático, pero desgraciadamente no cuento con un sensor de ese tipo. En cuanto lo tenga haré la actualización. Además, este pretende ser una solución económica para el hogar en comparación con un fluxometro electrico de Helvex como los que hemos visto en los centros comerciales.

Lo he tenido instalado desde el fin de semana y ha funcionado perfectamente. Mi rommie se sorprendió al verlo, diciendo entre risa: esta muy chido! (vacano!/copado!/cool!)

Finalmente les dejo un video para que vean su funcionamiento




Cualquier duda, comentario o sugerencia serán siempre bien recibidas.

jueves, 1 de mayo de 2008

M-Knob


Este podría ser de las primeras creaciones que hago desde cero, el M-Knob no es más que una cabeza de video montada sobre la tapa de una lata y con el scrolling de un mouse, que es lo que hace? bueno pues, exactamente eso, el scrolling de un mouse.

La idea la tomé a partir de un post del blog de Make Magazine, vi el ejemplo de como se podría hacer de forma alernativa un knob como el de Griffin.

Primero me decidí a hacerlo porque tenia los materiales necesarios para construir uno, incluso pensé en hacerlo mejor que en el ejemplo que ví. Pude ver que la cabeza que ahí usan es de una videocasetera, por lo tanto la cabeza es un poco grande y probablemente incomoda. También pude observar que la base donde está montado, es un rollo de masking tape, lo cual lo hace aún más grande y estorboso.

En mi caso, la cabeza de video la obtuve de una video cámara, lo cual es más chica que la de una video casetera. y para solucionar lo de la base se me ocurrió montarla en la tapa de una lata de galletas. Unicamente tengo (tenía) dos mouse, pero inalambricos, así que tuve que sacrificar uno para obtener el scrolling. Finalmente también, pensé en ponerle 4 leds en las ranuras de la cabeza para que aparentara tener una luce nice como la del Griffin.

Algunas fotos del proceso:

Primero desmonté la cabeza, y le quite todo lo que no servía, así dejando espacio por dentro para el circuito de los leds.

Después hice un hoyo en la tapa de lata con el Dremel, haciendo que quede a la medida de la cabeza con sus tornillos, para usar sus propios tornillosHice un circuito PCB, que en realidad son solo dos pistas de cobre para hacer contacto con los leds y que prendieran junto con la cabeza de video

lo monto en la parte inferior de la cabezaCon el taladro hice lo huecos para meter los leds en la parte superior de la cabeza de video, y con el dremel hice como un canal para cablearlos en paralelo.

Monté todo y le acomodé el scrolling del mouse, al cual le soldé los cables para hacer la conexiónAl otro mouse, le soldé también los cables en la parte correspondiente del scrolling, para hacer la conexión.
Y este es el resultado final, me hubiera gustado que el jack del mouse, quedara por dentro, pero los cálculos me fallaron y no quedó espacio suficiente por dentro del mouse.




Espero sus comentarios.

I will wait for your comments.

Mis herramientas

Si algo he aprendido muy bien de mi padre, ha sido hacer las cosas con calidad, y eso quiere decir que sean seguras, resistentes, con buen acabado y buen material. Mucho de esto empieza desde tener la herramienta adecuada y sobre todo saberla usar adecuadamente, digo, si uno no sabe ni siquiera barrer probablemente menos sabrá usar un taladro.

Aquí presento algunas de las herramientas que ocupo para realizar ... cosas

Un taladro inalambrico, muy cómodo y útil para trabajos ligeros, la batería dura lo suficiente, pierdes menos tiempo en conectar y desconectar, o encontrar una extensión.


Atril con lupa, caimanes y base para cautín.

Multímetro, pinzas de punta, punta y corte, corte, cutter, y flexómetro.

Esta es de las mejores herramientas que puede uno tener, un Dremel MultiPro, muy útil y práctico de usar.


Tal vez no sean consideradas herramientas pero para mi sí lo son: protoboards, leds, matriz de leds, pantalla lcd, baterias recargables, servos, y por supuesto el Arduino Diecimila.