Here are some videos of the sound after mounting the tubes better.

Here is a version using 3 gongs (steel bowls from a thrift store) ringing 6 o'clock. This is using the "All Quarters - 3" mode (see below).

Here is my test setup, with 2 bells set as "All Quarters - 2" (see below).

Web Interface

The page shows (from top to bottom):

  • Current time
  • Clock ID (also its multicast address)
  • Clock's IP address
  • Mute status (for over-night muting)
    • Enabled
    • Start Mute time
    • End Mute time
    • Buttons to mute now for 1 or more hours, or to reset to zero hours
    • Current mute status
  • Save all settings
  • Mode drop-down
  • Time zone drop-down
  • NTP server address
  • Parameter for how long to actuate the chimes
  • 4 test buttons to test the current chime mode
  • Software version info

  • Chiming Modes

The clock can chime with different modes depending on how many chimes you have connected.

The actuators used and the patterns played are defined in Chime.h

For instance if you have (at least) 2 bells attached, you could choose "Hour + Half 1-2" which will chime the hour (4 rings for 4 o'clock) and the half (one ring).

Westminster needs 4 bells (as in the project photos) and rings all quarters.

Ship's clock needs only one bell and rings hours and halves, as seen here:

Ship's bell


The ULN2003 is a set of transistors and fly-back diodes to power the inductive loads of the actuator coils.

Here are photos of the board.

I have connected all 7 ULN2003 inputs, but am not using them at this time.

The Button
The single button has 3 modes:

If you hold it down within 4 seconds of powering the clock up, it will reset the WifiManager so you can connect to the clock as an Access Point. This lets you setup the local Wifi configuration.

After the clock is running, the button works as a mute button, just like the one in the web interface. If you press it, it mute the clock for the next hour. If you press it a second time it will add an hour of muting, etc. The NodeMCU LED will blink the number of hours it will be muted.

If you hold the button (for more than 1/2 sec) it will cancel the current muting.

This temporary mute does not interfere with the over-night mute, if enabled.

Clock Address Detection

I used WifiManager to setup the network:

This work very well, but after you connect to the local Wifi, there is no way to find the IP since the clock has no display.

So I made a page with some simple JavaScript to test each of the 256 IPs in the local subnet for a particular URL "DETECT". If fount the web page will give you a link to connect to the clock.

The clock detection page is findClock.html

The Venue

This clock is located in an old house that is being renovated.,+Xinyi+Street,+West+Central+District,+Tainan+City,+700/@22.9994607,120.1943233,17z/data=!3m1!4b1!4m5!3m4!1s0x346e766658086991:0x5c1405a2e2df6a87!8m2!3d22.9994607!4d120.196512

Here are some photos of the house during an event: