Car alarm remote control repurposing

A while ago, I got hold of a car alarm unit and its two remote control fobs. When i hooked it up to 12V I realized that it didn’t  work, not responding to any of the commands from the two fobs even though their batteries were OK. Naturally, I opened up the unit to start harvesting parts and noticed the RF module within (the one that sticks out perpendicularly) and I figured it shouldn’t be too hard to use the module with an Arduino.

20121027_200410.jpg

 

Basically, my code uses pulse in to see whether incoming pulses are longer than 1000 microseconds and if a pulse is longer than that I consider it a ’1′ and if it’s not, a ’0′. So it constructs a string called ‘codein’ about 75 characters long and then it searches for 25 character pre-defined strings within it (using the substring command) , to see whether a button has been pushed on one of the remotes. If a button push has been recorded then it prints out which one over the serial connection. Oh, and I was lucky and discovered that each remote delivers different codes, meaning that I am able to remotely control 8 channels.

To figure out which codes you need to pre-define for your buttons you can un-comment the lines which display the incoming string.So here’s the code: 

 


// RF module receiver code for Arduino.
// The module is connected to the Arduino havin 3 pins: +5, GND and data. The data pin is connected to
//digital pin 11 on the arduino.

int inpin = 11;
int onoff = 0;
int i=0;
String codein=“00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000”;

//there are about 100 zeros in the initial codein

unsigned long duration;
void setup()
{
Serial.begin(9600);
Serial.println(“setup”);
}

void loop()
{

for (i = 0; i < 100; i++) {

duration = pulseIn(inpin, HIGH);
if (duration > 1000)
{
codein.setCharAt(i,‘1’);
}
else {
codein.setCharAt(i,‘0’);
}

}
Serial.println(codein); //uncomment these two lines to figure out your remote codes
delay(1000); // this is the second line
for (i=0; i<75; i++){
if (codein.substring(i,i+25)==“0010100111000110001010000”) // substitute remote codes here
{ Serial.println(“lock!!!”); if (onoff == 1){onoff = 0;} else {onoff = 1;} // LED toggle on/off
break;
}
if (codein.substring(i,i+25)==“0010100111000110001001000”) // and here
{ Serial.println(“unlock!!!”);
break;
}
if (codein.substring(i,i+25)==“0010100111000110001000100”) //and here
{ Serial.println(“mute!!!”);
break;
}
if (codein.substring(i,i+25)==“0010100111000110001000010”) // you get the idea :slight_smile:
{ Serial.println(“ring!!!”);
break;
}

if (codein.substring(i,i+25)==“0010010110111101111001000”)
{ Serial.println(“lock2!!!”);
break;
}
if (codein.substring(i,i+25)==“0010010110111111111000100”)
{ Serial.println(“unlock2!!!”);
break;
}
if (codein.substring(i,i+25)==“0010001001011011111111100”)
{ Serial.println(“mute2!!!”);
break;
}
if (codein.substring(i,i+25)==“0010010010110111111111000”)
{ Serial.println(“ring2!!!”);
break;
}
}

// this toggles the 13 pin led on or off
if (onoff == 1) {
digitalWrite(13,HIGH);
delay(1000);
}
else { digitalWrite(13,LOW);
delay(1000);}
}