Introduction: Linkit One IR Remote Blocker

This is my first instructable and I am going to show you how to design a IR remote jammer. This is a really cool prank project if you want to prank on someone. This project works by capturing the code from the remote and then retransmitting the code multiple times making it seem like the remote is broken. This is a really fun project to design over a weekend.

Step 1: Components

Here is a list of all the components required to get started, make sure you collect all the components first before proceeding to other steps-


IR Receiver




Step 2: Schematics

The schematics of the project can be found in the picture above. You do not need to solder anything as we will be using a bread board. If you are facing any power issues use a transistor before the IR LED to power up the LED.

Step 3: Program

To upload the program you need to install the Linkit one plugin along with the arduino IDE. You can find instructions on how to do that in the official website. You can also download the IDE with the Linkit One plugin pre-installed from GitHub.

#define times_to_annoy           15
#define delay_to_start_annoying 1000 #define delay_between_annoying 750 #define cooldown 15000 #define IRledPin 13 #define IRpin 7 // the maximum pulse we'll listen for - 65 milliseconds is a long time #define MAXPULSE 65000 // what our timing resolution should be, larger is better // as its more 'precise' - but too large and you wont get // accurate timing #define RESOLUTION 20 // we will store up to 100 pulse pairs (this is -a lot-) uint16_t pulses[100][2]; // pair is high and low pulse uint8_t currentpulse = 0; // index for pulses we're storing #define IRpin_PIN PIND void setup(void) { Serial.begin(9600); Serial.println("Ready to decode IR!"); } void loop(void) { //Serial.println("Looking for a code"); uint16_t highpulse, lowpulse; // temporary storage timing highpulse = lowpulse = 0; // start out with no pulse length // while (digitalRead(IRpin)) { // this is too slow! while (IRpin_PIN & (1 << IRpin)) { // pin is still HIGH // count off another few microseconds highpulse++; delayMicroseconds(RESOLUTION); // If the pulse is too long, we 'timed out' - either nothing // was received or the code is finished, so print what // we've grabbed so far, and then reset if ((highpulse >= MAXPULSE) && (currentpulse != 0)) { annoy(); currentpulse=0; return; } } // we didn't time out so lets stash the reading pulses[currentpulse][0] = highpulse; // same as above while (! (IRpin_PIN & _BV(IRpin))) { // pin is still LOW lowpulse++; delayMicroseconds(RESOLUTION); if ((lowpulse >= MAXPULSE) && (currentpulse != 0)) { annoy(); currentpulse=0; return; } } pulses[currentpulse][1] = lowpulse; // we read one high-low pulse successfully, continue! currentpulse++; } void annoy(void) { Serial.println("Captured remote code!"); delay(delay_to_start_annoying); for(int lcv = 0; lcv < times_to_annoy; lcv ++) { delay(delay_between_annoying); pulsepulses(); } Serial.println("Annoying done for now ... looking for another code"); delay(cooldown); } void pulsepulses(void) { //Serial.println("\n\r\n\rReceived: \n\rOFF \tON"); pulseIR(pulses[0][1] * RESOLUTION); for (uint8_t i = 1; i < currentpulse; i++) { delayMicroseconds(pulses[i][0] * RESOLUTION); pulseIR(pulses[i][1] * RESOLUTION); } } void pulseIR(long microsecs) { // we'll count down from the number of microseconds we are told to wait cli(); // this turns off any background interrupts while (microsecs > 0) { // 38 kHz is about 13 microseconds high and 13 microseconds low digitalWrite(IRledPin, HIGH); // this takes about 3 microseconds to happen delayMicroseconds(10); // hang out for 10 microseconds digitalWrite(IRledPin, LOW); // this also takes about 3 microseconds delayMicroseconds(10); // hang out for 10 microseconds // so 26 microseconds altogether microsecs -= 26; } sei(); // this turns them back on }

Step 4: Testing

After completing the previous steps all you have to do is set it up in a hidden location where it can capture all the signals from the remote and then re transmit it. If you have any problems leave a comment below and I would be glad to help you out. Hope you had fun.