And now for something completely different.
I helped install a phone system at a non-profic bookstore in Mountain View. They had an old multi-line system with an intercom, but they were running out of extensions and the phones were proprietary to that system, were starting to malfunction, and replacements were hard to find. Their new system is a NexPath Telephone System, which has a capability of 30 inside lines, and uses ordinary telephones, so they will always be able to find inexpensive replacements. The telephone system (NTS) was purchased from eBay and donated to the bookstore.
The problem now is because the new system uses ordinary telephones. Ordinary telephones do not have lights that tell you when a call is on hold, etc. The solution to this problem is the NexPath Lights, 3 sets of 8 LEDs (from Christmas light strings, of course) mounted near the 3 phones at the front desk. The lights are color-coded and configured to indicate when a call is on hold, when it is being transferred to another extension, when a phone is ringing, and when a phone is left off the hook by accident.
The NTS phone system does not control lights directly. Instead, the NexPath lights work as a program running on a Windows computer (which also functions as a cash register). It communicates with the NTS over the store LAN, and controls the lights by changing outputs on a parallel port. The program is written to run unattended, to start automatically when the computer starts, and automatically reconnect if it its connection with the NTS is lost.
The hardware starts with wood, in order to blend in with the surroundings at the bookstore. The first set of lights started with pieces of particle board:
...to which I glued a base:
Holes were drilled from the bottom for the lights. Since it was hard to keep these holds straight, I had to then use a bunch of wood putty to fill the places where the holes shouldn't be. While I was at it, I attempted to smooth the rough surface of the particle board, with mixed success. I then inserted the lights:
The wires for the lights run through a channel in the bottom:
After several more layers of wood putty, it was ready for painting:
After some semi-gloss black spray paint and some stick-on labels, it doesn't look bad:
Each of the 3 cash registers next to the phones are Windows computers with an unused parallel port. A little digging around the web led me to several sites describing how to drive an LED from a parallel port. Because the parallel port can't supply enough current to get a reasonable brightness out of an LED, I use driver transistors and a 5-volt supply, which I get from an unused USB socket:
My original plan was to build this circuit consisting of 8 transistors, 16 resistors, and 1 LED (the other 7 LEDs are in the wood frame above) in a space about 2 inches square inside the DB25 parallel port connector, using surface-mount devices. I didn't want to get the nasty chemicals necessary to etch a printed circuit board, so I thought I could just use a Dremel tool to carve the traces in the PC board. I was wrong. Here is my attempt:
As you can see, I got as far as the 1.5k resistors and then saw that my copper traces were not even close to being suitable for the transistors. So I gave up with that idea and went with a copper-plated perf board in a project box. I had already bought the SMDs, so I used them:
The wires come up from the bottom, and all the cables and LED are secured with hot glue:
This is the complete unit:
The software was written in C using Microsoft Visual Studio 2005. Its user interface is very basic, but it's meant to be configured and just sit there, controlling the lights. If you have a NexPath phone system, you can download it and try it yourself.