Hacking a Dome Siren to add real bells and buzzers onto my ring security alarm

Hello,

I live in a pretty rural area and the built in siren on my ring security system just isn’t loud enough. I purchased a few Dome Sirens from their ‘Works with ring’ program but again, the sirens are just way too quiet. I’ve decided the best option is to plug the Dome Siren speaker wires into an Arduino and then have it do whatever I like. For my code to work I need the input from the siren to be high while the alarm is active, unfortunately the siren uses a square-wave with a 50% duty cycle and I can’t seem to work the code to interpret the cycle as a steady state high.

Any help or suggestions would be greatly appreciated!

I’ve attached my code for reference.

Brambley_Security_Alarm4.ino (4.11 KB)

This all sounds wrong in too many ways, but not sure whether that's really so or just a wrong description. Powering a siren off an Arduino will never give a loud sound.

Do post links to your siren's data sheet, and complete schematic of your setup.

The Arduino will control relays that activate the bells and buzzers.

Do you think the information you offered is enough for anyone to be able reproduce your project in order to understand the problem you mention, and possibly come with a solution?

wvmarle: Do you think the information you offered is enough for anyone to be able reproduce your project in order to understand the problem you mention, and possibly come with a solution?

I'm using an Arduino Uno, the idea is to attached the 3.5v signal wire from the siren to digital pin 9 as an input. When a signal is detected the program initially sets pin 7 high to close a 5VDC songle relay module that completes a 110VAC circuit to activate a 110VAC bell. To avoid using delays I wrote the code to use the millis function to time follow-on actions. If the alarm hasn't been deactivated after 5 seconds (5000 millis) the arduino cycles pin 8 between high and low every half second (500 millis). Pin 8 is attached to another 5VDC songle relay module, which in turn operated a 110VAC buzzer "blapp-blapp". If two minutes have passed (120,000 millis) with the alarm still active the arduino starts cycling pin 4 between high and low every 10 seconds (10,000 millis). Pin 4 is attached to the same type of relay which is controlling a 12VDC motor-driven siren. Should the alarm be active for 10 minutes I've written the code to set everything to a low state until the security alarm is reset (i.e. reading pin 9 low).

I've also put in a quick test of all the noise makers in the void set up just to verify they're all working when first powering the unit on (and to let me know that power has been restored after an outage).

When testing the program using a toggle switch as a stand in for the dome siren input and lights as stand ins for the very loud bells, buzzers, and siren it all works as it should. The problem comes when I attached the ring dome siren which outputs a high signal for half a second, then a low for half a second, which resets my code as soon as it goes low again. I'm trying to figure out the best way to get the arduino to read the square wave from the dome siren as a steady high input. I can build a small device with a capacitor to keep the signal high but am hoping there is a why to accomplish the task with code instead.

Hopefully you find this more clear and informative.

Change your code so it checks the siren input frequently (every iteration of loop()), and keeps track of when it last saw the output being high.

Then if it has not been high for more than a second or so (half a second at least) you can be sure the siren is now low, and switch off the alarms.

Something like this:

if (digitalRead(alarmInput) == HIGH) {
  lastALarmSignalHigh = millis();
  alarmActive = true;
}

if (alarmActive) {
  if (millis() - lastAlarmSignalHigh > alarmSignalTimeout) {
    alarmActive = false;
  }
  // do your alarm things here.
}

else {
  // switch off alarms.
}

You mad genius, it works!!

Thank you so much :)

It’s not that hard when you know what’s going on :slight_smile: Remember the construction as it’s actually a very common thing to do!