Reverse engineering ELRO DB280 Doorbel: Difference between revisions

From Randomdata wiki
Jump to navigation Jump to search
Intro for Arduino code for ELRO DB280 doorbel
imported>Ardillo
 
(2 intermediate revisions by one other user not shown)
Line 3: Line 3:
The ELRO DB280 is a doorbel system with a wireless remote.
The ELRO DB280 is a doorbel system with a wireless remote.
The system has a fixed code, although it can be changed quite easily by changing some "solder bridges"
The system has a fixed code, although it can be changed quite easily by changing some "solder bridges"
 
=433 Signal encoding=
We analyzed the wireless signal with an Logic analyzer and a 433 receiver.
We analyzed the wireless signal with an Logic analyzer and a 433 receiver.


Line 40: Line 40:
   pinMode(status, OUTPUT); //Define status LED
   pinMode(status, OUTPUT); //Define status LED
   digitalWrite(rfout, LOW); //extra check that output is LOW
   digitalWrite(rfout, LOW); //extra check that output is LOW
 
}
void loop() {
void loop() {


Line 84: Line 84:
}
}
</pre>
</pre>
[[Category:Projects]]
[[Category:Reverse enginering]]

Latest revision as of 17:34, 10 February 2014

The ELRO DB280 is a doorbel system with a wireless remote. The system has a fixed code, although it can be changed quite easily by changing some "solder bridges"

433 Signal encoding

We analyzed the wireless signal with an Logic analyzer and a 433 receiver.

The jumpers are set:

10000100

After analysing the pulses with the logic analyzer we do see the following

0001010101000101010101010

If we invert the set jumpers and we the code 1 character we see the following:

 0 1 1 1 1 0 1 1
0001010101000101010101010

We can conclude:

  • Every pulse uses a 0 in front
  • The code is inverted (or it's default up unless it's brought to the ground)
  • There is a trailer: "010101010"

Arduino code to trigger ELRO DB280 doorbel

This code triggers the ELRO DB280 doorbel, it's a loop and it goes on and on and on...

 /*
 This is Fish_ his DoorbelGOon code 0.1, if you change it, let me know so we can create better verions.
 More info check @fish_ on twitter
 */
int rfout=12; //rf output pin
int status=13; //status pin
int longwait=0; // declare the longwait int

void setup() {
  // Open serial debug communications and wait for port to open:
  Serial.begin(9600);
  
  pinMode(rfout, OUTPUT);  //Define rf 433 transmitter pin
  pinMode(status, OUTPUT); //Define status LED
  digitalWrite(rfout, LOW); //extra check that output is LOW
}
void loop() {

  // Set up a Pulse String of the doorbel
  String stringOne = "0001010101000101010101010"; //first digit is ignored
  int highpulse=750; // Length of the 1 pulse
  int highbreak=300; // Length of the 1 break
  int lowpulse=250; // Length of the 0 pulse
  int lowbreak=900; // Length of the 0 break

  int offtime=1; // Declare the offtime integer
  int ontime=1;  // Declare the ontime integer
  int pulselength=25;

  Serial.println(stringOne); //Debug output
  Serial.println(); //Debug enter

  int pulses=0;  // Declare the pulses integer
  
  //This Block gets the 0 or 1 of the string and sets the pulse and break time
  while(pulses < pulselength) {
    if (stringOne.substring(pulses,(pulses+1)) == "0") {
        ontime=highpulse;
        offtime=highbreak;
      } else {
        ontime=lowpulse;
        offtime=lowbreak;
    }
  pulses++;  

  //This Block sends the output to the 433 transmitter
  digitalWrite(rfout, HIGH);    // pulse on
  delayMicroseconds(offtime);

  digitalWrite(rfout, LOW);   // put pulse on low
  delayMicroseconds(ontime);

  }
  digitalWrite(rfout, LOW);   // be sure the puls is off (INVERTED!!)
  delay(10);               // delay for next pulse series
  longwait++; // add 1 to the longwait value.
  if (longwait>10) {longwait=0; delay(500);} //used for send the next batch of pulses
}