LCD Client

Overview

A LCD and an optional keypad can be attached to server, that runs the GiantDisc server. This is particularly useful with an embedded GiantDisc system, which should be able to continuously display the currently played track and the playtime, and that should also offer some basic controls like play, stop, pause, next on a small keypad.

Notice that the LCD controller script can run independently of the GiantDisc server script and hence independently of a Palm. A possible scenario is that a playlist is composed using the Palm, which is detached later (and even the server script can be stopped). You can then play through the playlist using the keys of the keypad. If the Palm is later reattached, it will synchronize with the current state of the playlist, and it can again take over the playback control.

Prerequisites

I didn't want to reinvent everything from scratch. A search on the web showed clearly, that the most advanced LDC driver is LCDproc. It is available at http://lcdproc.omnipotent.net or http://lcdproc.sourceforge.net.

LCDproc supports a large number of different text-LCD's, that are either attached to the serial or the parallel port. It is also possible to add input controls like small keyboards, IR remote controls (using LIRC), joysticks etc.

Building the LCD Interface

Note: As already said above, lcdproc supports many different LCD devices. This chapter show just one example - a HD44780 driven LCD device that is attached to the parallel port. Refer to the LCDproc documentation to see, how LCD devices can be attached to one of the computer ports.

Here, I chose the "HD44780-winamp" connection scheme with keypad on the parallel port. Below you can see the schematic and the pcb.

LCDproc schematic     LCDproc schematic     LCDproc schematic
Schematic   Parts Placement   Bottom Layer

ID Description
Con1 Sub-D 25 male
Con2 Dil-16
D1..D3 1N4148
Pot1 22k
R1 1k
R2 4k7
R3..R6 22k
R7 6
Tr1 BC327

If the bottom layer will have the correct size, if the image is printed with a resolution of 300dpi.

Here's an extract of the LCDproc configuration file, that configures a HD44780 LCD controller and a keypad on the parallel port:

[server]
Driver=HD44780
[HD44780]
# Hitachi HD44780 driver
# See docs/hd44780_howto.txt
Port=0x378
ConnectionType=winamp
Keypad=yes
Backlight=yes
Size=16x2

Installation and Configuration

Download

Download the LCD Client package at SourceForge.

Installation

Upack the archive lcdclient-*.tar.gz and copy the file lcdclient.pl to the directory ~music/bin/ where the server scripts reside.

Invoking gdlcdclient.pl

The LCD controller script gdlcdclient.pl takes 4 parameters
gdlcdclient.pl host player-id player-type layout
The first tree parameters are usually localhost 0 0. If this doesn't work, you can print the player-id and player-type to the shell by selecting the menu item GiantDisc > DB/Disc Statistics in the search screen. The forth parameter specifies the layout, how the track titles, artist names, album titles, playtimes etc. are displayed on the LCD. You can get a list of the predefined layouts by typing the command grep "layout eq" gdlcdclient.pl.

Notice that gdlcdclient.pl currently only supports 2x16 displays. But it is easy to extend the script, to support other displays too. You will simply have to add a new layout to the section ### Layouts, by getting some inspiration of the existing layouts. If you have added new layouts, please send them to info@giantdisc.org, that they can be added to the distribution.

You might want to start the LCD client automatically, whenever the system boots. You can do this by adding the following lines to rc.local:

# Start LCDproc server
/usr/local/sbin/LCDd -c /etc/LCDd.conf&
# Start LCD client
su --command="/home/music/bin/gdlcdclient.pl localhost 0 0 2x16-4" music&

Keypad Input

It is optionally possible to attach a small keyboard of about a dozen of keys. The keypad input is also handled by the LCDproc-package and it is activated by the line Keypad=yes in the LCDproc configuration file.

The keypad can contain as many keys as required. A sensible minimum is two keys - one to start playing through the current play list, and one to stop playing.

Each key of the keypad needs to be associated to a predefined command. This key association is specified in the GiantDisc configuration file .gdconfig. Here's an example of such a key association list:

keymap = 5 - cmd_play
keymap = 6 - cmd_stop
keymap = B - cmd_prev
keymap = 4 - cmd_next

You can get a list of the commands by typing grep "cmd_" gdlcdclient.pl in a shell.

IR Remote Control

There is no direct support for consumer infrared remote controls in GiantDisc. However, a Linux Infrared Remote Control (LIRC) plugin exists for LCDproc. You can run the same gdlcdclient.pl script with or without attaching a LC-display, and match LIRC keys to GiantDisc functions as described above. For more information about LIRC refer to http://www.lirc.org/