loading

I'm tired of these complicated tutorials on how to use certain things. I like simple, easy to understand, step by step instructions. My biggest problem was with IR and POV*. I've finally mastered how to control my project with any TV remote in a few minutes. In this i'ble I'm going to show you simple, step by step instructions on how to control just about anything with your IR remote.

By the way this tutorial is new and updated and works! Last update [ 10/12/2015 ]

IMPORTANT NOTICE:

With the latest release of the Arduino IDE there is a conflicting library that renders this tutorial void. If you'd still like to use this tutorial delete the library called "RobotIRemote". This file will be in the Arduino program. Instructions for deleting this file is in step 3.

This library is for a specific robot that Arduino/venders sell. Unless you intend on buying that shield you can delete that folder and continue with this set of instructions. You can always download it again later!

Step 1: Ingredients:

Electronics:

  • Arduino
  • Any IR remote
  • IR receiver
  • Breadboard
  • Jumper Cables
  • LED
<p>Thanks for the Instructable! I want to turn my amp on and off when my Arduino senses signal from my Sonos. Needed the codes from my remote as I couldn't find them elsewhere. </p>
<p>Thks!!!!!!!</p>
NP awesome! Good luck with the project!
<p>JUST PERFECT!!!</p><p>Best Arduino related tutorial and &quot;instructable&quot; that I read so far, (and I assure you I read a lot).</p><p>Well organized, simple, straight forward, contains all what is required and with a light touch of humor.</p>
Thanks! I'm glad to help where I can!
<p>You are amazing, made my work so easy. Thanks alot :)</p>
<p>This was SOO much better than Adafruits tutorial that has massive arrays you have to capture and then use for each button. Normally they have the BEST stuff for easy understanding. HOWEVER this was by FAR the easiest for my remotes!! The library is about twice the size of the ada one BUT this is so much better I will take the loss on Flash for this ease!! :) <br>I only have one small glitch and it may just have to do with the remote I'm using BUT, if you click the remote too fast the read code loops forever. So the led just flashes all on it's own, until you do a long press on the remote. Again not sure if this is all remotes or just the one I chose. But I plan on adding this to my daughters Tiara project seen below. I want to cram a small tiny remote into a cheap wand, so the wand will control the Crown / Tiara.. Thanks AGAIN!! ~Steve~<iframe allowfullscreen="" frameborder="0" height="281" src="//www.youtube.com/embed/qCLX8vt_f0o" width="500"></iframe></p>
Hey thanks so much! I'm really glad that I was able to help you out!<br><br>Yeah actually it does the same thing for everyone. That was the main complaint I got because of the looping- it's not my library!<br><br>The fix is really simple, after the if statement {<br> if (results.value == X) }<br>add a small delay, like { delay(25); }. <br><br>This worked for me to keep it out of the loop, but don't put the delay too high. I forgot the actual milliseconds I used to fix it. If you go too high then sometimes when you press the button at the same time the arduino is frozen because of the delay. If you go too low then it doesn't fix the loop problem. Experiment, you'll get it. <br><br>And very nice project BTW! <br><br>Instead of cramming a remote into a wand you should just send a signal using an ATtiny85/45/44/24/ and the send feature of IR library. <br><br>I'm still here if you need any help with the IR part. . . :D
<p>hi i used:</p><p>results.value=0;</p><p>on the beginning of the void loop... fixed it for me :)</p>
<p>After beating my head against the wall for 20 mins trying to solve the flashing with the delay (Which I could not get to work) I found the PERFECT solution that works 100% everytime Change this line to:</p><p>if (results.value == 16236607) {results.value = 0; //Do something here}<br>By resetting the &quot;results&quot; back to 0 it cures the looping, because it can't &quot;see&quot; the correct value again until it gets the real code again from the sensor.<br>Thanks again you may want to update the code you shared with this correction and the problem is gone for good :) </p>
<p>Duuude of course! I can't believe I didn't think of that! I never actually used the code (like in a project) other than testing it briefly for the i'ble. I'll go back and change it. Thanks! You could get really fancy and go with an ATtiny13-20SU. I just got a shipment of 20 in the mail! :D</p>
<p>Awesome thanks for the hints!! <br>Yeah no clue why I didn't think of just using the ATTiny!?!?!?! Perfect Idea!!!</p>
<p>Really Good Tutorial here bro. Finally made the IR sensor work! :D</p><p>But for some reasons, many of the links are not working properly. If would be awesome if you could fix those. </p><p>Anyway, Thanks for this! Really appreciate it as a beginner with Arduino! :)</p>
Thanks! I'm not sure what you are talking about the links though. I just went through and checked all of them and they are all working. Maybe you might just have to copy the address and paste it in your browser's address bar.
<p>Sir,</p><p>I am very thankful for your help by these tutorials. I have just received my Arduino NANO in the afternoon and at 9 i have completed my very first Arduino project &quot;led control using ir remote&quot;, thanks to your amazing tutorial. In the following images i have been trying to show that when i press volume up it will switch ' on ' the right LED and when i press the volume down button it will switch ' off ' the LED and same has been done to the right one using program up and down of the ir remote.<br>Thank you once again,<br>regards </p><p>Nishant(INDIA)</p><p>:)</p>
<p>Sweet man! Good job! Keep up the good work!</p>
<p>I have made my mom's room room automated. Now its time for the other room you are awesome ;) :) :). Blessings from my mom too. you are awesome :)</p>
<p>Wow thanks! That is soo cool! I keep on telling myself that I should hook up my light and my fan and outlets to IR, but I'm too lazy to get around to it! Good luck!</p>
<p>Loved the &quot;instructable&quot; Good learning experience. I was able to easily follow all the lines of code which were explained so well by you. </p><p>It was easy to modify the code and implement it to control a 4 relay board, I have assigned different buttons to turn on and off the relays and one button each to turn on all the 4 relays at the same time and another to turn them all off at the same time.</p><p>The TSOP1738 sensor that I got has a different pin-out though, pin 1 is GND, pin2 is VCC &amp; Pin 3 is control.</p><p>Thanks, I enjoyd your tutorial and was able to put it to practical use. I'll post pictures when I have a camera handy??</p>
<p>Hi Sir!<br><br>Can you share how you've done it? Also the codes for it.<br><br>With kind regards.</p>
<p>Part 1</p><p>Finding the Codes<br>of the Remote Controller</p><p>To be able to use the IR Remote, we need to have the Decimal<br>values of all the keys that we intend to use. To get the decimal values of the individual<br>keys, we need to following.</p><p>1.An IR Sensor like the TSOP1738 which is very<br>commonly available.</p><p>2.An Arduino board, any should work, I have used a<br>self made Arduino Uno Compitable</p><p>3.A suitable power source to power the Arduino</p><p>4.The IR Remote that you wish to use</p><p>5.Your computer/laptop whatever you want to use to<br>program the Arduino with</p><p>6.The connecting cables / FTDI adapter as may be<br>required</p><p>The Sketch is intended to read the IR Code from IR Remote<br>controller. After connecting the IR<br>Sensor, in this case the TSOP1738, as per the connections mentioned below, just<br>compile &amp; load this sketch to the Arduino. </p><p>The IR sensor's (TSOP1738) used here, the pins are<br>attached to Arduino as so:</p><p> Pin 1 to GND</p><p> Pin 2 to VCC 5V+</p><p> Pin 3 to PIN 11 on<br>Arduino</p><p>Upon pressing any button on the remote while pointing towards the IR Sensor, the Serial monitor<br>should display the code pertaining to<br>that particular button. Usually the first 8 digits should suffice as the last<br>10 digits are generally common to all the buttons.</p><p>Note down the digits corresponding to the individual<br>buttons of the remote and then we will be able to use these numbers in other<br>sketches to perform assigned tasks.</p><p> Note - this sketch<br>reads the remote buttons value in DECIMAL format. It can also be altered to read the values in<br>HEX format quite easily. Simply replace DEC<br>in the following line in the sketch to HEX </p><p>Serial.println(results.value, DEC);</p><p>Change this line to</p><p>Serial.println(results.value, HEX);</p><p> NOTE THE PIN-OUT<br>ON THE IR SENSORS MAY VARY FROM MODEL TO MODEL PLEASE CHECK THE PINOUT FROM THE DATA SHEET<br>FOR THE MODEL BEING USED BY YOU.</p><p>THE SKETCH</p><p>#include &lt;IRremote.h&gt;</p><p>int IRpin = 11;</p><p>IRrecv irrecv(IRpin);</p><p>decode_results results;</p><p>void setup()</p><p>{</p><p> <br>Serial.begin(9600);</p><p> <br>irrecv.enableIRIn(); // Start the receiver</p><p>}</p><p>void loop() </p><p>{</p><p> if<br>(irrecv.decode(&amp;results)) </p><p> {</p><p> <br>Serial.println(results.value, DEC); // Print the Serial 'results.value'</p><p> <br>irrecv.resume(); // Receive the<br>next value</p><p> }</p><p>}</p><p>Part 2</p><p>The requirement here is to use any IR Remote to turn on<br>&amp; off the relays which can be attached to AC appliances. How you want the<br>relays to react to which button of the remote depends upon you and the sketch<br>can be modified to suit your specific requirement.</p><p>The remote controller that I am using has 6 buttons and<br>the buttons are assigned to do the following jobs :-</p><p> Button<br>1 &ndash; to turn on all the four relays</p><p> Button<br>2 &ndash; to turn off all the four relays</p><p> Button<br>3 &ndash; to turn on relay 1 &amp; 2</p><p> Button<br>4 &ndash; to turn off relay 1 &amp; 2</p><p> Button<br>5 &ndash; to turn on relay 3 &amp; 4</p><p> Button<br>6 &ndash; to turn off relay 3 &amp; 4</p><p>Just remember that you will require the &ldquo;<u>DEC Codes</u>&rdquo;<br>of the buttons pertaining to your remote that you must have noted down<br>previously as explained in the &ldquo;<u>Part 1</u>&rdquo; above. </p><p> The control pins<br>of the 4 relays are connected to pin 5,6,7 &amp; 8 of the Arduino respectively</p><p> The relays used<br>here are 12V Relays so a common 12V Power supply has been used to power both<br>the Arduino &amp; the Relay Board so GND Pin is automatically common in this<br>case if we use separate power supply units for the Arduino &amp; the Relay Board<br>then we need to ensure that The Ground Pin is common</p><p> that is the GND of<br>the Arduino &amp; The Relay Board are connected to each other</p><p> In this case the<br>remote has 6 buttons and the value of each button has been read with the previous<br>sketch mentioned in part 1, which is meant to read the values of these buttons<br>on the serial monitor.</p><p> The IR sensor's<br>(TSOP1738) used here, the pins are attached to Arduino as so:</p><p> Pin 1 to GND</p><p> Pin 2 to VCC 5V+</p><p> Pin 3 to PIN 11 on<br>Arduino</p><p> NOTE THE PIN-OUT<br>ON THE IR SENSORS MAY VARY FROM MODEL TO MODEL</p><p> PLEASE CHECK THE<br>PINOUT FROM THE DATA SHEET FOR THE MODEL BEING</p><p> USED BY YOU.</p><p>The Sketch is as follows :-</p><p>#include &lt;IRremote.h&gt;</p><p>int IRpin = 11; //<br>pin for the IR sensor</p><p>int RELAY1 = 5; <br>// Relay 1</p><p>int RELAY2 = 6; <br>// Relay 2 </p><p>int RELAY3 = 7; <br>// Relay 3</p><p>int RELAY4 = 8; <br>// Relay 8</p><p>IRrecv irrecv(IRpin);</p><p>decode_results results;</p><p>void setup()</p><p>{</p><p> <br>Serial.begin(9600);</p><p> <br>irrecv.enableIRIn(); // Start the receiver</p><p> pinMode(RELAY1,<br>OUTPUT);</p><p> pinMode(RELAY2,<br>OUTPUT);</p><p> pinMode(RELAY3,<br>OUTPUT);</p><p> pinMode(RELAY4,<br>OUTPUT);</p><p> <br>digitalWrite(RELAY1, LOW); // Make sure relay 1 is off when the Arduino<br>is first powered up</p><p> <br>digitalWrite(RELAY2, LOW); // Make sure relay 2 is off when the Arduino<br>is first powered up</p><p> <br>digitalWrite(RELAY3, LOW); // Make sure relay 3 is off when the Arduino<br>is first powered up</p><p> <br>digitalWrite(RELAY4, LOW); // Make sure relay 4 is off when the Arduino<br>is first powered up</p><p>}</p><p>void loop() </p><p>{</p><p> if (irrecv.decode(&amp;results))</p><p> {</p><p> <br>irrecv.resume(); // Receive the<br>next value</p><p> }</p><p> <br>switch(results.value)</p><p> {</p><p> case 12345678: //<br>here you should change this 8 digit value to the value of your remote<br>controller</p><p> <br>digitalWrite(RELAY1, HIGH); // turn all the relays 1,2,3,4 on at the same time</p><p> <br>digitalWrite(RELAY2, HIGH); // turn all the relays 1,2,3,4 on at the same time</p><p> <br>digitalWrite(RELAY3, HIGH); // turn all the relays 1,2,3,4 on at the same time</p><p> <br>digitalWrite(RELAY4, HIGH); // turn all the relays 1,2,3,4 on at the same time</p><p> break;</p><p> case 12345679: //<br>here you should change this 8 digit value to the value of your remote<br>controller</p><p> <br>digitalWrite(RELAY1, LOW); // turn all the relays 1,2,3,4 OFF at the<br>same time</p><p> <br>digitalWrite(RELAY2, LOW); // turn all the relays 1,2,3,4 OFF at the<br>same time</p><p> <br>digitalWrite(RELAY3, LOW); // turn all the relays 1,2,3,4 OFF at the<br>same time</p><p> <br>digitalWrite(RELAY4, LOW); // turn all the relays 1,2,3,4 OFF at the<br>same time</p><p> break;</p><p> case 12345680: //<br>here you should change this 8 digit value to the value of your remote<br>controller</p><p> <br>digitalWrite(RELAY1, HIGH); // turn the relays 1 &amp; 2 on at the same<br>time</p><p> <br>digitalWrite(RELAY2, HIGH); // turn the relays 1 &amp; 2 on at the same<br>time</p><p> break;</p><p>case 12345681: // here<br>you should change this 8 digit value to the value of your remote controller</p><p> <br>digitalWrite(RELAY1, LOW); // turn the relays 1 &amp; 2 OFF at the same<br>time</p><p> <br>digitalWrite(RELAY2, LOW); // turn the relays 1 &amp; 2 OFF at the same<br>time</p><p> break;</p><p>case 12345682: // here<br>you should change this 8 digit value to the value of your remote controller</p><p> digitalWrite(RELAY3, HIGH); // turn the relays<br>3 &amp; 4 on at the same time</p><p> <br>digitalWrite(RELAY4, HIGH); // turn the relays 3 &amp; 4 on at the same<br>time</p><p> break;</p><p>case 12345683:</p><p> <br>digitalWrite(RELAY3, LOW); // turn the relays 3 &amp; 4 off at the same<br>time</p><p> <br>digitalWrite(RELAY4, LOW); // turn the relays 3 &amp; 4 off at the same<br>time</p><p> break;</p><p> }</p><p>}</p>
<p>send me your email address - my email address is mahibanquets@gmail.com and give me a couple of days, i'll mail you all the details</p><p>Regards</p>
<p>I'm glad I could help out! Looks great!</p>
<p>Hello!<br><br>Can you help me on my project to make a code, I will be using only 3 channel/buttons on the remote that can power 3 different relays for specific output.<br><br>Thanks in advance.<br><br>Cheers!</p>
<p>This is AMAZING! Works perfectly, thank you so much!</p>
Thanks!
<p>HELP!</p><p>I made it, but different numbers appear on serial monitor after I press the same button consecutively. </p><p>Is it IR sensor fault? (I m using sm0038)</p><p>Is there fault in library?</p><p>Is there encryption in every remote I use? (I tried 2 remotes)</p>
<p>goood</p>
<p>This is an excellent project Works great with LED. However, small motor creates problem. Cannot turn off. I see suggestions of others but I am not sure where to insert it in the code (i.e, delay(25); or results.value=0; Please, help!</p>
So. . . what are you trying to do? Add a delay or change results.value?
Change code to stop a flickering LED and also allow the motor to be turned off. It is as if the LED is oscillating between the on-off state. And the switches on but not off. Whatever works...delay or results.value modification. Some of the people following ur project suggested it.
<p>Try changing all the delays to 250-1000ms</p>
<p>i have problem ,your code missing please reply me your code please.........my emailaddress is....neranjanmadhumal@gmail.com</p><p>pleasereply me</p>
<p>Codes all there what are you having trouble getting to.</p>
<p>Muito bom.</p><p>Obrigado</p>
<p>I need some help here.... with your IRdecoder sketch, my serial monitor just reads the same code over and over, rather than just saying a code once and then showing a constant different value afterwards. Also, for the led sketch, when i press the button on my remote, the led just starts blinking, and then I can't turn it off after that unless i restart the board or unplug the ir sensor. What am I doing wrong? thanks.</p>
<p>great!!!!</p>
Good, even for a beginner
<p>how do i switch on and off a bulb using tv remote?</p><p>i need the hex code?</p>
<p>man thanks! btw we are doing ir remote for TV using arduino, should we first need a tsop382 receiver to capture the codes from the remote of our tv then send it to the arduino?</p>
Yep that sounds like the way to go! I still have no idea on how to transmit, it may be one of my next i'bles :)
<p>G.R.E.A.T. That's all I can say. Let's have some more like this!</p>
Thank you! Hopefully soon!
<p>Great tutorial! can you tell me which IR you used? thx.</p>
Which IR what? Remote, library, LED bulb. . .
I am sorry. The physical component, the IR receiver. I am wanting to follow your plans and would like to use the same component. thank you.
<p>Anything really. http://www.ebay.com/itm/10-PCS-Universal-IR-Infrared-Receiver-38Khz-Infrared-Sensor-For-Arduino-Remote-/291844050710?hash=item43f342cf16:g:MB0AAOSwdzVXraJj</p>
<p>hey, if u could let me know, how to make the transmitter part. that is i am trying to make a remote with arduino, single IR LED, and few keys (just like TV remote). i want to send different codes for different tasks with different switches, but only single IR LED. IRsendDemo was of bit help, but it deals with only sending 1 type of code, how to multiply it for multiple codes. i am fine with designing of receiver part. just working upon making a remote of mine own, but unable to do so, if u could help.</p>
<p>I have no idea how to transmit. </p>
<p>hey, i would like to know if u could help how to transmit different codes using arduino, single IR LED and multiple switches, same as TV remote, i want to build remote, for different keys i press, it should emit different codes. and after that i am fine with the receiver part to do different task with different codes. but it is with pre-made remote. i want to make one of my own. the IRsendDemo is a help, but it deals with only 1 code, and less to understand. also if u could help with the programming code.</p>

About This Instructable

517,002views

431favorites

License:

Bio: ¿Qué tal? I'm 16 and enjoy learning about electronics. I am self-taught. I love programming my Arduino and soldering circuits. My newest hobby is ... More »
More by HavocRC:DIY FPV Antenna Protector Case Control Your RC Plane With Your Phone's Acclerometer DIY Receiver Controlled Switch (Cheap and Easy) 
Add instructable to: