Mar
07
2007

LCD Crystalfontz USB en Linux


Este es un manual que explica cómo utilizar un LCD USB Crystalfontz 634. Concretamente, el de la imagen de abajo es un CFA634-TFB-KU .

LCD_USB_1

No garantizo la absoluta eficacia del producto al seguir este manual, simplemente pretendo que sirva de referencia ante la escasa documentación en español para quien quiera hacer funcionar su LCD USB/serie Crystalfontz en Linux.

Software

  • Linux kernel 2.6. En mi caso particular concretamente un 2.6.11. Este LCD también funciona con la serie 2.4 del kernel pero hay que instalar el driver FTDI aparte.
  • lcd4linux. Lo considero el mejor software para usar un LCD en Linux. También existen otros programas que puedes examinar por tu cuenta como lcdproc y lcdmod.

Configuración del Kernel

A no ser que tu distribución detecte el conversor serie-usb del LCD automáticamente, habrá que compilar un nuevo kernel para dar soporte al mismo. Puedes saber si está detectado abriendo una consola como root y ejecutando:

# cat /proc/bus/usb/devices

Deberás buscar entre tanto texto un párrafo referente a tu LCD en el que ponga algo de Crystalfontz. En mi caso:

T: Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0403 ProdID=fc09 Rev= 2.00
S: Manufacturer=Crystalfontz
S: Product=Crystalfontz CFA-634 USB LCD
S: SerialNumber=CFC850NR
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=490mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Si tu distribución ha detectado el conversor del LCD, en la parte referente al driver (en negrita) debería aparecer identificado ftdi_sio y podrás omitir este paso. Si no lo ha detectado, en ese apartado no pondrá nada, y tendrás que compilar un kernel nuevo.

No voy a explicar aquí cómo se configura/compila/instala un kernel para no hacer redundante este documento, me limitaré a decir qué parte son esenciales para el funcionamiento del LCD:

Device Drivers --->
USB support --->

Y selecciona UHCI, OHCI o EHCI según tu modelo de placa, para tener soporte USB. En mi caso (y en el de la mayoría) elijo EHCI y UHCI.

Device Drivers --->
USB Support --->
USB Serial Converter support --->
<*> USB Serial Converter support
<*> USB FTDI Single Port Serial Driver (EXPERIMENTAL)

Si todo ha ido bien, al arrancar con el nuevo kernel, tu LCD ya debería estar identificado con el driver ftdi_sio como he puesto antes. Crytalfontz provee mediante la página del producto de las fuentes de un pequeño programa escrito en C con el que podrás testear el aparato. Aunque ya viene especificado en el readme dentro del archivo comprimido, al ejecutable resultante se le aplican dos parámetros (puerto y velocidad en este orden). En mi caso el puerto es /dev/usb/tts/0 y la velocidad 19200 baudios (la versión anterior usa 9600).

Instalación de lcd4linux

Debido a que actualmente la última versión que se encuentra en el árbol oficial de paquetes de Gentoo (la distribución que uso) es la 0.9.11, he compilado a mano la última versión sin usar el sistema de Gentoo. El motivo de esto es que la última versión (0.10) supone una reescritura total del código y afecta entre otras cosas al formato del fichero de configuración, de modo que usar una versión inferior invalida totalmente la explicación de este manual. Puedes ir a su página oficial, bajarlo y descomprimirlo.

./configure
make
make install

Nos situamos en el directorio donde estén descomprimidas las fuentes y, como acabo de especificar, usamos el método de siempre: configurar, compilar e instalar. En la documentación de la página oficial se incluye un script que podemos usar como servicio al inicio para que cargue automáticamente al arranque.

Configuración de lcd4linux

Para una correcta configuración tendremos que hacer uso de la documentación, que nos guiará según el modelo de LCD que tengamos. Esta es la estructura básica muy resumida y sintetizada que servirá para comprender mejor cómo funciona. En la página de lcd4linux puedes encontrar un fichero de configuración de ejemplo.

Display XX {
}

Plugin XX {
}

Widget XX {
}

Layout Ejemplo {
Row1 {
Col1 'XX'
}
Row2 {
Col1 'XX'
Col10 'XX'
}
Row3 {
Col1 'XX'
Col11 'XX'
}
Row4 {
Col1 'XX'
Col11 'XX'
}
}

Layout 'Ejemplo'

Variables {
tick 500
tack 100
minute 60000
}
  • Display. Aquí se indica el tipo de LCD que tienes y sus parámetros de configuración como pueden ser el puerto, la velocidad o el driver que usa.
  • Plugin. Sólo sirve para configurar los parámetros en caso de que uses alguno de los plugins de que dispone lcd4linux.
  • Widget. Pueden haber tantos como necesites, digamos que son los elementos preconfigurados que luego insertarás mediante Layout.
  • Layout. Aquí es donde colocarás los widgets que hayas preconfigurado, como se puede ver a simple vista, se colocan empezando a contar en la columna que se especifique, dentro de la fila que estemos configurando.
  • Variables. Son variables de reloj internas, los valores por defecto suelen ser válidos.

Layout ‘Ejemplo’ sirve para decir a lcd4linux qué esquema queremos usar. Esto es útil porque podemos tener varios preconfigurados, y alternar entre ellos cambiando sólamente el nombre de esta variable.

Para verlo funcionar por primera vez podemos usar cualquiera de los widgets y layouts que tiene el archivo de configuración de ejemplo, y luego ir personalizándolo poco a poco. Una vez tengamos el fichero de configuración hecho a medida, lo llamaremos lcd4linux.conf y lo copiaremos en la carpeta /etc, para lo cual tendremos que tener permisos de root.

Ejecución y resultado

Ya tenemos el soporte necesario en el kernel y lcd4linux está configurado. Desde consola y con permisos de root, ejecutamos:

# /usr/local/bin/lcd4linux

y si todo ha ido bien, el LCD debería empezar a mostrar información… voilá!.

Aquí tenemos a mi LCD dando sus primeros pasos en Linux. Sólo muestra dos líneas porque usé la configuración de mi antiguo LCD de dos líneas, ahora mismo lo he reconfigurado para que muestre información en las cuatro líneas.

LCD_USB_2

Bueno, eso es todo, espero que esta guía te haya servido de ayuda, y si no te ha servido de ayuda, que por lo menos hayas disfrutado viendo la fotos de los LCD…

Written by Javier Rodriguez in: Linux,Tecnología |

No hay comentarios »

RSS feed for comments on this post. TrackBack URL

Leave a comment

Theme: TheBuckmaker.com Blog Themes | Hostpapa customer, Berlin