Nicholas Skinner

Freelance website and web application developer

Archive for December, 2010

Doorbell Control (Home Automation) with the Synapse RF Engine

Sunday, December 12th, 2010

Bell Circuit BoardWe 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.

Parts List

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.

Qty Name Code
x1 W005 Bridge Rectifier AQ94C
x1 1000µF/25V Capacitor N68BT
x1 SFH618-2 Optocoupler CY94C
x2 1N4001S Rectifier Diode QL73Q
x2 12V Relay JM67X
x2 HUF75337P3 MOSFET UE47B
x3 Terminal Blocks RH76H
x1 100 Ohm Resistor (x2) N63BH
x1 10 K Ohm Resistor (x3) N63BH

All parts above were sourced from Maplin Electronics.

I used a the SN171 Proto Board from the Synapse EK2100 evaluation kit however the proto boards can also be purchased separately.

Circuit Diagram

Bell Circuit Diagram

[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

Future projects will handle the other end of the system, i.e. the remote ringers (PC and/or hardware based), bell enable/disable switch.