GNU/Linux Proyectos Hardware.

Rebuscando por internet he encontrado bastantes proyectos hardware o electrónicos básicos creados entorno a sistemas GNU/Linux.
Pese a que no tengo más que los conocimientos más básicos sobre electronica, algunos de los proyectos me han parecido lo suficientemente interesantes como para intentar realizarlos, y en algunos casos han salido lo suficientemente "bien" como para poder resultar útiles.

Por ahora he puesto información de los siguientes proyectos:


Joystick "Profesional"

Para el systema de ocio necesitaba un buen joystick para jugar a los juegos del xmame como si se tratase de una máquina recreativa real.
Buscando por internet encontre muchas páginas dedicadas a la construcción de joysticks robustos para conectar con el ordenador. Entre ellas, una de las mejores y más completa, en realidad una especie de portal sobre el tema es www.arcadecontrols.com.
El sistema que seleccione para el joystick fue la de conectar interruptores a un controlador de teclado con el fin de generar la pulsación de distintas teclas cada vez que cerramos uno de estos interruptores.
Este sistema de conexión con el ordenador mediante el controlador de teclado es el más cómodo para usar con el xmame puesto que la mayoria de los juegos usan joysticks de contactos y se manejan perfectamente bien con teclas.

Proceso de construcción

Para la construcción de este joystick compre mediante internet un mando de juegos y tres botones de máquina recreativa a un distribuidor de este tipo de piezas. Concretamente yo se lo pedi a Industrias Lorenzo, aunque supongo que habrá multitud de distribuidores de este tipo en cada pais. Tanto el mando como los botones terminan en microinterruptores que tienen la ventaja de ser muy resistentes y además intercambiables.
Como controlador de teclado se puede realizar un circuito con algún microcontrolador que genere las señales de teclado correspondiente, o decantarse por la solución fácil que consiste en coger un teclado viejo destriparlo y quedarse con el controlador de teclado que viene.
Todos estos controladores al final tienen unas conexiónes a una matriz de filas y columnas que hacen que cuando se pulse una tecla se cierre el circuito desde una columna a una fila.
Lo que debemos hacer es ir uniendo cada una de las filas con cada una de las columnas y apuntar las teclas que se generan. Luego debemos seleccionar las teclas que nos interesan, normalmente cursores y demás y conectar estás filas y columnas concretas con cada uno de los microinterruptores de los botones y de los microinterruptores del mando.
La dificultad mayor suele ser realizar estas conexiones entre los microinterruptores y el controlador de teclado que suele tener conectores especificos para la matriz de ese teclado.
Yo al final opte por desestañar el conector que venia y con paciencia poner un conector más sencillo.
Existe también un problema de generación de teclas fantasmas o no detección de la pulsación de muchas teclas a la vez. Este problema se suele solucionar o minimizar poniendo unos diodos, pero en mi caso no tube esos problemas por lo que no me tube que preocupar. De todas formas existe una descripción del problema y posibles soluciones en www.arcadecontrols.com.

Al final me decidi por poner una caja aparte para el controlador en el que además deje tres botones para seleccionar entre uno y dos jugadores y "meter monedas". Y luego conectar esta caja con la que realmente tenia el mando y los botones de disparo de forma que pudiese tener bastante separado el mando del ordenador a la hora de jugar.
Al final lo más dificil no deja de ser el hacer el bricolage casero para realizar un soporte para el joystick que sea resistente y medianamente agradable a la vista :-)
En mi caso lo que es la caja para el mando la he construido con una plancha de "metacrilato" en el que he confeccionado las piezas que luego he unido mediante unas escuadras.

Fotos

Pongo aquí unas pocas fotos de como ha quedado el "invento" (si pulsas en una cualquiera de ellas podrás ver la foto con más resolución).




Puedo asegurar que funciona y que funciona muy bien, además como tengo un monitor de 21" es como si estubiese jugando en la máquina recreativa original :-)


Receptor infrarojo serie (Lirc)

Con el fin de poder controlar de forma cómoda el sistema de ocio decidi hacerme un circuito receptor infrarojos para poder usar el mando de la tele como dispositivo de entrada general del sistema. Toda la información necesaria para la construcción del receptor y el software necesario para controlarlo se puede conseguir en el proyecto LIRC, que es un proyecto
muy interesante
para controlar un linux via infrarojos.
El circuito que he usado es el siguiente:

+-----------------------+ 3                           R1 (4k7)
|               data -> +--------------------------------+------------o DCD
|                       |                 _______        | 
|      ______________   |                | 78L05 |      | |   D1 (1N4148)
|     /                 |    +-----+-----|OUT  IN|--+   | |
|    (                  | 2  |     | +   |__GND__|  |    |      | /|
|     \______________ + +----+   -----       |      +----+------|< |--o RTS
|                       |        -----       | IC2              | \|
|                       | 1        |         |
|                     - +----------+---------+------------------------o GND
+-----------------------+      C1 (4,7uF)

circuito receptor infrarojos serie (www.lirc.org)

El receptor que uso actualmente es el "Sharp IS1U60", aunque he realizado otro circuito para un amigo con el TSOP 1738.
Realice un primer prototipo que para mi sorpresa funciono, y por supuesto lo que iba a ser una simple prueba se quedo definitivamente así puesto que segui la máxima de "Si funciona, no lo toques" :)
Aunque ahora el circuito está metido en una dicreta caja, inicialmente estubo usandose en su estado original, con el que tenia el siguiente aspecto:



Finalmente una vez metido el receptor en su correspondiente caja, el circuito quedo con el siguiente aspecto:




Este receptor se conecta a un puerto serie libre, que será controlado por el módulo lirc.
Este módulo se encarga de detectar cada uno de los pulsos enviados por el mando remoto que posteriormente serán decodificados a nombres de teclas por otras aplicaciones del proyecto lirc.
Este mismo proyecto provee de unas librerias que permiten a los programas recibir los eventos provenientes del infrarojo como si se tratase de eventos de teclado o de ratón. Además para los programas que no están preparados para recibir estos eventos, existen algunas pequeñas aplicaciones que permiten enviar eventos de movimientos de ratón o teclas a los programas dependiendo de los eventos generados por el mando infrarojo. De forma que se puede manejar mediante el mando la mayoria de las aplicaciones aunque no estén preparadas para ello.
Actualmente en el sistema de ocio se usa el mando para manejar los menús, el programa de televisión, el reproductor de cds, el de mp3, y el de DivX.


Display con teclado

Este proyecto surgio no de una necesidad sino de la casualidad, puesto que en mi trabajo nos dieron unos displays de 16x2 como muestras y como me gustan este tipo de cosas decidi hacer algún tipo de circuito con el.
Inicialmente pense en conectar mediante comunicación serie el ordenador con un Pic que fuese el que controlase el display, pero al final cuando vi lo fácil que era usar el display mediante el puerto paralelo me decidi por conectarlo de este modo, sobre todo teniendo en cuenta que no tengo ni idea de como programar los Pics :-),

Además encontre por internet un esquema de como usar 4 lineas más del puerto paralelo como entradas para conectar 4 teclas al mismo puerto. Así que decidi integralo todo en una bahia de 5 1/4 para poder usarlo en mi ordenador junto con el sistema de ocio.

Software

Para el software probe varios programas y la solución más sencilla y a la que más facilmente se le podia meter mano fue un driver para el kernel que genera un dispositivo (/dev/lcd) en el que puedes escribir directamente lo que quieres que salga en el display.
Este driver se puede bajar de sourceforge.
En la versión del cvs ya hay soporte para el pequeño teclado de 4 teclas que tengo puesto. Esta parte la he programado yo, y espero poder colaborar más activamente con el proyecto puesto que es un proyecto sencillo pero muy útil.

Hardware

Realmente este proyecto no tiene un circuito sino que solo son conexiones y unas pocas resistencias. Los esquemas de conexión del lcd los puedes encontrar en la pág del driver. En cuanto a las teclas se deben conectar siguiendo el siguiente esquema:
       	_________ +5v
DB25    | | | |
pins    R R R R 4x 4k7
        | | | |
10  --- + | | |
11  ----- + | |
12  ------- + |
13  --------- +
        | | | |
       	\ \ \ \  keys A B C D
       	| | | |
        +-+-+-+--- GND

El display a quedado de la siguiente manera:


Conexiones


Una vez montado


Por ahora no he realizado todo el software para integrar este dispositivo con el sistema de ocio, la idea es poder sacar un feedback de la pulsación de teclas del mando de control remoto, y en los tiempos muertos sacar información general del tipo de carga de cpu, de disco, hora, y si estamos conectados a internet o no.
Con las teclas del display quiero controlar unas funciones básicas como apagar el ordenador, o cambiar el modo de visualización.
Por ahora solo he programado un pequeño ejemplo para sacar la hora y la carga de la cpu y para probar el funcionamiento de las teclas.


Si quieres ponerte en contacto conmigo:

eferro@inicia.es