UKrocketman banner
ROCKETRY | SPACE | DIGITAL | EDUCATION | RESEARCH | PERSONAL | BIO
My IT background      
Background      
 
My hardware      
Hardware      
 
My coding      
background      
Coding      
 
Hardware Cooling     
Techniques      
Cooling      
 
Linux on an HP      
Omnibook 800      
Linux Omnibook      
 
Linux on an Sony      
Vaio Z505      
Sony Vaio      
 
Interfacing Linux      
PCs to household      
appliances      
Appliance Control      
INTERFACING
 

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.

CONCLUSIONS

By the time the interfacing was done, the most important lesson learnt was that whilst it was an interesting learning experience, using X-10 for home automation, and more specifically, the CM12U RS-232 to X-10 interface module and some software in C, Java or Perl is far more productive in the long run.

Links


 
 
home - links - contact me - colophon
 Richard Osborne - 1996-2001