Home Electrical Device Control mini HOWTO

Rui Li

ruili@worldnet.att.net

Joy Yokley - Coverted document from Linuxdoc to DocBook v4.1 (SGML).

2001-04-26
Revision History                                                             
Revision 0.004            2001-06-13           Revised by: JEY               


This document will tell you how to use Linux to control your home electrical
devices. You will only need to make a very simple circuit to control almost
any kind of electrical device using Linux!

-----------------------------------------------------------------------------
Table of Contents
1. Introduction
2. System Requirement
3. Electronic Circuit
4. Special Thanks
5. Copyright and License

-----------------------------------------------------------------------------
1. Introduction

Many people asked me, "Is it possible to control some electrical stuff [e.g.
lights, radio, tv, etc.] by using a home computer?" The answer is YES. The
process is very easy, and everyone can do it.

After I read the Coffee Machine Mini-HOWTO, I got an idea of how to control
my home electrical appliances. I made some modifications on the circuit
discussed in that Coffee Machine Mini-HOWTO, and wrote a simple program. The
circuit can control many small electrical devices.^_^ You can use crontab to
set your lights to come on automatically or to turn on your airconditioner. I
use it to control my VCR and VCD ( I do still need some modification on VCR/
VCD). By writing a simple program, you can control everything over the web.
You can use telnet with SSH and your telephone dial in to control all the
appliances you have on the circuit.

This circuit is VERY SIMPLE. Even if you don't know anything about circuits,
you can set up this circuit.
-----------------------------------------------------------------------------

2. System Requirement

Get any computer that is running Linux and has a working parallel port. :)
I'm using a 386DX with 4MB RAM 40MB HD. You will need gcc to compile the
program. If you want to use telnet or SSH, you will also need telnetd or sshd
. You can write your own program by using ioperm and outb. If you would like
to use my program, you will need g++.

Click the following link to download my program. You will need g++ to compile
it. [http://home.att.net/~ruili/goldencat/paralle.tar.gz] home.att.net/~ruili
/goldencat/paralle.tar.gz.
-----------------------------------------------------------------------------

3. Electronic Circuit

The data line of the parallel port can provide between 0 and 5 volts.
Therefore, we can use this line to control a relay and let that relay control
an electrical device.

Use pins 2 through 9 to get +5V

Use pins 18 through 25 as the Ground
            ____________________________________________________________       
           /                                                            \      
           \     13  12  11  10   9   8   7   6   5   4   3   2   1     /      
            \                                                          /       
             \     25  24  23  22  21  20  19  18  17  16  15  14     /        
              \______________________________________________________/         
                                                                               
                                                                               
                                                                               
                                                                               
                                             | Vcc for Relay                   
                                             |                                 
                                             |                                 
                                    / -------+--------| |---------|            
P data              4.7K         B /  c      | 1N4002 |_|         |-------     
-----------/\/\/\/\---------+-----| NPN     ___         | relay   |home device 
                            |     \   e   __\_/__     |-|         |-------     
                 LED        X      \         |--------| |---------|            
P Ground                    |       |        |                                 
----------------------------+-------+--------+                                 
Relay Ground                                 |                                 
---------------------------------------------+                                 
                                                                               
                                                                               

Key to the Above Diagram
P data          parallel port data line(pin 2 to pin 9, use any)                      
                                                                                      
P Ground                        parallel port ground (pin 18 to pin 25, use any)      
                                                                                      
Vcc                             depends on the type of your relay. I'm using 12VDC    
                                                                                      
Relay Ground    the ground for 12VDC                                                  
                                                                                      
4.7k                            4.7K resistor                                         
                                                                                      
NPN                             C2235 NPN transistor                                  
                                                                                      
1N4002                  1N4002 diode                                                  
                                                                                      
LED                             light emitting diode                                  
                                                                                      
relay                           a coil relay                                          

+5 volts from parallel port will turn on the relay. Once the relay is on, the
device connected to that relay will be on. When the parallel port's data line
goes back to 0, it will turn off the relay, and device is off.

I wrote a simple program that can control 8 relays. The program is available
at the following location and will need g++ in order to be able to use this
program. [http://home.att.net/~ruili/goldencat/paralle.tar.gz] http://
home.att.net/~ruili/goldencat/paralle.tar.gz

A complete circuit can control up to eight relays, that means that a complete
circuit can control eight different devices. You will need a DB25
connector.Using a parallel switch cable, connect this relay board to your
computer. I put the relay board in a box and use a parallel switch cable to
connect it to my Linux box:
Panel: LED, Switch              Back:  DB25 connector                        

The following sites contain some photos of the circuit:

��*�[http://home.att.net/~ruili/goldencat/p1.jpg] http://home.att.net/~ruili/
    goldencat/p1.jpg
   
��*�[http://home.att.net/~ruili/goldencat/p2.jpg] http://home.att.net/~ruili/
    goldencat/p2.jpg
   
��*�[http://home.att.net/~ruili/goldencat/p3.jpg] http://home.att.net/~ruili/
    goldencat/p3.jpg
   

The following URL shows a complete electronic circuit (control 8 devices):
[http://home.att.net/~ruili/goldencat/01.png] http://home.att.net/~ruili/
goldencat/01.png
-----------------------------------------------------------------------------

4. Special Thanks

Special thanks to Rufus Chang [mailto:rufus@chu.url.com.tw]
rufus@chu.url.com.tw.

Special thanks to Chih-Wei Huang [mailto:cwhuang@linux.org.tw]
cwhuang@linux.org.tw.
-----------------------------------------------------------------------------

5. Copyright and License

Copyright Rui Li 2000-2001. License is GNU GPL, but it is requested that you
retain the author's name and email on all copies. Please keep my name and
e-mail address when you are copying this HOWTO.