So, talking clocks. The world's full of them, but none of them really fit my needs.
Thus I decided to make my own version that can be configured to any voice I want.
1. Most clocks on the market speak in a voice that is either unpleasant or too compressed.
2. The speech quality is honestly horrible.
3. None of them have modern features such as automatic time synchronization.
4. Often the voice prompt is not descriptive enough ("AM TEN OH TWO")
5. They can be not loud enough or too loud.
6. The voice and alarm sounds cannot be changed on those clocks.
7. The interface can be cumbersome to navigate (one button to make the time go up, one button to advance the selection? Nah, I'm not having it)
I aim to create a talking clock that takes care of most if not all problems listed above.
The project may or may not use a GPS module (I haven't decided yet) and radio time sync module seems a bit spotty, so I won't use it.
Wave your hand in front of the clock to make it say the time
Integrity check
Not everything, just basic things like SD card read failure, invalid time, low battery and speaker check
SD card read failure and speaker check could be done by just reading the report from the module and attempting to play 000.mp3 which is a start-up sound
Maybe have a secondary beeper inside to show that the initialization failed for voice prompt
Have voice prompt for recoverable failures like invalid time
Seasonal greetings
Voice mapping documentation for custom voices
Must include support for BUSY pin
The voice must not rely on the static time, but on the status change from PLAYING to IDLE
IR remote
Temperature readout in both Celsius and Fahrenheit
Time-dependent greeting ("Good morning", "Good afternoon", and "Good evening")
Randomized starting line ("The time is", "It's", "It is")
Date and year readout ("Today is Saturday, January fifth, 2019.")
For the main board, I'm currently using Arduino Uno because that's what I have but if required I may move to Arduino Mega 2560 (either compatible board or 3D printer controller board which basically is Arduino Mega with extra hardware thingamajigs)
For the display, I have few selections:
I2C OLED display (long one, not 128x64)
RepRapDiscount Smart Controller (basically a display, rotary encoder with click button, speaker, a button and a SD card reader with only 20 wires)
RepRapDiscount Full Graphic Smart Controller (128x64 monochrome graphic LCD with all the features of Smart Controller)
For the speakers I plan to use 0.5~1W paper cone speaker with the venerable 2W tiny amp with adjustable volume.
For the nighttime dimming function I'll just use a transistor circuit. I don't think it needs any fancy microcontroller features but if I have any pins left and if I don't muck the code up too much I might add the fancy PWM dimming.