Clone A Remote With Arduino
Clone A Remote With Arduino
Table of Contents
Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
http://www.instructables.com/id/Clone-a-Remote-with-Arduino/
Author:randofo Randy Sarafan loves you!
I am the Technology Editor here at Instructables. I am also the author of the books 'Simple Bots,' and '62 Projects to Make with a Dead Computer'.
Subscribing to me = fun and excitement!
To start, I went to the IR Sensor Tutorial on Adafruit.com and loaded the following script onto my Arduino:
void setup(void) {
Serial.begin(9600);
Serial.println("Ready to decode IR!");
}
void loop(void) {
uint16_t highpulse, lowpulse; // temporary storage timing
highpulse = lowpulse = 0; // start out with no pulse length
// same as above
while (! (IRpin_PIN & _BV(IRpin))) {
// pin is still LOW
lowpulse++;
delayMicroseconds(RESOLUTION);
if ((lowpulse >= MAXPULSE) && (currentpulse != 0)) {
printpulses();
currentpulse=0;
return;
}
}
pulses[currentpulse][1] = lowpulse;
void printpulses(void) {
Serial.println("\n\r\n\rReceived: \n\rOFF \tON");
for (uint8_t i = 0; i < currentpulse; i++) {
http://www.instructables.com/id/Clone-a-Remote-with-Arduino/
Serial.print(pulses[i][0] * RESOLUTION, DEC);
Serial.print(" usec, ");
Serial.print(pulses[i][1] * RESOLUTION, DEC);
Serial.println(" usec");
}
}
I attached pin 1 of a 38mhz receiver to pin 2 of the Arduino, the middle pin to ground, and pin 3 to power.
I pointed the remote at the receiver and pressed the volume-up button on the remote.
Received:
OFF ON
58200 usec, 8280 usec
4080 usec, 520 usec
1540 usec, 520 usec
1520 usec, 540 usec
500 usec, 520 usec
500 usec, 520 usec
500 usec, 520 usec
1540 usec, 520 usec
500 usec, 540 usec
1520 usec, 520 usec
500 usec, 540 usec
1520 usec, 520 usec
1540 usec, 520 usec
1540 usec, 520 usec
1520 usec, 540 usec
500 usec, 520 usec
500 usec, 520 usec
500 usec, 520 usec
20120 usec, 520 usec
1540 usec, 520 usec
1520 usec, 540 usec
500 usec, 520 usec
500 usec, 540 usec
480 usec, 540 usec
1520 usec, 520 usec
500 usec, 540 usec
480 usec, 540 usec
500 usec, 520 usec
20140 usec, 540 usec
1520 usec, 540 usec
1520 usec, 520 usec
500 usec, 540 usec
480 usec, 540 usec
500 usec, 520 usec
1540 usec, 520 usec
500 usec, 520 usec
1520 usec, 540 usec
500 usec, 520 usec
1540 usec, 520 usec
1520 usec, 540 usec
1520 usec, 520 usec
1540 usec, 520 usec
500 usec, 520 usec
500 usec, 540 usec
500 usec, 520 usec
From the string of numbers I was able to deduce that the code repeated about 4 times and was as follows:
From there I generated code which raises the volume, pauses, and then lowers the volume again:
http://www.instructables.com/id/Clone-a-Remote-with-Arduino/
// The setup() method runs once, when the sketch starts
void setup() {
// initialize the IR digital pin as an output:
pinMode(IRledPin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
Serial.println("Sending IR signal");
//volume goes up
volumeUp();
// so 26 microseconds altogether
microsecs -= 26;
}
void volumeUp() {
// This is the code for my particular Nikon, for others use the tutorial
// to 'grab' the proper code from the remote
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(520);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(480);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
http://www.instructables.com/id/Clone-a-Remote-with-Arduino/
delayMicroseconds(20140);
pulseIR(520);
///////
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(520);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(480);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(20140);
pulseIR(520);
///////
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(520);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1520);
pulseIR(520);
http://www.instructables.com/id/Clone-a-Remote-with-Arduino/
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(480);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(20140);
pulseIR(520);
///////
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(520);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(1520);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(480);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(20140);
pulseIR(520);
///////
}
void volumeDown() {
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
http://www.instructables.com/id/Clone-a-Remote-with-Arduino/
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(480);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(19120);
pulseIR(520);
///////
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(480);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(19120);
pulseIR(520);
///////
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
http://www.instructables.com/id/Clone-a-Remote-with-Arduino/
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(480);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(19120);
pulseIR(520);
///////
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(1540);
pulseIR(520);
delayMicroseconds(480);
pulseIR(520);
delayMicroseconds(500);
pulseIR(520);
http://www.instructables.com/id/Clone-a-Remote-with-Arduino/
delayMicroseconds(500);
pulseIR(520);
delayMicroseconds(19120);
pulseIR(520);
///////
}
To clone your own remote, simply run the first Arduino sketch, copy the output from the serial monitor, and transcribe those values into the volume control sketch in place
of the volume-up and volume-down commands. If you wanted to commit a little bit more time to this, you can also create code to parse the output of the first script to just
drop into the remote output script.
*Note that I am using an Arduino Wireless Shield . This is entirely unnecessary. I just happened to need one for the project i was working on when I made this overview.
http://www.instructables.com/id/Clone-a-Remote-with-Arduino/
Related Instructables
Motion RC Helicopter
Easy RC Car Hack an RC How to make an activated Spy Cam Hand Motion
Controller Mod car's unused Arduino based "Attack Project - EASY Controlled R/C
by Mr.NHRA 5th channel! by night light with Car by
Creeper" by (video) by
joedog86 infrared remote frank26080115
TheNewHobbyist rollingstock
control! by
timotet
Comments
1 comments Add Comment
http://www.instructables.com/id/Clone-a-Remote-with-Arduino/