Hace mucho tiempo utilicé unos displays LCD con el controlador HD44780 de Hitachi para mostrar información del PC con Windows y Linux. Notificaciones cuando recibíamos correo, temperatura de la CPU, carga de procesos, memoria disponible, información meteorológica, …. todo esto y mucho más. Ahora que estoy jugando con la Raspberry Pi y escribiendo entradas en Xataka y en Xataka Home sobre la misma, uno de los proyectos es conectar uno de dichos displays a la Raspberry Pi. En esta entrada os voy a contar cómo conectar y hacer funcionar un display LCD en vuestro Mac.
Comprando un display adecuado
El display que he elegido para este proyecto tiene conexión USB para poder conectarlo a nuestro Mac. El LCD tiene un conector USB interno, por lo que hay que hacer un apaño para tener un conector USB que podamos conectar al Mac. Consiste en utilizar un cable alargador USB y modificar el conector hembra para poder acoplar el conector del display (¡¡¡OJO a la polaridad si lo hacéis vosotros!!!). Pero hay displays que ya cuentan con una conexión USB normal, así que si no queréis molestaros o comprar un cable adaptador podéis ir por dicha opción.

Software necesario para mostrar información en el display
La buena noticia es que hay software disponible para Mac para mostrar la información. La mala, que tendremos que compilarlo e instalarlo nosotros mismos para que funcione. Si no tenemos experiencia en programación o en compilar programas puede ser un reto hacerlo funcionar, pero voy a intentar que las instrucciones sean lo más sencillas y asequibles para todos los públicos. Lo único que necesitaremos será tener cierta fluidez con el Terminal y con escribir comandos de texto en el mismo.
1. En primer lugar, necesitaremos tener un compilador. La forma más sencilla es crear una cuenta gratuita de desarrollador en Apple, si no la tenemos ya. Una vez realizado el trámite, debemos descargar Command Line tools for Xcode para nuestra versión del sistema operativo que tengamos instalado en nuestro Mac.
2. Paso dos, instalar Homebrew, que nos permite instalar paquetes de forma automática desde un terminal con el comando Brew. Esto lo necesitaremos porque tenemos que descargar unas librerías llamadas libusb para poder comunicarnos con el display. Pero vayamos paso a paso, para instalar Homebrew sólo tenemos que escribir este comando en el Terminal:
ruby -e “$(curl -fsSkL raw.github.com/mxcl/homebrew/go)”
En esta página (STEP 3) tenemos más información sobre cómo instalar Homebrew y comprobar que todo está bien con brew doctor y brew update
Una vez instalado homebrew, debemos instalar algunas librerías, para ello escribimos en el terminal:
brew install pkg-config
brew install libusb
brew install libftdi
3. Descargamos LCDproc, el software que tenemos que compilar e instalar para utilizar el display LCD.

Ya estamos en el ecuador del proceso. Si has llegado hasta aquí, probablemente quede lo más sencillo de todo.
En esta página tenemos información de LCDproc, tanto de los displays LCD soportados como sobre la configuración del mismo.
A día de hoy la última versión es la 0.5.6. La descargamos y la ponemos en el escritorio. Con un doble clic se descomprimirá y nos creará la carpeta donde tenemos todo lo necesario para seguir.
Nos vamos a un terminal, y escribimos:
cd Desktop
cd lcdproc-0.5.6
Ahora toca configurar LCDproc para que podamos compilarlo e instalarlo. Copiamos y pegamos esto en el Terminal y pulsamos intro:
./configure --prefix=/usr/local/ --enable-drivers=all --includedir=/usr/local/include/
OJO a la línea anterior, antes de prefix, enable e includedir van dos signos menos seguidos. Cuando acabe, tenemos que dar:
make -j6
y luego:
sudo make install
Seguro que ya os alegra saber que ya tenemos la aplicación compilada e instalada. Ahora sólo nos queda configurarla para que aparezca alguna cosa en nuestro display LCD. Si nunca habéis usado nano, deciros que es un editor de texto muy sencillo, que utiliza comandos tipo ctrl letra para hacer todas las acciones.
sudo nano /usr/local/etc/LCDd.conf
Editamos el archivo y cambiamos estas líneas (podemos buscar en el archivo con ctrl w para encontrar dónde están las líneas a modificar). En mi caso, como tengo un display HD44780 conectado por USB, las líneas a modificar son:
DriverPath=/usr/local/lib/lcdproc/
Driver=hd44780
Buscamos la sección de [hd44780] y modificamos
ConnectionType=lcd2usb
Contrast=800
Backlight=on
CharMap=hd44780_euro
Guardamos con ctrl o, y salimos con ctrl x. Conectamos nuestro display. Ahora nos vamos al terminal y escribimos
server/LCDd

El display del LCD nos mostrará este mensaje brevemente. A continuación saldrá otro mensaje, con ello sabremos que el servidor de LCDproc ha arrancado correctamente. La línea Clients nos indica el número de Clientes o programas que publican información en el display.

LCDproc también incluye un cliente con el que mostrar información. Para arrancarlo, debemos escribir en el Terminal:
lcdproc -f

La configuración de la información a mostrar con lcdproc la tenéis en el archivo lcdproc.conf. Como antes, podemos editarlo así:
sudo nano /usr/local/etc/lcdproc.conf
En teoría es incluso posible redirigir las notificaciones Growl al display utilizando la información de esta página, pero no he conseguido descargar el plugin que lo hace. He contactado con su creador y si hay noticias positivas las publicaré en esta entrada.
Otro cliente preparado para mostrar información en el LCD es XBMC. Así, tan sólo tenemos que ir a Sistema – Ajustes – Sistema y marcar la opción Habilitar LCD-VFD. Toda la información de navegación y reproducción de XBMC aparecerá en el display.

Como habéis podido ver, el proceso es largo. Pero tener un LCD que funciona, altamente configurable, y que muestre los contenidos que queramos es realmente gratificante. Además, seguro que mucha gente os va a decir que quiere uno como el vuestro. Y no, el proyecto no es nada caro. Podemos encontrar displays como el de la entrada por alrededor de 30 euros.
Más información | LCDproc
Ver 21 comentarios
21 comentarios
comandillos
Yo hice algo parecido con una de 16x2, pero para lo del USB utilice un Arduino, y me hice un apaño para comunicar desde el Mac al Arduino con Serial, y después del Arduino al LCD.
De todas maneras, articulazo señores!
abarritericola
Con todo lujo de detalles y muy práctico el trabajo que has echo Fernando yo te lo agradezco
melibeotwin
Que post tan manitas están saliendo en Applesfera.
iberhack
Gran artículo, mis parabienes al autor. Lo que más me gusta de Applesfera es precisamente que de vez en cuando salen artículos muy interesantes, como este. Gracias
yakima
Muchas gracias por el artículo. Me viene perfecto, pues tengo un hackintosh como servidor y HTPC y está montado en una caja Antec Micro Fusion, con pantalla que ahora mismo está sin uso.
He estado siguiendo el tutorial, pero me quedo en la instrucción siguiente:
./configure —prefix=/usr/local/ —enable-drivers=all —includedir=/usr/local/include/
Terminal indica el siguiente error: configure: error: invalid variable name: `-prefix'
yakima
Yo sigo peleándome.
He modificado las instrucciones con el tipo de pantalla que tengo, evidentemente.
Cuando le digo server/LCD, me da el siguiente error
imonlcd: Error opening /dev/lcd0 (no such file or directory). imonlcd: Did you load the iMON kernel module? Driver [imonlcd] init failed, return code -1 Could not load driver imonlcd There is no output driver Critical error while initializing, abort
Alguna idea? He probado a reinstalarlo todo de nuevo y nada. He seleccionado en el driver imonlcd el modelo correcto de mi pantalla, y también he confirmado que el sistema lo detecta conectado al USB. Pero de momento nada.
carlos.valls.58
Cuando introduzco el comando server/LCDd me aparece esto:"-bash: server/LCDd: No such file or directory". Alguien puede decirme como solucionarlo, porque el archivo lcdproc esta en la ruta.
Tengo este LCD: U204GMB-B1
Gracias.
sergiomollin
Hola buenas noches, tengo una pequeña duda, quiero montar el lcd en mi mac pero tengo una duda sobre la conexion del usb y no se lo que tengo que comprar, aparte del lcd, me gustaria vuestra ayuda y si pudieseis darme las paginas para comprar lo que me falta muchas gracias.