We have a fairly standard hard wired, 8V AC mains adapter powered push button doorbell. However due to some shortcomings I recently decided to upgrade it to provide additional capabilities but keeping the existing circuit as much as possible.
- Sense Bell Press – Allowing for triggering of other events on press, such as additional remote ringers in other parts of the house, computer popup notification and possibly cameras / camera display (e.g. via scart triggering on TV) etc in the future.
- Disable Bell Ringer – From either a remote physical switch or PC (for periods when we do not want to be disturbed by doorstep salesmen).
- Ring Bell – Allowing the bell to keep ringing for a certain minimum duration even if the button is just pressed quickly to save missing callers who do not hold in the button for an adequate duration.
Additionally there was a self imposed requirement of interfacing to it in a way such that during reprogramming, or a hardware / software failure the original bell would still operate as normal.
The Synapse RF Engine (YouTube) was chosen for this project, since Synapse hardware is easily scriptable via Python, and has inbuilt support for sending / receiving commands over a wireless network (with mesh networking if required) to either other remote Synapse Engines or a PC connected to a Synapse USB adapter.
|x1||W005 Bridge Rectifier||AQ94C|
|x2||1N4001S Rectifier Diode||QL73Q|
|x1||100 Ohm Resistor (x2)||N63BH|
|x1||10 K Ohm Resistor (x3)||N63BH|
All parts above were sourced from Maplin Electronics.
[Relay Circuit: Closeup Diagram]
Note 1: Due to space limitations only the circuit for the bottom MOSFET is shown, the other however is just a duplicate of the first, also see above for closeup diagram of the relay control part of the circuit.
Note 2: The pin spacing of the relay PCB terminals did not match that of my stipboard therefore I chose the non standard approach of soldering wires to the terminals and zip tying the relays to the board.
In order to allow the bell to still work even if the Synapse module was removed / non operational the original bell circuit was primarily kept intact but with a normally closed relay added to disable the bell ringer, a normally open relay added in parallel to the switch, and an opto-coupler added in parallel to the bell (before the relay) to sense the button press (even if the bell ringer itself is disabled).
Download: Python Software
Inputs / Outputs
A mcastRpc of “doorbell_ring_handle” is sent when the bell press is sensed, and the following two calls are made available “doorbell_ring(duration_ms)”, “doorbell_disable_ringer(status)”.
Future projects will handle the other end of the system, i.e. the remote ringers (PC and/or hardware based), bell enable/disable switch.