[ PROGRESS ] - Go to the bottom of the guide if you'd like to see progress updates - [ PROGRESS ]
Arduino is something I've shied away from for years. I was always worried that any project I'd attempt would be too technical, frustrating, and inaccessible. Running an arduino as a universal IR remote is fortunately well within the grasp of almost anyone who cares to attempt it. After enjoying the hospitable arduino community in all its wisdom, I've realized how fortunate we all are to have such a rich source of information at our disposal. The individuals who made this project possible have gone to great lengths to share their knowledge and I for one would like to thank everyone. My hope is that this guide will make your IR remote setup as easy as possible. This is honestly the most enjoyable and educational project I think anyone could wish to start with. I hope you find this guide helpful.
I've attached all my modified files for your convenience. That should make things very easy, and with the right knowledge, that is all you'll need. I imagine some may have more use for greater detail. I'm providing a separate Guide I will refer to as Additional Guide located lower in the thread, which describes file changes I've made, and how I made them. I'll do my best to make this as clear and complete as I can. This has all worked fantastic for me so far, but to be honest, I've not tested this for very long and can't vouch for any long-term reliability. Please keep in mind that I'm a newb myself, and I'm only hoping to provide you with insight. Be sure to read up on soldering, circuitry, safety, arduino basics and any other subject of inquiry that you may encounter in this guide.
One of the best things I found in my search for Universal IR bliss, is Jubito. If you aren't familiar with Jubito by Jambel, it's time for you to do your homework. (you don't have to, but please do) The guide I'm linking to by Jambel will already meet the needs of most anyone out there. It is very clear and newb-friendly. This guide will provide the same newb friendliness, but will also go into greater detail about the technical background of the code.
Jambel created a sketch which was written for the older IR library known as Arduino-IRremote by z3t0. The Arduino-IRremote library later spawned an updated library known as IRLib by Cyborg5. Although the Arduino-IRremote met most of my needs as it would yours, it wasn't compatible with my Uverse boxes (Motorola VIP2200 & VIP2250). That is what forced me to learn more about IR and arduino coding then I care to know, to be honest. IRLib claims to be compatible with Uverse and I can confirm that this is true, but they make you merge the code yourself. That was where things got complicated for me, but not for you. The real technical challenge beyond modifying the library, was creating a sketch which let me send RCMM (Uverse IRTYPE) commands at will instead of the default sketch which could only store and send 1 code at a time. I mention this for those who seek greater detail, as for anyone else, nevermind what I just said. Just pay close attention from here on out.
[ EDIT ] 2015-11-29 - Some time has passed since I wrote the guide. It's worth noting that Pronto Send Hex offers greater compatibility than IRLib when used in conjunction with IrScrutinizer. This is discussed in greater detail in the Progress Updates section at the bottom of the guide. A new updated guide will follow soon.
Jubito:
"Wrap your Arduino with Jubito and dynamically populate HTML5 web interfaces against custom Instruction Sets. Expose your projects to the Internet with the built-in lightweight web server and gain access anywhere in the world, from any device. No extra programming or native code required."
For those who don't want to read that, Jubito is running a basic server on your computer which when accessed from a browser provides a full website where commands can be set and accessed. Those commands are sent to the arduino via your computer. For all intents and purposes the Jubito site is your web-accessible arduino serial monitor. Jubito helps facilitate the process of automating your home and that means you can do way more than just sending IR signals. That is a story for another time, but to make this long story short, Jubito is your friend.
Things to seriously keep in mind:
-
If the IR signal readout appears as RAW data or isn't otherwise decoded properly, you are dealing with 1 of at least 7 probable causes.
a. Make sure the recv pin is set correctly in the sketch. (Pin 2 in my case)
b. Your remote isn't close enough to the receiver or sometimes not far enough. Get as close as you can and as far as you can (try lots of positions)
c. The library simply doesn't support your remote. Possible decoding solutions are discussed in the PROGRESS UPDATES section. (I estimate a 30% chance of no support in IRLib)
d. "#define RAWBUF" should be changed from default to 140 to accomodate duration (Located in IRLib.h) (things get tricky here)
e. Some code (who knows what) will need to be added to either the library or sketch in order to decode. (might involve raw data)
f. Let's assume things are complicated. You'll have to read up on how to decode raw data. (Good Luck with that)
g. Hardware Issues (May god be with you) -
This isn't a hardware guide so make sure you've got your hardware needs covered. That means if you aren't even able to read some kind of signal from your remote, it's almost certainly a hardware problem and you need to resolve it.
-
Just so you know, you don't strictly have to use one specific arduino board. Addicore ESP8266 ESP-01 WiFi Wireless Tranceiver Module A small wifi shield like that one can actually run arduino code and host a simple website on it's own wirelessly. Think that one over for yourself. The possibilities are endless, but that's way beyond the scope of this guide.
-
You may have to troubleshoot a variety of issues. Please know that I understand, but this isn't a troubleshoot guide. Still, I'll try to mention where the more immediate sticking points could lie. You are seriously going to want to read almost every reference I provide if your problems prove difficult. It's the best I can do for you, but at least there's hope.
-
The IR transmitter (LED) belongs on Arduino PIN 3. I accidentally had PIN 2 indicated as the transmitter PIN in this guide. PIN 3 is the transmitting PIN for IRLib. Also note that the IR transmitter used in the guide has a very short range of around 3 - 4 Feet. If you know what you're doing, I'm sure you can find a more high powered alternative.
I used the following hardware:
You'll want to shop around for yourself. These links are for reference only. A total budget of $30 - $40 should be enough. If you already have the arduino board then $10 should be your total budget.
Sparkfun Redboard (required)
940nm IR Transmitter LED 40deg - IR333C (required)
38khz IR Receiver - TSOP38238 (required)
100 ohm resistor (required)
MALE FEMALE CABLE (not required)
or
MALE MALE CABLE (not required)
Breadboard (now this is handy) (not required)
Solderless Breadboard Jumper Wire (not required)
Follow this Jubito Guide instead if you don't care about using IRLib (most current IR Library)
Here is where I found the Uverse IR Protocol Info
########## TO BE CONTINUED ##########
Files for Guide rcmm Uverse.zip (1.21 MB)