Thursday, July 28, 2011

Remote Power Switch For A Computer, Part 1

My friends know that I am an incredibly lazy person. So lazy that one of my irritations is that the HTPC (Home Theater PC) in the bedroom requires that I actually get up out of bed to turn it on. This is fine if I remember to switch it on before getting into bed, but most of the time I only remember after I have swaddled myself in blankets.

The solution of course is to have a way to use a remote control of some sort to turn on the PC. The first option is to not shut down the PC at all, but leave it in “sleep” mode. This is probably the most sensible option and I believe that I could set it up so a key press from my beloved IOGear wireless keyboard would accomplish it. But I don’t like sleep mode. I like computers to either be on or off. I’m cranky and old fashioned.

So how then to power on a PC remotely? There are again a couple of options. I could use Wake Over LAN to start it with the laptop I keep on the bedside table (roll your eyes). I could use a PS2 keyboard or mouse to power it on remotely, which would entail some wires strewn across the floor. I tried to get the USB wireless keyboard to power it on but was unsuccessful. Possibly I should have tried harder, but I wanted to try something different.

So my option is an IR remote controlled power switch. The nice folks at Simerec will sell you a kit or assembled IR remote power switch for the PC for about $30.00. This is probably the best option so you should just stop reading this post now and head on over there and order one.

You’re still here? Fine, don’t say I didn’t warn you. I did not buy the Simerec switch because I’m somewhat cheap (although in the end this project has cost 10 times that amount as it has spurred on new-hobby-buying-syndrome). I also was fresh from the high of Henry and my Awesome Button project and thought that a Teensy would fit the bill.

The Teensy can use Ken Shirriff’s IR remote library to receive and transmit IR remote control signals. So all I needed was to get an IR receiver and remote, figure out how to wire it up to receive input, figure out how to wire a relay to turn the PC power switch on, and program the thing. Easy! It will practically make itself!

So where to get the IR remote components? Well I happened to have several VCR’s laying around in case the sole surviving unit breaks (not that the kids have watched any VHS movies in the past year). So I decided to take one apart…This was too much fun to take pictures of. I was able to use my Edsyn solder suckerthat I bought a few years ago at the thrift store “because it looked handy”, to remove the IR receiver and a whole bunch of other useful bits.

07280101
The VCR bits. All non electronics went in the trash, anything left over from this pile will go to the electronics recycling dumpster be hoarded.

07280102
The bonus was a pile of little clicky switches. Those cost about 20 cents a piece! Awesome. Plus some other stuff I might use.

07280103
The Teensy on a breadboard with the IR receiver and a LED wired up to let me know if the power button is being pressed.

07280104
Another view. I wasn’t sure whether I should leave that shielding on the IR receiver.

07280105
The receiver gets power from the Teensy on one pin, the other is hooked to ground and the middle one is hooked to an input pin.

This is what the code looks like:





#include <IRremote.h>

const int RECV_PIN = 6; // pin that the IR receiver is on

IRrecv irrecv(RECV_PIN); // receive IR on that pin

decode_results results; // the code sent by the remote

int relayPin = 1; // pin out for relay pin and LED

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
irrecv.blink13(true);

pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW);
}

void loop() {

if (irrecv.decode(&results)) {

if (results.value != 0) {
Serial.println(results.value);
}

if (results.value == 332 results.value == 2380) {
Serial.println("power");
digitalWrite(relayPin, HIGH);
delay(1000); // waits for a second
digitalWrite(relayPin, LOW);
delay(10000); // waits for 10 seconds
}

irrecv.resume(); // Receive the next value
}

}

The code is simple and I’m not going to go into great detail about it but basically it starts the receiver, then in the main loop sees if a button press has been received. If the press is received it prints that value to the serial monitor (which makes it easy to decode each button as it is pressed). If the code received is either 332 or 2380 then the power switch has been pressed. You can look into IR protocols and learn more if you want. It is fascinating. If the power switch has been pressed then it sets the relay pin high for one second, then turns it off and waits ten seconds before resuming the loop. I did this to prevent accidentally turning it on and off in rapid succession.

Here are two short, grainy and boring videos of my turning the LED on and off as well as fading it (not applicable to this project, but neat nonetheless).









07280106
Next I had to figure out how to run a relay. Apparently with relays you need to protect the actuating circuit from the collapse of the coil field (snore…) which dumps a ton of voltage the wrong way ‘round into your circuit. This would be bad. So I found a schematic (PDF) that showed the parts I needed to avoid the problem.

07280107
LED off…

07280108
LED on…The button is mimicking the 5V signal from the Teensy. The LED is standing in for the PC power switch.

07280109
It’s a simple circuit. The 1N4005 diode was scavenged from the VCR. My suffering mentor (Thanks Gregg!) told me that a 1N4005 would work as well as a 1N4004.

07280110
This will make it more or less clear. Ok, maybe it won’t. This is the relay I used.

07280111
Then I grafted the IR receiver breadboard to the relay breadboard.

07280112
Then I carefully moved all the IR components to the one breadboard. I tested all along the way to make sure I didn’t make any mistakes.

07280113
An extension cord I whipped up runs from the PC power switch header to the breadboard.

07280114
Plugged into the breadboard.

07280115
Did it work? Yes. See this incredibly boring and thankfully short video:





More to come in part 2

Sunday, July 24, 2011

Quick and Ugly Stroller Repair

07240106
Friends of ours are going to be needing their old abused stroller soon. Unfortunately there’s a stress crack that broke the frame.
07240107
It would probably be a better idea to weld it, but I don’t have an easy way of welding aluminum, nor am I a particularly skilled welder.
07240108
I sketched out a plate.
07240109
Sawn and about to be copied.
07240110
Filing the contours of the two pieces to match.07240111
Almost done…
07240112
Two pieces. I figure sandwiching the stroller frame between the pieces will hold it together for at least a couple of years.
07240101
Test fit.
07240102
Hole locations marked.
07240103
Drilled. Note that I did the holes with the pieces clamped together.07240104
Test fit. I used #10-32 stainless button head cap screws and painted nylon insert lock nuts. It shouldn’t come apart although if these guys could crack the frame…
07240105
I hit it with some black spray paint so it wouldn’t be as noticeable.

Saturday, July 16, 2011

Disassembly of a Logitech Quick Cam

07121101
I picked up this Logitech Quick Cam Chat for Skype (worst product name contender) at the local Goodwill for $2.00 the other day. This is the third Logitech webcam I’ve bought for $2.00 or less in the past year. This was the first that didn’t work well. The image was incredibly blurry. So I figured I would take it apart and see what the problem was.
07121102
I started with the obvious screw.
07121103
And two not so obvious screws under the rubber pad.
07121104
Unfortunately they only held the stand together.
07121105
So I looked for the next obvious ingress, a notch in the back of the shell.
07121106
A quick pry with a jewelers screwdriver and the blue piece came off.
07121107
There’s a light pipe that transmits the light from the LED that tells you the camera is on.
07121108
The main guts removed.
07121109
The lens focusing adjustment ring slips off.
07121110
I unscrewed the lens and cleaned it with a precision optical tissue (one of those wipes for glasses) and some rubbing alcohol.
07121111
I screwed the lens back on and hooked the camera up to my shop PC. I adjusted the focus and…
07121112
A nice grainy, yet typical for the era, webcam picture (of me taking a picture of the webcam with my camera while it takes a picture of me taking a pic of it…) I think that what had happened is that somehow the lens had been screwed in too much, jamming it somehow. In any case it works.

Wednesday, July 13, 2011

A Nice Picture and A Few Links

I took this picture of Felice for an upcoming blog feature (details later if it materializes). I think it came out well. She’s really hard to photograph as she usually starts cracking up by the second or third picture.
felice01
Some Links:


Tuesday, July 12, 2011

Soldering Iron Stand

It became apparent that I needed a better soldering iron stand. Rather than buying one for around $5.00 I decided to waste the better part of an hour and probably $5.00 in materials making one.
07121121
A small tapered mandrel held in the vise
07121122
Wrapping some 12 gauge brass wire around the mandrel. Felice uses this wire to make brass shawl pins so I stole some from our large supply.
07121123
The springy thingy.
07121124
I set up the mill with a piece of scrap aluminum.
07121125
Milling a pocket for the sponge.
07121126
Almost done.
07121127
A piece of sponge fitted.
07121128
Drilling the hole for the springy thingy.Testing.
07121130
Testing.
07121131
Drilling a hole in the end of the stand.
07121132
Tapping #10-32 threads.
07121133
Cleaning up all the surfaces. This could have been done first but I didn’t think I ‘d care about how it looked when the project began. Then I did.
07121135
The setscrew locks the springy thingy in place.
07121136
Now I can solder more easily and worry less about the iron rolling off of the bench. I might tweak the angle of the coil to the base, not sure yet.