Find all your DIY electronics in the MakerShed. 3D Printing, Kits, Arduino, Raspberry Pi, Books & more!

arduioo week6 DIY Hacks & How Tos: Remote Control with an Arduino

Most of the buttons on a remote control are never used. So why not use them to control appliances and other electronics around your house. In this project, I am going to show you how to use an Arduino to decode the signal from your remote and use it to make an outlet switch that can turn your electronics on and off.

When you are done, you will be able to control lights, fans and even your coffee maker with your TV remote.

See the full series here.

Here’s the project on Instructables.

Related

Steps

Step #1: Materials

PrevNext
DIY Hacks & How To’s: Remote Control with an Arduino
  • Here are the materials and tools that you will need for this project: Materials: Arduino Microcontroller AC Power Adapter For the Arduino 38 kHz Infrared Receiver Module (Radio Shack part# 276-640) Red LED Green LED Momentary Pushbutton Switch Two 100 ohm Resistors 10 kohm Resistor Diode 5V Relay or Relay Shield Printed Circuit Board Plastic Project Housing Extension Cord
  • Tools: Wire Strippers Soldering Iron and Solder Drill and Bit Set Sharp Knife Hot Glue Gun

Step #2: Download and Install the IR Remote Library

PrevNext
DIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an Arduino
  • This project uses an IR remote library that was developed by Ken Shirriff. This library lets you decode the signal coming from your remote. You can check out his original project and setup here: http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
  • The first thing that you need to do for this project is download the library zip file. You can find it here: https://github.com/shirriff/Arduino-IRremote
  • Click "Download ZIP" on the right side of the page and save the zip file. Then unzip it. Rename the folder "IRRemote" (unless that name is already being used). Then copy the folder into your libraries directory.

Step #3: The Arduino Code

PrevNext
DIY Hacks & How To’s: Remote Control with an Arduino

// Upload this code to your Arduino

include

int RECVPIN = 11; IRrecv irrecv(RECVPIN); decode_results results; unsigned long CurrentValue = 0; unsigned long StoredCode = 0; const int buttonPin = 6; // the number of the pushbutton pin const int ledPin = 4; // the number of the LED pin const int outputPin = 3; // the number of the output LED pin const int relayPin = 2; // the number of the relay pin int buttonState = 0; // variable for reading the pushbutton status int RecordState = 0; //is the reciever in record mode int outputState = 1; //is the output on or off

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

// initialize the LED pin as an output:

pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input: pinMode(outputPin, OUTPUT);
// initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT);
pinMode(relayPin, OUTPUT);
// initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT);

}

void loop() {

// read the state of the pushbutton value: buttonState = digitalRead(buttonPin);

// if a signal is detected, store the value if (irrecv.decode(&results)) { CurrentValue = (results.value);

// if the recieved value equals the programed value, then toggle the output state if(CurrentValue == StoredCode) { outputState = !outputState; }

// if the record mode is activated store the current value as the programed value if (RecordState == 1) { StoredCode = CurrentValue; RecordState = 0; digitalWrite(ledPin, LOW);
Serial.println(StoredCode); //displays stored code for reference }

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

else //if no signal is detected, then the current value is 0 { CurrentValue = 0; }

// check if the record button is pressed. // if it is, the buttonState is HIGH: if (buttonState == HIGH) {

//wait for the button to be released while (buttonState == HIGH) { buttonState = digitalRead(buttonPin); }

//turn on the LED to indicate that record mode is on digitalWrite(ledPin, HIGH); RecordState = 1; }

//set the appropriate output state if(outputState == 1) {

  digitalWrite(outputPin, HIGH);
  digitalWrite(relayPin, HIGH);

} else { digitalWrite(outputPin, LOW); digitalWrite(relayPin, LOW); }

}

Step #4: The Circuit

PrevNext
DIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an Arduino
  • This circuit uses a 38 kHz Infrared Receiver Module to detect the signal from the remote. The right pin of this connected to 5V. The middle pin is connected to GND. The Left pin connects to digital pin 11 on the board. The circuit also has two indicator LEDs. One indicates that the receiver is in programming mode and the other indicates whether the output is on or off. One end of each LED is connected to GND. The other end is connected to a 100 ohm series resistor. The resistors are then connected to digital pins 3 and 4.
  • A momentary switch is used to set programming mode. One end of the switch is connected to 5V. The other end of the switch is connected to digital pin 6 and a 10 kohm resistor. The other end of the resistor is connected to GND.
  • An optional relay/relay shield can be connected to digital pin 2 and GND. You can add any additional outputs that you want. This can let you control multiple devices or multiple functions on the same device.

Step #5: Test the Circuit on a Breadboard

PrevNext
DIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an Arduino
  • It is always a good idea to test your circuit on a breadboard before soldering it together.
  • When the Arduino is powered, the output indicator (green) LED should turn on. This indicates that the output at pin 2 is HIGH and can be used to activate another circuit. To program the receiver, press the button. When the button is released, the programming mode indicator (red) LED will turn on.
  • Now point your remote at the receiver module and press a button. If the Arduino registered the signal, the programming mode LED will turn off. The receiver is now programmed. Pressing this button on the remote again will cause the output at pin 2 to toggle between off and on. The output state is indicated by the LED.
  • You can use the signal from pin 2 to activates another circuit directly or you can use a relay/relay shield to turn an appliance on and off.

Step #6: Solder the Circuit Together on a Printed Circuit Board

PrevNext
DIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an Arduino
  • After testing the circuit on a breadboard, you can solder it together on a printed circuit board. The IR receiver module, the switch and the LEDs would be mounted to the housing. So I connected them to the board with jumper wires.
  • I added a small relay that would be activated by the output of pin 2. In most cases you will want to connect a relay driver circuit. This is because the maximum output of an Arduino digital pin is 40 mA and most relays require more than this to operate. However, I found a relay that only required 25mA to operate. So I was able to connect it directly to the digital pin. It is always a good idea to attach a flyback diode across the terminals of the coil of a relay. This helps to protect against voltage spikes when the relay is turned off.
  • The relay can act as a general switch and activate just about anything. In this case, I attached an extension cord. This will allow it to act as a remote controlled outlet. Always check to make sure that your relay is rated high enough for your intended load.

Step #7: Mount the Circuit in an Insulated Housing

PrevNext
DIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an Arduino
  • Now you need to find a good insulated housing to hold your project. I used a 6x3x2 plastic project housing from RadioShack. On one end, I drilled two holes from the LEDs, one hole for the IR receiver and one hole for the switch. Then I made holes in the opposite end for the Arduino power cord and the extension cord.
  • I used hot glue to secure the LEDs and the Receiver. The switch was held in place with its own nut and lock washer. You can also use hot glue to secure loose wires and to hold the boards in place.
  • Be very careful not to accidentally pull any wires out of the Arduino as you are fitting everything into the housing.

Step #8: Use Your Remote Controlled Switch to Activate Appliances and Other Electronics

PrevNext
DIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an ArduinoDIY Hacks & How To’s: Remote Control with an Arduino
  • Plug in the power supply for the Arduino and it will automatically turn on. Then plug the male end of the extension cord into an outlet and plug the device that you want to control into the female end of the extension cord. The device should turn on.
  • To program the receiver, press the red button. The red light will turn on. Then point your remote at the receiver and press a button. If the Arduino registered the signal, then the red light will turn off. Now you can use that button to turn the attached device on and off. You can use this to remotely control lights, fans or even your coffee maker.

Step #9: Manually Insert IR Values into the Arduino Code (optional)

PrevNext
DIY Hacks & How To’s: Remote Control with an Arduino

If you plug the Arduino into your computer, you can use the Serial Monitor tool to view the value of the IR signals for the various buttons on your remote. This gives you the option of manually inserting these values into the code. By doing this you can program responses to multiple buttons. It also means that you will not have to reprogram the receiver whenever the power is disconnected.

Jason Poel Smith

My name is Jason Poel Smith. I have an undergraduate degree in Engineering that is 50% Mechanical Engineering and 50% Electrical Engineering. I have worked in a variety of industries from hydraulic aerial lifts to aircraft tooling. I currently spend most of my time chasing around my new baby. In my spare time I make the how-to series "DIY Hacks and How Tos."


blog comments powered by Disqus

Related Supplies at Maker Shed

Follow

Get every new post delivered to your Inbox.

Join 26,603 other followers