A clock with public transport timetables

Subject of this project is building a clock that shows, in addition to the current time, the next scheduled public transport services for the four most interesting directions from my appartment. When determining the "next" services, the walk to the respective bus stop / metro station will be taken into account.

Display module

The display module is the "user interface" for the clock: It will be placed in the living-room, connected to mygiea in the server room (which is where the "backend" software will run) through Cat.5 wiring. The user interface consists of the LC display and one push button to turn on the display backlight, which will then light for about 15 seconds. For backlighting, the display box contains a 9V battery.

Furthermore, the module contains protective resistors for the LCD module's data lines.

Data lines on the first LCD module were soldered incorrectly, which was not repairable. Bought some flat foil connectors for the second LCD module (the last one in stock, unfortunately), which work fine.

Status as of 8. September 2006: Breadboard prototype runs fine, now have to integrate it into the case bought for the device.

Display module schematic Tricky soldering Tricky soldering, covered under hot glue Complete breadboard assembly Display displaying the first HVV information Some debugging with a freshly bought digital scope

Idea for enhancement: Build a buzzer (or other tone generator) into display module so the device can be used as alarm clock, making a sound at some given time and display some informational text. Will leave this as an option for later addition by making the display data lines (LCD module pins 3, 4, 5, 6, 7, 8, 9) connected through a connector, so that (electrically ''before'' the protective resistors) an extension module PCB can be added later. These data lines could then be switched by watching /RES and either be connected to the LCD or the extension module's functions. I have some 8-pin ribbon cable connectors (and pin headers) in stock and will use these for the connection.

Parallel port connection

DB25 pin Cat.5 LCD pin
2 (DATA0) 3 12 (SI)
3 (DATA1) 4 11 (SCL)
4 (DATA2) 5 9 (A0)
5 (DATA3) 8 8 (CS)
6 (DATA4) 7 7 (/CS)
7 (DATA5) 6 6 (/RES)
18 (GND) 1 13 (LCD GND)
(''none'') 2 10 (Vcc +5)

Cable box inner workings Cable box, power connector Cable box, parallel port

Status as of August 31: Connector ready.


A program named hvvclock runs on my home server, mygiea. It reads a configuration file where the available transport services are defined in the following way:

| Display group | Line | Destination | Day [,Day...] | Time |

As separator, the ":" character is used, so that a line might, for example, look like this:

{{{ 3:S1:WL:1,2,3,4,5:0002 }}}

So this is display group 3, the metro "S1" destined to Wedel ("WL"), departing at two minutes past midnight on Monday (1) through Friday (5).

Each display group will be placed in one line of the display module. Because the display can use five lines of text through my software interface, and one line is occupied by the current time (and possibly further additions later), four display groups exist.

The software relies on the LibSED1530 for accessing the display to FreeBSD's ppi(4) device.

Status as of August 31: I have a working prototype of the software which I will test this evening. Then, integration of the display module into its case can take place. After that, the software's algorithm to choose the next available services has to be redesigned and rewritten, as it's quite crude at the moment. You can look at it here, though: hvvclock-devel-1.0