WiFi Connected Clock With Westminster Chimes

8,679

93

54

My latest digital clock is based on this video and the code found there.

It works very well but I wanted something that also gave me auditory announcements of the time. The classic way of doing this is with Westminster Chimes. Such chimes are found on most grandfather clocks as well as mantle clocks.

While the Arduino that I am using for this project is capable of producing rudimentary sounds that could resemble Westminster Chimes I opted to use an MP3 player that sounded out recordings of the chimes. This gives much better audio quality and flexibility to use whatever sound you choose to play. It also allows me to change the version of the chimes that is played by simply swapping micro SD cards.

One of my clocks is shown here. It continuously displays the time and sounds the chimes at 15 minutes, 30 minutes and 45 minutes after the hour. On the hour where it also chimes the number of the hour.

Step 1: Video

This video shows the clock in action.

Step 2: The MP3 Player & Sounds

I have used the MP3 player that is used in this project many times before. It is the DFPlayer, an inexpensive, high quality MP3 player that stores sounds on a micro-SD card. For more information on this device see: http://www.trainelectronics.com/Arduino/MP3Sound/...
This page also suggests where it can be purchased. Files for the MP3 player reside on a micro SD card in a folder named mp3.

There are 6 sound files for the Westminster Chimes.

0001.mp3 - the chimes for the quarter hour

0002.mp3 - the chimes for the half hour

0003.mp3 - the chimes for the three-quarter hour

0004.mp3 - the chimes for the hour

0005.mp3 - the hour chime

0006.mp3 - the hour chime with a long trailing sound at the end (used as the last chime)

The sound files that I used are in the attached file called mp3.zip

A shorter version is called mp3-shorter.zip To make these files I changed the Tempo in a sound editing program called Audacity.

Step 3: Parts

Only a few parts are needed. The processor is a Wemos ESP8266 that can be ordered from BangGood and Amazon. It requires some additional setup in the Arduino IDE that can be seen here:

https://www.instructables.com/id/Wemos-ESP8266-Get...

The DFPlayer MP3 player can be found at Amazon and BangGood as well.

The LED Matrix display can be found at Amazon and BangGood.

The display's visibility can be improved dramatically by adding a red filter. I use a red, self-adhesive film that can be found on eBay, but red acrylic will work, too.

In addition you will need a 1K resistor, a 10K (a 50K or 100K will work, too) and an 8 ohm speaker.

The unit can be powered from a USB cable to the Wemos D1 or you can use a voltage regulator circuit that supplies 5 volts.

Step 4: Schematic

As you can see from the schematic the wiring is very simple.

Power can come from a 5 volt USB power supply, USB cable, or batteries (3.7 to 5 volts will work)

Step 5: Prototype

This photo shows my prototype. It was built on a small circuit board. The Wemos D1 processor with WiFi is on the right side of the board. It is connected to a USB cable to supply power to the circuit. The DFPlayer is to its left and contains a micro SD card with the sound files. The speaker is connected to the red/black wire that goes off to the left of the photo. Be sure to use an 8 ohm speaker with the DFPlayer. If you only have a 4 ohm speaker put a 3 to 5 ohm resistor in series with the speaker.The 4 module display has been placed behind a piece of red acrylic to make it more visible.

This close-up shows the potentiometer (to the far right) that can be used to adjust the brightness of the display.

Most of the wiring is on the back of the board. It follows the schematic. The only part that is not shown on the schematic is the black capacitor that was placed on the power input connections to filter the DC power when I used a noisy external power supply. It is not necessary if you power with USB through the Wemos D1. The 1K resistor is under the white tubing.

Step 6: Arduino Code

The code is based on YouTube video from John Rogers & DFPlayer code found on my web page here: http://www.trainelectronics.com/Arduino/MP3Sound/...

The libraries used in this sketch can be found here:

ArduinoJson

ESP9266WiFi

DFPlayer_Mini_Mp3

To install the libraries go to each link above, select "Clone or Download" and download the ZIP version. Install in the Arduino IDE with Sketch/Include Library/add ZIP Library

Step 7: Going Farther

The clock with its accompanying Westminster chimes has been operating in my workshop for some weeks and provides a very reliable time and pleasant tones every 15 minutes. I plan on making high quality recordings of my mantle clock's chimes to substitute for the sound I now have on the micro SD card. The next project will be to add hands to the clock and to mount it in an appropriate enclosure.

I hope you have a chance to experiment with WiFi connected clocks, too!

4 People Made This Project!

Recommendations

  • Optics Contest

    Optics Contest
  • Make it Glow Contest 2018

    Make it Glow Contest 2018
  • Plastics Contest

    Plastics Contest

54 Discussions

0
None
don_kleinschnitz

22 days ago

Dave,
I found my D2 mini lite board library problems, Wemos is now LOLIN(WEMOS) :( and I missed that item in the menu.
Also note that the libraries that you linked to have the names changed in the acutual code which requires the INCLUDE names to be changed.
This is the first time I have used a Wemos Esp8266 and in the process of doing research I noticed that the ADC cannot handle more than 1v max. The D1 has a resistor network connected to the ADC pin that drops the voltage to that level on A0 from 3.2v. Your schematic shows the intensity control connected to 5V. I think when adjusted to its limit it may blow out the A0 pin which would exceed the 1v max?

1 reply
0
None
davebodnardon_kleinschnitz

Reply 21 days ago

That is all good information, Don - thanks for passing it along.
I have not seen an issue with the A0 pin but it would be wise to keep it down to 3.2 volts - thanks!
dave

0
None
don_kleinschnitz

Question 4 weeks ago on Step 3

I am having trouble with running on the D1Mini light.

The board connects and appears to download ok but it will not run a program (blink).

Some research suggests that the problem is that the lite is 1M and I can only select 4M when using the board library installed as above.

Have you had this problem and what board library did you use assuming you are using the same Wemos board?

1 more answer
0
None
davebodnardon_kleinschnitz

Answer 4 weeks ago

Sorry, Don, but I have not had the problem you describe - I have not tried using the D1Mini lite.

dave

0
None
davebodnardon_kleinschnitz

Answer 5 weeks ago

Take a look under Step 6 Arduino Code above.... If that is not what you are looking for let me know

dave

0
None
mickeypop

Tip 6 weeks ago

while working on my Fibanacci Clock variant, i was experimenting and thought you might like this idea, though i did remove all the print statements it is basically the same code with a twist, It now tracks just 1 "flag" variable instead of 4

replace all the chime code on loop() with 1 function and with just a switch setting change from short to long chimes on the same SD card. Just make sure to sort the files in different folders.

// IE; WestMinster( digitalRead( some_pin ) );

void WestMinster( int l_s )

{

int LongOrShort = 0;

if( l_s == 1) // 0 WM long, 1 WM short

{ LongOrShort = 6; }

if( m == 15 & flag == 1)

{

mp3_play( 1 + LongOrShort );

flag = 2;

}

if( m == 30 & flag == 2)

{

mp3_play(2 + LongOrShort );

flag = 3;

}

if( m == 45 & flag == 3)

{

mp3_play(3 + LongOrShort );

flag = 0;

}

if( m == 0 && && flag == 0)

{

mp3_play(4 + LongOrShort );

flag = 1;

if (h >= 2)

{

if (h >= 13)

{

h = h - 12;

}

if (h == 0)

{

h = 12; // at midnight do 12 chimes

}

for (i = 1; i <= h - 1; i++)

{

mp3_play(5 + LongOrShort ); // 5 is chime without end tail

}

}

mp3_play(6 + LongOrShort ); // 6 is chime with long tail sound

}

}

1 reply
0
None
mickeypop

Tip 7 weeks ago

NOTE; the DFPlayer runs from 3.2 - 5.4 Volts

R1 is not needed with the 3.3v power instead

0
None
mickeypop

2 months ago

i liked the Westminster idea

added it to my Atomic Fibonacci Clock with a night silence option (instructable coming)

Also adding a voice option over the Westminster.

1 reply
0
None
davebodnarmickeypop

Reply 2 months ago

That is good to hear - please let us know when you post the instructions

thanks

dave

0
None
ubiube

7 months ago

Hi Dave.

I have two problems: at midnight it plays only one and the volume setting work only one time. For the first problem I think that the code is invalid in theese double conditions:

if (h >= 2) { <------

if (h >= 13) {

h = h - 12;

}

if (h == 0) {

h = 12; <-------

}

for (i = 1; i <= h - 1; i++) {

mp3_play(5);

dlayPrint();

}

}

mp3_play(6);

}

...or I don't understand...

Umberto

20180322_012148.jpg20180322_012122.jpg
5 replies
0
None
davebodnarubiube

Reply 7 months ago

Umberto - you may be right about the code you found - I am not the author of that set of routines as I used code that I found on YouTube.

If you come up with a fix please let me know.

thanks

dave

0
None
ubiubedavebodnar

Reply 7 months ago

Hi Dave.

With this modification work well and at midnight play twelve time.

For volume I don't know.

....

flag4 = 1;

// if (h >= 2) {

if (h >= 13) {

h = h - 12;

}

if (h == 00) {

h = h + 12; // ...

}

if (h >= 2) {

for (i = 1; i <= h - 1; i++) {

mp3_play(5); // ....

dlayPrint();

}

}

mp3_play(6); // suono 6 con eco

}

}

Umberto

0
None
davebodnarubiube

Reply 7 months ago

Thanks for the code, Umberto - I'll give it a try.

dave

0
None
ubiubedavebodnar

Reply 7 months ago

Hi Dave.

My summer time don't work: have you a fix for this problem?

I try to fix by my self, if I can. Let me know if you have, please.

Thanks

Umberto

0
None
davebodnarubiube

Reply 7 months ago

I do not have a good solution, Umberto - for now I just changed the value of SummerTime and uploaded the software - there is talk about going to DST year round so the issue may not be around much longer

Let me know if you have a better solution

thanks

dave

0
None
ubiube

Question 8 months ago

Hi Dave.

I have a question: how to change hour in other time zone.

Thanks

Umberto

1 more answer
0
None
ubiubeubiube

Answer 8 months ago

Hi Dave.

I found utcOffset.

very well.

Umberto