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
