Proyectos con GNU/Linux.
La verdad es que las posibilidades que da GNU/linux son
espectaculares, por lo que cualquier idea por descabellada que parezca
a priori normalmente puede ser implementada en linux, es más
normalmente hay que mirar mucho en la web para ver si alguien ya ha
realizado lo mismo (que es lo más habitual).
Actualmente solo tengo realizada la descripción de uno de los
proyectos que he realizado, el Sistema de Ocio.
Sistema de ocio
Este proyecto como muchos otros nacio de una necesidad, tan sencilla
como que no teniamos televisión ni cadena musical, pero si que
teniamos un ordenador con linux, y una capturadora de tv. Así que nos
planteamos diseñar un sistema que permitiese utilizar este ordenador
como cadena musical, televisión y para jugar pero de una forma cómoda
y sin necesidad de usar el teclado ni el ratón.
Funcionamiento y menus basicos
Para la implementación de este proyecto se nos ocurrio que lo mejor
seria diseñar una serie de menus jerarquicos que fuesen faciles de usar
y que permitiesen ejecutar nuevos menues o activar programas concretos
para ver la televisión, escuchar un cd, o jugar.
Al principio se penso en un programa que manejase todos estos menues,
pero al final nos decidimos por controlar cada menu de forma
independiente y simplemente ejecutar cada menu desde el menu
anterior. Estos menues debian ser genericos de forma que el sistema
fuese muy facilmente ampliable y modificable, por lo que se decidio
realizar un pequeño programa que permitiese crear cada menu
simplemente con una descripción textual de como debe ser el menu.
Por ahora se han creado los siguientes menus dentro del sistema:
- Menu principal (que permite ver television, entrar en el menu de
musica, el menu para grabación de cds que todavia no está
implementado, el menú de juegos (xmame) o el menú de sistema)
- Menú de música, permite por una parte escuchar un cd de música, un
cd de mp3 o escuchar los mp3 que tengamos en el disco duro.
- Menu de juegos, permite lanzar el emulador máquinas recreativas para
lo que se muestran unos menus que permiten seleccionar entre elegir
entre todos los juegos (unos 200) o entre los de un estilo concretos
(puzzles, arcades, favoritos, etc).
- Menu de sistema, en este menu se pueden realizar las tareas básicas
de control del sistema, por ahora las funciones que están disponibles
son reiniciar el ordenador, apagarlo o sacar un terminal, para poder
trabajar un poco.
El menu más complicado es el de música puesto que para hacer que el
tema de los mp3 fuese generico se decidio crear un menu dinamico
distinto para cada cd que se introdujera, por lo que al seleccionar la
opcion de escuchar mp3 de un cd, se espera un cd, se comprueba que sea
de datos y si lo es se leen los nombres de ficheros y se genera un
menu dinamico mostrando una opción por cada directorio del cd que
contenga mp3, más una opción que permite ejecutar una lista de mp3 con
todos las canciones del cd.
Este mismo sistema de generar menus dinámicos también se usa para el
caso de querer escuchar los mp3s que contenga el disco duro, e incluso
más adelante quizás se use para leer todos los videos de un cd.
Hardware
Ahora mismo este sistema está siendo usado en una AMD K6-2 a 300 Mhz
con 128M de Ram, este sistema es perfectamente válido para las
opciones que tiene implementado el sistema en este momento, pero se
queda algo corto para la reproducción de peliculas comprimidas con
DivX o Mpeg 4.
Lo que si que es importante para un sistema de este tipo, sobre todo
para ver las peliculas de DivX o para poder jugar con el xmame es
tener un buen monitor, en mi caso el monitor que tiene este sistema es
un Nec de 21"
En cuanto a hardware adicional hay un par de elementos que aunque no
son extrictamente necesarios si que son muy convenientes:
- Sensor de infrarojos. Por ahora uso uno realizado en casita y
siguiendo el esquema de la página del lirc. Es bastante fácil de
hacer y además no es necesario que las soldaduras y demás sean
perfectas puesto que yo lo llevo usando más de un año y está
realizado en plan chapuza sobre una placa de prototipos.
A parte de este circuito se puede usar cualquiera de las otras
opciones de control que permite el lirc, que van desde los
receptores de algunas tarjetas de tv, hasta el control por red.
Teneís una descripción más completa en la página de proyectos hardware
En cualquier caso el sistema es controlable mediante el teclado,
pero en este caso pierdes una de las grandes ventajas del sistema,
la comodidad.
- Joystick compatible con linux. Anteriormente usaba un
mando de supernintendo conectado al puerto paralelo del
ordenador. Pero ahora ha sido sustituido por un mando de máquina
recreativa conectado al puerto de teclado del ordenador.
Puedes ver una descripción más detallada del joystick en la
página de proyectos hardware.
- Para poder tener conectado a un mismo tiempo el teclado y el mando
de máquina estoy haciendo un spliter de teclado es decir un
circuito que permite tener una especie de "Y" de teclado y
conectar dos a una única entrada de teclado. Por ahora no he
podido probarlo y la verdad es que me da miedo hacerlo con mi
ordenador :)
Software
Ahora mismo el sistema es completamente funcional, aunque poco a poco
le voy introduciendo nuevas cosas.
Como programas base para el control de los menus y de cada una de las
operaciones he creado algunos scripts en python, entre los cuales
están:
-
dinmenu.py
Encargado de manejar los menus de pantalla.
-
mp3list.py. Encargado de crear listas de reproducción de
mp3, a partir de un cd o de un directorio.
-
genmenump3.py Que crea menus para usar con dinmenu.py a
partir de las listas creadas con mplist.
-
gmesg.py Que visualiza un mensaje en una ventana gtk
durante un tiempo especificado.
-
ocio.py Que es el motor del proyecto y que decide que
menu se debe cargar en cada momento
También hay algunas otras utilidades realizadas en C que permiten
esperar a que se cierre la bandeja del cd o que consultan el tipo de
cd que tenemos metido en la bandeja.
Por supuesto, todos estos scripts simplemente sirven como unión de los
programas de televisión, reproducción cd cds, etc, que son los que
realmente hacen todo el trabajo.
Uso los siguientes programas:
| Televisión | xawtv |
| Reproducción MP3 | xmms |
| Reproductor de CD | xmms |
| Reproductor AVI, DIVX | MPlayer |
| Teletexto | Alevt |
Para el sistema de ocio estoy usando una Redhat 7.1 con la que estoy bastante
contento excepto por la cagada de compilador que han metido.
El ordenador entra directamente en X con unos ficheros de arranque
especificos y con un usuario ocio que es el que tiene todos los
programas.
Este usuario es un usuario normal que tiene permisos para acceder
mediante sudo a ciertos programas como el de grabación de cds.
Capturas
Pongo aquí unas capturas de algunos de los menus del sistema
(si pulsas en una cualquiera de ellas podrás ver la foto con más resolución).
download
El proyecto está funcionando y dimagos que terminado (por lo menos las
carácteristicas que en este momento tiene implementadas) pero el caso
es que tanto el código como los ficheros de configuración están
desorganizados y sucios, por lo que es dificil distribuir el sistema
como un todo.
Pretendo que esto cambie y dejar disponible en esta misma web un
paquete de fácil instalación. Pero por ahora si alguien quiere los
ficheros del proyecto (para curiosear, o para arriesgarse e intentar
usarlos) que no dude en pedirmelos que muy gustosamente se los
enviare.
Ah, se me olvidaba, por supuesto las pocas líneas de código que he
hecho para el sistema son GPL.
Si quieres ponerte en contacto conmigo:
eferro@inicia.es
