Interfacing a Linux laptop to household appliances.

Disclaimer: Hooking non-standard hardware up to PCs, especially anything connected to the mains supply, means you are prepared to take the risk of frying your PC, or even worse, you. I cannot accept responsibility for anyone going away and frying PC's or themselves. I am merely putting this information on the web, to show what is possible. Experiment at your own risk.

  • Introduction.
  • Equipment Used.
  • The parallel port.
  • Links.

Introduction.

Well, it just had to be done. Using a parallel port only for printing seemed a bit tame, so I started thinking about what else I could interface to a Linux box ? It took all of a few seconds for me to realise the answer was "Lots".

I needed to use my Linux laptop (Omnibook 800) for data acquisition of telemetry data from rocket launches, sensor data from static tests, and also as the launch control system for rockets, so I needed to interface to the parallel port. This got me thinking, if I was going to be interfacing to non-computer external hardware, why not interface to household appliances ?

Initially, basic on/off control of household appliances would present a worthy challenge I thought. That narrowed down the number of controllable household appliances to just about everything; Washing machine, lights, TV, VCR, Toaster, Blender, Thermostat, Fridge, Freezer. O.K. you could do this using X-10, but I wanted to be inventive.

Computer Hardware Used.

  • 1 x HP Omnibook 800.

Interfacing Hardware Used.

  • 1 x 25-way D-plug (male)
  • Ribbon cable.
  • Plugboard.
  • A motley assortment of resistors.
  • Ditto for relays.
  • And for opto-isolators.
  • And LEDs.
  • And Transistors.

Interfacing Tools Used.

  • Multimeter
  • Soldering Iron, solder and de-solder braid.

Pin NumberPurpose
1Ground
2TxD
3RxD
4RTS
5CTS
6DSR
7GND
8DCD
9
10
11
12DCD #2
13CTS #2
14Txd #2
15Tx Clock
16RXD #2
17Rx Clock
18
19RTS #2
20DTR
21Signal Quality Detect
22Ring Detect
23Data Rate Select
24TX Clock
25

Software

The code neccessary for the input and output to the parallel port is trivial in C. Whilst C is not always the most user friendly of programming languages, in this case, the code is so small, that it is easy (hopefully) to understand. The plan of action was as follows:

  1. Write C code to read input/send output to hardware devices via the parallel port.
  2. Write browser interface to control the C code.
  3. Write a Tcl/Tk GUI interface, for non-browser GUI control of the C control code.
  4. Write a Java GUI interface, for control of the C control code.
  5. Write Java version of the C control code and integrate into the Java GUI code.

Links

Richard's online bio Web based contact form Current projects Digital Themes Educational background Personal Details Research Activities Rocketry related activities - mainly amateur and high power rocketry Space interests

(c) 1999 Richard Osborne, London.
http://www.gbnet.net/~richard/