Introduction: Time Gone By
Time Gone By is a clock that announces the time when pressed on, speaking in my two-years-old son whom I recorded saying the hours, "quarter to", "half past" etc.
Needless to say, being so young he was barely getting the numbers right and making funny mistakes on the way - mistakes which are now, two years after (and probably later on), a delight to our ears, as well as the grandparents, uncles and the rest of the family.
The making of the clock is quite easy. Over the years I think I have found a few ways and tricks to keep a simple project simple, and to make a prototype work for years and years on, without needing to create a custom PCB or soldered breadboard. I hope you will find it simple to build, too.
The clock is activated by one 18650 Li/Ion battery stepped up to 5V, and it is kept in deep sleep mode most of the time, so that it should not take much power unless continuously activated (something that can happen in the first couple of days, especially in the presence of children). At any case, the battery is rechargeable and comes with a charging and discharging protection circuitry, so it should be fairly easy to recharge and not create additional waste on planet Earth.
What else? Yes. This is my returning to the scene of writing 'ibles after some time I have not done so. So, I may be a bit rusty at that, please excuse me in advance. I will try to keep things short and sweet.
Shall we start, then?
Step 1: Tools and Ingrediants
Soldering Iron with some solder
Hole saw or exacto knife (for making the button hole)
The ubiquitous micro-controller we all know and love
Arduino Sensor Shield
A handy tool for making fast and reliable connections
Used to triggered the mp3 module on and off, to save power
Serial MP3 Player (new version, red)
Super easy module for playing MP3 files
2GB Micro SD Card
Used to store MP3 files
18650 Li/Ion battery
if you have a dead laptop, these batteries are usually a good catch. They pack a lot of power and for the average microcontroller project, even a half dead battery can last quite a long time.
18650 Li/Ion battery holder/charger
I like these one-solution-for-all components, although this is actually the first time I use it in a project
RTC DS3231 Module
These are a lot nicer than the previous DS1307 modules, since they compensate for time inaccuracies caused by crystal temperature fluctuations.
Big Arcade Button
Big effing button, what to say. Pride and joy of every project.
I used this IKEA storage box organizer that was on a sale the other day.
Double Sided Tape
To put everything together, of course. Double sided tape is the stuff life is made of.
Step 2: Assembly
Connect the Mosfet's signal input to the Arduino using a servo cable or female-female dupont wires. Make sure that the GND and VCC are connected to the Arduino counterparts and that the Mosfet's signal pin is connected to pin 4 of the Arduino.
Next, Wire the Arduino's VCC and GND to the Mosfet's Vin and GND terminals respectively, using the Dupont wires. Since the connectors on the Mosfet are screw terminal, it is best to remove the plastic cover of the dupont where is is supposed to get connected to the Mosfet, to make it fit. This can be achieved by lifting the plastic snap and gently pulling the wire.
Next, connect the MP3 Player's VCC and GND terminals to the V+ and V- on the Mosfet module, and the MP3's RX and TX pins to Arduino pins 5 and 6, respectively. Connect the attached speaker to the player, and that will conclude the remaining conecttions made with the MP3 player.
Now solder 2 wires to the battery compartment's 5V and GND terminals and connect them to the Arduino's corresponding VCC and GND pins. That's our power supply. You can use either servo cables or Dupont wires.
Next, solder Dupont / servo wires to the button and connect to GND and pin 2. When using the servo wires, make sure you use the color convention where red is positive, black is negative and white is signal. In the case ot the button, you will need to connect only the GND and Signal pins to the button, as the pin will be pulled up.
Last but certainly not least - the clock itself. Connect the RTC module using 4 Dupont wires to the I2C Port available on the sensor shield (told you, it's a nifty little gadget, this one). make sure the GND, VCC, SDA, SCL pins are matched on both sides.
Step 3: Sound Editing
Install Audacity, if you don't have it installed already.
Record your youngest son / daughter saying all numbers from 1-12. Then, have them say "it is now", "quarter past", "half past", "quarter to" and "o'clock". You can use your computer or phone (later sending it to your computer for editing).
Fire up Audacity and import the recording. According to the recording format, you may need to install decoding plugin, as explained here.
Now, one by one mark the parts which correspond to the words "1", "2", "3", etc. For each word, first make sure you've captured it precisely, then select File -> Export -> Export Selected Audio and save the file as MP3. For this stage, you will have to install the LAME encoder, please see instructions here.
at the end of the process, you should have files named 001xxx.mp3, 002xxx.mp3, ... up to 012xxx.mp3, each containing a recording of its number. i.e. the file 007xxx.mp3 will say "Seven" when played. Next, name the additional recordings according to the list:
020xxx.mp3 = "it is now"
021xxx.mp3 = "quarter past"
022xxx.mp3 = "half past"
023xxx.mp3 = "quarter to"
024xxx.mp3 = "o'clock"
Create a folder on the SD root named "01" and copy all the above files to it.
Now stick the SD card inside the MP3 player.
Currently, the supported time-announcing patterns are for English and Hebrew only, but with little changes you can adapt the code to your own language, if different from these two. In the meantime, make sure you record all the
Step 4: Code
Download the project code and extract the zip.
Launch the Arduino IDE (I used version 1.8.5) and under preferences, change the sketchbook location to the root of the extracted zip. Close and re-launch the Arduino IDE and this time, under File -> Sketchbook, you should find BoboClockV13 - open it.
In order for the Arduino to set the time on the RTC, uncomment the line:
// #define ADJUST_DATE_TIME_NOW
Connect your Arduino nano to the computer and upload the sketch to the board.
Open a serial monitor and make sure you see the correct time displayed on the screen when the button is pressed, and that the time gets announced, in the voice of your little one. Amazing! (isn't it?)
now, it is crucial to comment out the line you've just uncommented and upload the code again (otherwise, on every Arduino reset, the clock will reset itself to the time of the last upload)
Everything is working? Oh, good. Let's pack it up, then.
Step 5: Packaging
So... package is really left to the maker, each will probably want their own special box he/she got from somewhere. So, here I will limit the directions to what you should do in general case rather than talking separately about each kind of box. I used the IKEA boxes, mainly for their price, but they do the job anyway.
Start by drilling a hold for your button the the top part of the box. A hole saw is recommended in this stage, although an X-Acto knife will probably do a decent job too, provided that you don't slit your finger, loose consciousness and bleed yourself to death on the kitchen floor. Better safe then fingerless, yeah?
After that, use double sided tape to mount everything nicely inside the box. Depending on your box and acoustics, additional small holes for the speaker may be needed, to increase the perceived sound volume.
Hopefully, this build shouldn't have taken more than a non-busy weekend, and at the end you're left with an object that will keep amusing you for years and years on...
Thank you for reading this Instructable! If you liked it, please consider voting for me on the Audio Contest
Participated in the
Audio Contest 2018