A multi-bell interface (MBI) for 12 bells or more does not have to be purchased; it is possible to build your own using one of the readily available Arduino microcontrollers. This article describes an MBI and sensors that I built for our tower. It is not a detailed specification, but (I hope) it should provide enough information for you to make one yourself of this or a similar design.

Some soldering and basic construction skills are needed, but perhaps the biggest challenge for most people is the programming required to make the Arduino work as an MBI. For that reason I have included the programming I wrote (modified for an 8-bell interface).

I am not an electronic engineer and do not provide any guarantees regarding any of this work. However, the design I have used has been operating successfully for some time (in the case of the sensors, for years without fault) and so I am presenting it here in case it is of interest to others.

What does an MBI do?

Sensors of all description are essentially switches. They cause the voltage in a wire to rise (or drop) momentarily as the bell passes a certain point in its swing (usually bottom dead centre). Computers, however, can't deal with signals in this raw form; instead they prefer to deal with input in the form of keyboard characters such as '1', '2', 'a', 'b' and so on. MBIs act as interpreter. They come between sensors and computer, detecting the voltage changes from the sensors, converting them into regular characters and sending them to the PC.

Basic Design

The simplest system would have the MBI connected directly to (and powered from) the PC via a USB cable. The downside of this approach is that the wires from all the sensors need to come all the way to the PC in the ringing room (or within a few metres of it) as there is a limit to the length of USB cables. This can get messy in all but the smallest of towers.

This article describes an alternative design that has two circuit boxes, one in the belfry (the MBI, connecting to all the sensors) and one in the ringing room (connecting to the PC), with a single cable between the two. This design allows the fixed installation between floors of the tower to be tidy and unobtrusive.

The remainder of this page describes the various parts of this design in more detail, working from the bells to the computer.


The sensors can be mechanical (reed switches), optical or magnetic, according to your preference. I used reed switches as they are cheap, easy to work with and seem very reliable. Also, they require only two wires per sensor. Other types of sensor require a third wire to supply power. This is significant for my choice of cabling between MBI and sensors, namely CAT5 network cable, in which the wires it contains are arranged in (twisted) pairs. More detail about the belfry cabling can be found in the next section.

This is not an article about making sensors, so I won't go into detail or discuss the range of options available, but this photograph shows a possible example of a reed switch sensor, mounted using one of the bearing bolts to secure the switch to the frame:

Suppliers of reed switches are readily found online. We obtained ours from digikey.com (actually from digikey.com.au, and there is also a digikey.co.uk).

Switch: digikey.com/en/products/detail/littelfuse-inc/59140-1-S-02-F/4779928
Magnet: digikey.com/en/products/detail/littelfuse-inc/57140-000/43978

These switches are sealed from the elements and have soldered connections so they should operate well in the semi-outdoor environment of a typical belfry.

Cabling from Sensors to MBI

I used standard CAT5 computer network cable between MBI and sensors. A single network cable contains four pairs of wires. The two wires in each pair are twisted together. One is a solid colour (brown, green, orange, or blue), the other is white with the same solid colour as a stripe.

Long cable lengths sometimes generate spurious signals, which can be highly disruptive in a simulator session. The twists in network cables do a good job of preventing these spurious signals. Separate coaxial cables from the MBI to every bell would be an alternative.

One twisted pair is used per bell. To install sensors on eight bells (for example), you would therefore require two lengths of network cable. You might run one of them around the frame to pass close to four of the bells, while the other takes a different route that passes close to the other four bells.

To connect a sensor to the appropriate pair of wires in the network cable that passes nearby, cut a short opening in the blue plastic outer sheath to expose the bundle of wires, cut the pair you want to use for that bell, then connect a short length of some other wire (old telephone wire, bell wire, anything really) to run from the network cable to the sensor. This photograph shows one such connection in our installation. The connecting wires are soldered to the wires from the network cable, with short lengths of heat-shrink insulator protecting the joints.

Belfry Circuit Box (MBI)

This diagram shows how the reed switches connect to pins on the Arduino in the belfry circuit box and which pins are used to convey the signals from the sensors (via the Arduino) down the cable to the ringing room (and bring power up from the ringing room):

Connections for two sets of four reed switches are shown, corresponding to two separate lengths of network cable running around the frame. Each sensor uses one of the four twisted pairs of wires in the network cable. One wire of the pair connects to a digital pin (D2, D3 etc.); the other wire connects to the ground pin (GND).

Converting the above circuit diagram into physical reality, this is what our upstairs circuit box looks like:

Belfry to Ringing Room Cable

Four wires are required to connect various pins of the the upstairs and downstairs Arduinos, as shown in this diagram. Network cable is again a good choice because the twisted pairs do a good job protecting against the increased risk of spurious signals in such a long length of cable.

A good plan would be to use three of the solid colour wires, plus all the striped wires joined together and collectively used to connect the two GND pins.

Ringing Room Circuit Box

The ringing room circuit is very simple. All it does is receive signals from the belfry Arduino and direct them to the PC via the USB cable. The USB cable also supplies power to both Arduinos. The only addition to the wiring as shown in the diagram directly above would be the USB cable connecting the Arduino to the PC. (Note that pins 0 and 1, marked RX0 and TX1 on the Arduino surface, are used internally by the USB connection to form the serial connection for transmission of characters.)

A different arrangement...

In our tower we have a slightly different arrangement for the ringing room circuit box. Our ringing room is quite large and we wanted to be able to move our PC around, in particular putting it on a table we have in the middle of the rope circle. This risks being too far from the box for a USB cable to operate satisfactorily. So we have a wireless connection between box and PC. A consequence of this is that we need a separate power supply for the circuit boxes (both still powered from downstairs, but via a mains adaptor rather than a USB cable).

Differences between our circuit and the basic one are:

*The double switch on the RX and TX wires between Arduino and XBee is there so that the XBee can be isolated if there is ever a need to connect the Arduino to a PC via a USB cable (in order to upload a new version of the software, for example). Both XBee and USB use the RX0 and TX1 pins and the XBee can be damaged if it is not isolated while a USB connection is being used.

In its physical form our ringing room circuit box looks like this:

And finally, the XBee transmitter would be useless without a corresponding receiver, attached to the PC via a short USB cable:

In hindsight it is probably possible to dispense with the ringing room Arduino altogether for our circuit. Power for the XBee could come down the cable from the belfry Arduino and the two signal wires from upstairs could connect directly to the XBee. However, what's done is done!


Belfry Arduino (MBI)

This is the code for an 8-bell MBI. Click on the link below to download it (you might have to right-click and choose "Save link as..."), then save it in a folder of the same name ("mbi_for_8_bells"). You will then be able to open the script in the Arduino development environment to compile it and upload it to your Arduino.

Download "mbi_for_8_bells"

Ringing Room Arduino

This is the code for the ringing room Arduino. Click on the link below to download it (you might have to right-click and choose "Save link as..."), then save it in a folder of the same name ("ringing_room"). You will then be able to open the script in the Arduino development environment to compile it and upload it to your Arduino.

Download "ringing_room"

Expanding to 12 bells or more

The programming and the wiring of the belfry circuit box can be quite easily expanded to handle 12 bells (or more - see below). The downstairs circuit and Arduino programming would be unchanged.

The design I used for 12 bells uses pins D10, D11, D12 and A0 for the additional four bells. I avoided using digital pin D13 because it is used as output for the onboard LED. Pins A0 to A7 are analog pins, but they can be used as digital pins very easily. By using them all a maximum of 18 bells should be possible using the Arduino Nano.

If this is relevant to your tower, feel free to contact the author for further details.