Home > My Projects > Computerized Room |
Date Of Project: Winter 1997
Note: As of sometime in late 1999, this project has been permanently stalled. There are no plans for future updates. It was fun, but I moved onto other things.
This project was started a few years ago when my phone woke me up one morning. I had to get up, turn on the answering machine, then try to go back to sleep. Needless to say, this was very annoying. So, I decided to do something about it. I had seen the home automation products in the back of Popular Electronics and thought about using them. I then discarded that idea as being too expensive and not as customizable as I would like. So, I decided to make up my own system. The interfaces were no problem, as I used the interface circuits presented in the "Robot Builders Bonanza" by Gordan McComb. The rest of the circuit were just simple switches, sensors and other miscellaneous circuits. The project has changed a lot since it was first conceived. In order to explain things more clearly, I have broken this document into three parts. "What It Was" simply explains what the project was like when it was first completed. "What It Is Now" explains the current status, and "What It Will Be" explains what my future plans are.
The project started out with three main interfaces: A Parallel Port Interfaceand two 8 Bit Input Cards. The parallel port interface was used as the output, while the input cards were of course used to get information back into the computer. Speaking of the computer, it was an XT with 640K RAM, no hard drive, a CGA display (connected to a TV) and a 360K and 720K floppy drive. All the programming was done in GWBASIC.
The outputs on the parallel interface were used to control all the lights in the room, the TV, answering machine, stereo and several tube radios. There was no dimming control on the lights, as it is not needed and would have just complicated things. The on/off control on everything utilized relays connected to the interface through a simple transistor switch. To control the volume on the TV and stereo, a DAC was used in place of the pot. Tuning the TV was easily accomplished by connecting a small relay in place of the up and down channel buttons on the tuner box. The stereo was also controlled by relays, except for the tuning. A small stepper motor turned the dial. Tape playing functions were controlled by solenoids. The tube radios simply had on/off relays connected in parallel with their original switche. Alligator clips were used to avoid any soldered connections. As for the answering machine, it was a large old Duophone unit that used a dial for control. Another stepper motor was connected to the dial. This motor was controlled by a simple stepper motor controller that was connected to the parallel interface. If you have been counting so far you would have noticed that all this would have used far more outputs then the parallel port could provide. You're right, it did. This was rather easily solved with the use of demultiplexors, such as the 74LS154 and 74LS138.
The inputs (16 total made up of two 8 bit circuits) were used for a remote and various sensors. The remote used up 8 inputs by itself leaving 8 more to the sensors. It used DTMF tones to communicate between the transmitter and receiver. The hand held part was a keypad from an old phone with the buttons relabeled and batteries for a power supply (instead of the usual phone line). Instead of a speaker, the output tones were interfaced to a IR LED. This transmitted to a phototransistor and amplifier connected to the decoder chip. The decoder chip put out a 4 bit BCD code, which was then decoded to an 8 bit binary code and sent to the computer. I have mentioned sensors. There were several of them to give a little information about the outside world. They were: inside/outside temperature, light level, humidity (from an old weather balloon), rain sensor and EMF sensor. They were all interfaced with an ADC to the remaining 8 inputs on the card. One notable exception is the rain sensor. It simply provided a high (raining) or low (not raining). The EMF sensor was done as an experiment, and was simply an antenna and rectifier connected to a small amplifier. The output of that amplifier was sampled by the ADC.
The programming for all this was a rather crude GWBASIC program. It used the standard PRINT, INPUT, IF, etc. plus the OUT and INP commands to control the interfaces. Everything was hard coded. Changes to the circuit or an addition of another device to control meant modifying the source code. It did work, but not especially well.
What it is now. Well, not very much. I had several computer problems, which caused the system to fall into disuse for almost a year. During that time, I made a few modifications to the room which resulted in it not working anymore. One of these additions was to upgrade the computer to a 386 DX40. With that upgrade, I put in a hard drive. Unfortunately, not long after that the hard drive died, taking all my programming with it. I replaced the hard drive, but my replacement failed within a week. I now have a new one in, which has been running a few months without any problems.
Anyway, at the moment the only thing connected is the lights. Real life has been getting in the way for the past year, so I have been unable to do the things I had planned to do after the computer upgrade. Those things are detailed next.
It seems that I have been having a little more free time lately, so I hope to get to this soon. This page will be updated as the project is worked on.
The main reason I upgraded the computer was so that I could run Windows. This has a few advantages. First, it frees up the computer from being a dedicated controller. The "Room Engine" (as I like to call it) can now run in the background. Second, there are some great voice recognition packages available for Windows, which I hope to use in some way. Third, it is easier to program.
I will be using the same interfaces for this incarnation. The main difference will be the addition of some needed features, plus the subtraction of some unneeded ones. The computer will be reconnected to the TV and stereo, but I will save some outputs by not connecting to the tube radios. The lights will also be controlled in a different way. Instead of the computer's relays being in parallel with the light switches, they will replace the light switches. The switches will instead be connected to some of the inputs. This way, the computer has full control. One input will be used for an infrared motion detector. This allows the computer to know that someone is in the room, and maybe turn on a light or something similar. The wireless remote will be replaced with a wired control pad that will sit on the table beside my bed. I have found that a wireless remote is really a waste in such a small room, so it's inputs will be turned over to the control pad. One thing I did was to get a new answering machine. This one has buttons to control it, so it will be no problem to connect up some relays in parallel with those buttons.
The voice recognition is something that I think would be really neat. I have a small program by Creative Labs called "VoiceAssist" that performs quite well. As far as I have seen, it should be no problem to use it to control several small programs, which would communicate instructions to the larger Room Engine.
I have also recently purchased a Hewlett Packard 660LX hand held computer. This runs Windows CE and has several built in I/O ports. The port I am comcerned with is the infrared port. As soon as I figure out how to program the thing, I will be writing a program to send commands to the Room Engine via IR. I'm sure you can see how useful this will be. Apparently, you can program Windows CE with Visual Basic 6 and the Windows CE development kit. The problem is that the kit requires you to run NT Workstation. Since I have no desire to run NT (except on my server), I will have to wait until someone else comes up with a different solution.
As you can see, what I have planned will be quite different then what was originally described in this page (assuming you read the original version of this page). As I mentioned, the only problem is time. Lately, I have been very busy with work and school, but things have been clearing up. I will update this page according to my progress.