Talking Clock With Arduino





Introduction: Talking Clock With Arduino

Hello all,

For a time I tried to build a Talking Clock (see the video), but withoutt good results due to the model of voice module I was using for that.

After many searches related to right hardware and also learn about how to use the appropriate libraries, I achieved my goals.

I will present you my version of Talking Clock using Arduino with the module DFPlayer_Mini to play MP3/WAV files.

There are many reasons to go further with this project !

With more improvements and adding some features, it can turn a clock for people with some visual deficiency, for example!

In this project all the "voices" were made digitally in Portuguese because is my mother language and I do not see many projects focused on that in my country (Brazil).

But of course you can follow the project and learn how everything works and then you can prepare by yourself all the voices in your native language!

This is really cool and part of fun !!

Let's see that!

Step 1: Build List

These are the components you need:

  1. Arduino (UNO-R3, Nano)
  2. LED Display Catalex TM1637 (4 digits x 7 Segments) or equivalent
  3. DFPlayer_Mini
  4. MicroSD memory card (formated in FAT32)
  5. Resistor 1K Ohm (2x)
  6. Breadboard
  7. Momentary Switch (3x)
  8. Loudspeaker of 2W or 3W
  9. Wire jumpers (male-male & male-female)
  10. DC Power supply (9 Volts)


  1. You can use any MicroSD memory card up to 32GB, but all the MP3 files I have used for the voices are less than 2 MB (two Megabytes) in total!! So, do not spend your money a using memory card with a huge capacity!
  2. I decided to not use a RTC (Real Time Clock) because I have included a very easy feature to adjust the hours and minutes and the Arduino is precise enough to count the time.

Step 2: How to Prepare the MP3 Files for the Voices

For your digital clock speak the hours and minutes, you must prepare some voice files in MP3 format and record them into MicroSD memory card according with the following steps:

  • Amount of files you need

I created 3 groups of voice files:

  1. Hours group (24 files from 0 to 23)
  2. Minutes group (60 files from 0 to 59)
  3. General voice messages (03 setup messages and 01 for the bell ring & cukoo sound)

The total were 88 files.

Note: I decided to use this strategy to simplify the logic of the program, but of course you have more work to record the files. That is a trade-off you must to evaluate before translate for your native language.

  • Naming the MP3 files

All MP3 files must be recorded with file names within format "xxxx.mp3".

The files must be done with four digits, starting from "0000.mp3" to "0087.mp3" or another number considering the total amount of files in your language.

  • How to create the digitally voices

I found out many sites on Internet to convert text to speache files.

The bad news are most of them must be paid to generate the files.

One interesting and very good example is the site Voice RSS.

Try to use the live demo in your preferred language. In Portuguese in just write the time as "12:17" and the softaware will speak the time for you. In English, just write "12:17pm", for example.

The problem is how to save the files.

You can find a reference for that on the site How-To-Geek.

My personal solution was to install a software on my computer to do this translation "text-to-speache": Verbose Text-To-Speach Software.

You can install it and start to convert your texts using a free period for evaluation and then you decided if you want buy it or not (around $20 USD). Personally I bought it after evaluation time.

Note: For special sounds or effects, a great site is the Sound Bible where you can save the files direct on MP3 standard. I used it for the Cukoo Clock sound.

Step 3: Assembly - Schematics - Arduino Program

The assembly is very easy!

Just follow the schematics and take care with the wire connections.

For the program you must to install an additional library in your Arduino for the DFPlayer that you can download it on Github.

For setup of time there are 03 momentary switches:

  • # 1: For the setup of the 03 modes of the clock.
  • # 2: To setup the minutes.
  • # 3: To setup the hours.

The 03 modes are:

  1. Silence Mode: To adjust the time of the clock (hours & minutes).
  2. Minute Mode: To speach every minute.
  3. Hour Mode: To speach only at whole hours and put the cuckoo sound on action (from 8:00 to 18:00). The remaining minutes of the hour keep in silence.



    • Microcontroller Contest

      Microcontroller Contest
    • Spotless Contest

      Spotless Contest
    • Science of Cooking

      Science of Cooking

    We have a be nice policy.
    Please be positive and constructive.




    Hi I have a few questions. Would I be able to use audio like a 30 second mp3 audio file to play for every hour for example at 12am a 30 second song plays 1am another song plays etc.? or does it have to be simple short sounds. Also how much different will the coding for it be?

    Saudações Engº lagsilva!

    Seria possível usar um Display TFT 2.2" (ili9341) no lugar do TM1637?

    O que mudaria/acrescentaria no código? Vc poderia me dar uma ajuda? Obrigado

    Olá, Daniel,

    Nunca utilizei este display em meus projetos, mas qualquer outro display pode ser utilizado com as devidas adaptações no código.

    O que posso lhe adiantar é que será necessário ter a Library para ele e depois revisar o meu código retirando todas as referências relacionadas ao display TM1637 e incluir os comandos do novo display.

    Tente achar a documentação de seu display TFT e de sua Library para entender como são seus comandos.



    Obrigado, Dancopy!

    Coloque uma foto aqui de sua montagem. É legal para estimular outras pessoas a fazê-lo também!

    O Mode poderia ser indicado pela serial, mas acho mais bacana que fosse por um LED RGB. Assim, cada cor indicaria um dos modos.

    Tente adaptar deste modo.

    Agora uma recomendação: use alimentação de uma fonte externa para este projeto. Nem sempre a USB dá conta da corrente necessária para manter tudo funcionando.

    Bom dia amigo lagsilva! Montei o circuito e funcionou perfeitamente... muito legal!

    entanto 1) eu gostaria de usar um RTC ou GPS no circuito para quando,
    por exemplo, faltar a luz, não precisar redefinir a Hora; 2) Gostaria tb
    de fazer piscar os dois pontos do display mas não tenho conhecimentos
    suficiente para tais coisas; Obrigado

    Que ótimo! Coloque uma foto aqui de sua montagem!

    É possível sim adicionar um RTC. GPS é bem caro e não o indicaria a este projeto por fugir de seu escopo original.

    Tenho outros projetos publicados por aqui que o utiliza. De uma pesquisada e tente adapta-lo a sua aplicação.

    Fazer piscar os dois pontos também é possível, mas tudo isto leva a outra versão do projeto e que no momento não tenho disponibilidade de realizá-lo.

    Assim que for possível, faço uma atualização e lhe aviso.



    Compiling get message: " 'hour' was not declared in this scope", what is wrong ?

    Hello Jarmo! This error is relative to the "Time" library. Search on google and go testing!

    Hello Jarmo,

    I did a test recompiling the same file I posted in this Instructables and I found no errors!

    If you edited my original file, please take a look at the line reported with error by your compiler and try to fix it.

    what file folder is the correct one, could you please screenshot what file folder you put it in