Control your TV, DVD, Stereo, DVR, Cable box, Mac, Xbox, or any other IR device with the Web Clicker!

The Web Clicker is a web server & IR transceiver.  You can record any IR command and play it back via an AJAX web interface or just by requesting a URL.  It works great from a cell phone and it's especially handy for home automation projects.  It's based on a Propeller Platform USB, here's a little demo;

Continue on and I'll answer a few questions and then show you how to make it.

Step 1: FAQ

What can I do with it?
The Web Clicker can control any IR device (TV, DVD, Stereo, etc) simply by requesting a URL. There's also an AJAX based control page so you can use it with a web browser, like on your iPhone or computer.

The Web Clicker is awesome for home automation projects because of it's ease of implementation - just request a URL and you'll generate an IR signal or trigger a series of IR signals

I built the web clicker mostly for home automation - I have a MythTV DVR that uses an RF remote.  Now, I've set it up so when I push the power button on the remote, the DVR makes a page request to the Web Clicker and it generates the correct IR signal. 

The Web Clicker is a Propeller Platform USB and E-Net Module, and a very basic IR circuit.  Web server code is based on PropTCP, by Harrison Pham, and I wrote a custom object (Magic IR) for capturing and playing back IR signals. 

I started researching IR control schemes - after a few days of work, I decided it would be better to code my own IR recorder - this way it's compatible with any TV without having to look through a huge code list.  It's like a learning remote that has greater than 100ns accuracy & unlimited storage capacity.

I'm using a 38kHz IR receiver, which is the most common (95% of devices).  If your devices uses another frequency, it's easy to use a different IR receiver.

All the software & hardware is available under the MIT license, which is essentially public domain.

Using it
I'll get into using it in a bit, but here's the big picture;
  1. Enter the webserver address into your browser
  2. Hit 'Record' to capture IR commands
  3. Initiate playback either by:
    1. requesting a URL (something like: where x is the command number), or,
    2. through the web interface on your smart phone or PC.

<p>I need one of these also! Anywhere to buy one all ready to go?</p>
I urgently need one of these! Has anyone out there got one that's fully working for sale and/or know of a commercially available unit with this functionality. Neat device! <br>
on symbian there is an app for this.. Anything that user IR control -- You can control it through your phoner IR transmitter. <br> <br>BR
This is the perfect instructable, thanks! This will be my first one. My company recently installed two pan/tilt/zoom cameras in our conference room (that are IR controlled only), as well as an IR controlled video input selector. We want to allow our remote employees to select which camera to view and remotely pan/tilt/zoom them. I'm looking forward to putting this together.<br><br>One question: Do I have to have the SD card? e.g. when I program the device does it go into volatile storage, requiring it to be reprogrammed every time power is lost, or is there some on-board flash?
The current program doesn't store the code on any non-volatile memory, but you could store it on the Propeller Platform USB's EEPROM, which is built-in, or use an SD card.
I've been pouring over this for a while and being new to Spin, I can't figure out how to get the LONGs to go to a file or something that I can use to reload the codes when it reboots. Any help would be greatly appreciated.<br><br>Also, I am having the problem where it crashes after recording 5 codes, or sometimes on playback.<br><br>One more thing, any advice on how I could rework it so that I can mimic holding a button like Vol+ instead of clicking it a bunch of times to raise the volume a lot?
could you use the Spinneret Web Server?
The Spinneret is capable, but it uses a different ethernet IC (a Wiznet) - so you'd need different code. It can be done, though.
We need to control the selections of different videos to be shown in one projector via our iPhone/SmartPhone and and internet or 3G connection. Can your device do this?
Maybe, it depends on how videos are queued -<br><br>If there's an Infrared command that switches videos, then certainly. If there's a computer that controls the currently playing video file, the Propeller Platform USB can interface with it over the USB connection - but it's beyond the scope of this instructable. <br><br>Hope it helps!
The DVD players have a remote. I thought that maybe that would work.
Yep, it should, as long as they're IR remotes.
it works for me but is it possible that he save codes in memory card??
Hi<br> <br> Thank you for the code and instructions I just have two problems:<br> <br> - The codes are stored in ram, and I want to save them to a sdcard, with one file pr code or in raw. I should be able to make that by my self, but if anyone already have written it, I would be happy to take a peek at your code<br> <br> - My clicker crashes after just recording 5 codes, tried to adjust the allocated variable sizes but that shouldn't be the problem since they allow 10 codes (at least?). I think I have narrowed it down to the assembly for recording codes, but I can't figure out whats wrong, anyone have a clue?
Hello Kitty ftw!<br>Btw, nice 'ible
This project is Awesome! Is there currently any way to add wifi to the propellar platform Though? It would be great to have this sit on my coffee table and control all of my devices. Thanks again for posting the great project!
i did not see a wifi module while dinkin around on gadget gangster but I do have a suggestion. A wifi bridge (anywhere from $30-$200 depending on where you buy) will allow you to connect anything with an Ethernet port to a wireless network. You simply plug it into your computer one time to teach it to connect to your wifi then plug any ethernet device into it as if you were pluggin em directly into your router.
This project is almost PERFECT for what I have in mind for my entertainment system when I refinish my basement soon. My intention is to have multiple tvs throughout the house connected to a 8x8 hdmi matrix. I know its overkill but heh anything worth doin is worth overdoin right ;). Anyhow a pair of directv receivers and a pair of hd OTA tuners, among other boxes, will be stacked in a cabinet. I would like all remote function to be handled through a web page hosted on my htpc. The ability to activate a code through a simple page call is perfect for this design. Due to this fact I need to have discreet IR blasters for each receiver. Otherwise changing the channel on one will change them both. Is it possible to have a second or even third IR transceiver and be able to set codes to only blast the code over the correct pins. Im sure this is possible but its a matter of how hard would the coding be. I have never played with propeller platform before but i am willing too learn. If nothing else i know i could just build multiple controllers but seeing as i'll be dropping $1k on the hdmi matrix i would like to be able to keep costs down elsewhere. Any help would be greatly appreciated and once again BIG kudos on designing this awesome little toy.
Hi, i just assembled this project and works pretty good.<br><br>I only have one problem, when i power off the webclicker all the recorded commands are lost, in order to make it save and do not lose the commands, what do i need to do? save everything in the microSD? How can i do that?<br><br>Thanks!
Sorry if this is a dumb question - would it be possible to connect multiple IR LEDs or add an extension wire so the LED can be placed further away from the device? I read somewhere that speaker cables can be used for that.<br><br>Thanks
you should be able to do that, and then just wire them in parallel.
Now this is really, really cool. Would there be any way to add a simple GUI to the web page? I'm thinking of using this system with my iPod touch, and the small text links would be a pain to use. But, a full GUI would be EPIC. I've got a Harmony remote but I don't like how it works...
Very easy. I did a version of the sourcecode that includes buttons. In the showcodes method, you just change;<br> <br> <pre> sock[sockid].str(string(&quot;', 'mydiv')&quot;,34,&quot; href='javascript: void(0)'&gt;Play Code&lt;/a&gt;&quot;))</pre> To;<br> <pre> sock[sockid].str(string(&quot;', 'mydiv')&quot;,34,&quot; href='javascript: void(0)'&gt;&lt;img border='0' width='100' height='100' src='http://www.clker.com/cliparts/2/2/3/e/11954382541257828096play_symbol_cosmin_humen_01.svg.med.png' /&gt;&lt;/a&gt;&lt;br /&gt;&quot;))</pre> That will grab a generic 'play' button for you<br>
Sweeeeet.<br><br>And can macros be assigned to buttons, too?<br><br>Forgive all my questions, I'm a rather poor programmer, and have insufficient knowledge of Java to figure it out myself.
For sure - in the code, you'll see; <pre> ELSEIF strcomp(args, string(&quot;8&quot;)) sock[sockidx].str(string(&quot;Playing Command!&quot;)) playcommand(8)</pre> <br> Just change that to; <pre> ELSEIF strcomp(args, string(&quot;8&quot;)) sock[sockidx].str(string(&quot;Playing Command!&quot;)) playcommand(4) playcommand(5) playcommand(6)</pre> In the first example, when you request command 1, it will play command 1.&nbsp; You change it so when you play command 1, it will play command 4, then 5, then 6.&nbsp;<br>
Neat. I'll have to see if I can track down the parts to make this. Now if only it could control my (locked standard Bluetooth) PS3!
Ha, scratch that, I could just use a USB IR dongle like <a href="http://www.amazon.com/dp/B000R5H7KE?tag=websearchengi40-20&link_code=as3&creativeASIN=B000R5H7KE&creative=373489&camp=211189">this!</a>
That remote can't turn the ps3 on though. You still need the controller for that.
There you go! Yeah, the PS3 doesn't have an IR port, but I think that little dongle would work fine. For parts, you only need; <ul> <li> <a href="http://www.gadgetgangster.com/257">Propeller Platform USB</a> <li> <a href="http://www.gadgetgangster.com/349">E-Net Module</a> <li> <a href="http://www.mouser.com/ProductDetail/Vishay/TSOP4838/?qs=yGXpg7PJZCiwO12kec0Sug%3d%3d">IR Receiver</a> <li> <a href="http://www.mouser.com/ProductDetail/Everlight/EL-IR333-A/?qs=PGS024CyY0m41A0wDxJ7vg%3d%3d">IR LED</a> </ul> <br>
Is there any source code for an Arduino? I've been working on this exact same project.
actually... i can figure out the pins and code it's the server i'm having trouble with. I'm looking at your source right now. Thanks for posting.
Web server code for arduino doesn't look that hard. It's based on an ENC28J60, which is used in several Ethernet shields. Here's one; http://www.nuelectronics.com/estore/index.php?main_page=project_eth<br><br>
I've got the AsyncLabs wifi shield.<br>http://asynclabs.com/<br><br>Again, I'm just not sure how to do the HTML/Server stuff with the Arduino.
No. I'm not actually sure you can do it with the Arduino libraries - the capture code has to be pretty fast, it's doing several things on each transition (incrementing the transition counter, checking for a time out, etc), and if the instructions are executed too slowly, it will miss transitions. <br><br>Doing this in AVR ASM or with the native gcc C libraries should be fine though.
well I can do it with the Arduino... <br>http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html<br><br>I'm just not sure how to do the server side with the remembering of the codes.
@dlevans, please let me know how thats going i would like if this was in arduino very much!
will do.
wow! <br>that is the project i was looking for ages =)<br>you're awesome.<br><br>first i'll try to gather the parts, but if i cant, <br>well..<br>may be you can make one and sell to me ?<br><br>anyway that is really cool, i'll try to create a house automation working via my android phone.<br>opening apt's door, closing lights etc.. even thinking is awesome.<br>THANKS!

About This Instructable



More by Gadget Gangster:Hack Your Car Talking Resistor Calculator Bananaphone: A Touch Capacitance Synth 
Add instructable to: