Reverse engineering ELRO DB280 Doorbel: Difference between revisions
Jump to navigation
Jump to search
Initial reverse enginering Elro DB280 doorbel page |
imported>Ardillo |
||
(5 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
[[File:elro_db280. | [[File:elro_db280.png|300px]] | ||
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 20: | Line 20: | ||
*The code is inverted (or it's default up unless it's brought to the ground) | *The code is inverted (or it's default up unless it's brought to the ground) | ||
*There is a trailer: "010101010" | *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... | |||
<pre> | |||
/* | |||
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 | |||
} | |||
</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 }