Reverse engineering ELRO DB280 Doorbel
Jump to navigation
Jump to search
Error creating thumbnail: Unable to save thumbnail to destination
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 }