miércoles, 15 de diciembre de 2010

Oferta interesante para próximos inventos

Si algún enamorado de la electrónica y/o fan de Arduino está leyendo, seguramente habrá leído en algún foro que los accesorios del mando de la wii se pueden utilizar para proyectos. Por si acaso no lo sabéis el wii motion plus tiene 3 giroscopios y el nunchuck tiene 3 acelerómetros, además de un joystick y un par de botones.

La forma de utlizarlo en vuestros proyectos es bastante sencilla puesto que los dos accesorios usan para comunicarse con el mando el protocolo I2C. No os hace falta mucha teoría, sólo saber que casi todos (por no decir todos) los microcontroladores soportan I2C y que, por supuesto, arduino también lo hace. Para arduino existe la librería Wire.

Dejo algunos enlaces para saber cómo usarlos:
nunchuck y arduino
wii motion plus y arduino


Para el que no quiera desarmar el conector de los accesorios, existe un adaptador para usarlo de forma muy fácil y sencilla. Algunos enlaces de tiendas online que lo tienen:
bricogeek
sparkfun

Y ahora lo interesante. En las tiendas GAME, no sé si en todas las de España, está a la venta (de oferta) un mando nunchuck inalámbrico por 6,95€. El precio oficial del normal (que tiene cable) es de 19€ creo recordar. Yo ya me he hecho con uno y lo he abierto.




No sé si usarlo tal cual, es decir, como un mando inalámbrico, o salvajearlo un poco. Ya veremos.

Por cierto, el mando va sólo con una pila AAA. Esto quiere decir que seguramente tendrá un booster, un circuito que sirve para elevar la tensión, porque ni el acelerómetro que lleva va alimentado a esa tensión. El booster eleva la tensión pero conservando las leyes de la Física, es decir, de 1,5V y 1A no se pueden sacar 3000V y 100A. Hay que recordar que P=I*V en ambos lados y sumar las pérdidas.

Dejo un enlace de la gran web de Pablin sobre un montaje elevador de tensión. En la sección de electrónica hay multitud de montaje útiles.

viernes, 3 de diciembre de 2010

Programando

El código está dividido en ficheros y cada fichero corresponde al manejo de cada uno de los integrados. De este modo la correspondencia queda así:

- sonido.h  -> Librería para el manejo del ecualizador.
- DisplayIC.h DisplayIC.cpp -> Librería para el manejo del display y el teclado
- Radio.h Radio.cpp -> Librería para el manejar el estado general de la radio del coche
- TEA5767.h TEA5767.cpp tealibtest.pde -> Librería para el manejo del módulo de radio. Ya que este módulo es comercial, incluyo también un ejemplo de uso por si alguien estuviera interesado en la librería para algún proyecto.
- TimedFunc.cpp TimedFunc.h timedf.pde -> Librería para programar ejecución de funciones de forma cíclica con intervalo variable, programar funciones que se ejecuten sólo una vez pasado cierto tiempo y un ejemplo para usarla.

- radioMazda.pde -> el programa principal

Evidentemente no voy a explicar el código, pero si no sabéis programar con Arduino es suficiente decir que existen dos funciones principales setup() y loop() (que son llamadas por un main() que no es visible al usuario). La función setup() se ejecuta sólo una vez al comenzar y se encarga generalmente de configurar puertos, periféricos, variables, etc... La función loop() se ejecuta de forma infinita y es donde se programa todo el comportamiento de la placa.

Quedaría como algo así:

main()
{
   setup();
   while (1) loop();

}

El programa básicamente lo que hace es mirar el teclado de la radio y actuar en consecuencia. Además gestiona una interrupción para actualizar el reloj de la radio.

Aprovechando que la radio siempre tiene corriente, el reloj se mantiene en RAM y se actualiza con una interrupción. Cuando la radio está apagada el arduino pasa a modo bajo consumo en el que se apagarán todos los periféricos excepto el timer responsable de generar la interrupción. No es que el consumo de esta placa sea importante en este caso (recordemos que la fuente de alimentación es la batería del coche) pero nunca está de más el no desperdiciar los amperios!

El Arduino y la Radio

La placa que conecta el Arduino con la radio la hice sobre placa de perforada por comodidad. No era una placa difícil y así es más rápido.

Lo mejor del Arduino es que teniendo tiras de pines puedes hacer un "shield" (así es como llaman a las placas que conectas encima del arduino) bastante rápido. Los shields comerciales son "estacables" (dándole patadas al diccionario), es decir, puedes colocar unos encima de otros y siguen funcionando, aunque esto no vale con todos.

La placa debía disponer de:
- 2 conectores acodados para conectar las cintas planas que llevan las señales desde la radio hasta el arduino
- El placa del TEA5767
- Un conector para llevar la antena desde la radio hasta el TEA5767
- Un led verde. Imprescindible en cualquier placa que se precie es saber que está alimentada!!!

Una fotillo de como quedó antes de cortar la placa


Vista por debajo (las conexiones hechas con hilo de wrapping). Aquí se ve como se llevan las señales desde los conectores acodados hasta los puertos del Arduino.

Conexión del TEA5767 usando hilo de wrapping y tiras de postes hembra. Los dos condensadores que se observan son para quitar el posible nivel de continua de las señales de audio antes de llevarlos al ecualizador de la radio.

La solución del conector del cable de antena no es la más elegante pero funciona.