Hardware:
Because it's designed to sit on your desk and I didn't want it to turn off all the time to save battery power, I made it USB powered. The average current draw is around 10mA. To still keep track of time even when it's not powered, there is a CR2032 coin cell battery to keep the RTC running.
The µC I used is the ATMega328P running at 16MHz, which communicates with the DS3231 over I²C and drives the LED matrix.
The DS3231 was obviously chosen because of it's high accuracy and integrated temperature compensated crystal oscillator.
The case was done in Fusion360 and then 3D printed in black PLA. Very simple, just a top and bottom part with slots to hold the PCB. And a little extention for the select button, to make it accessible without needing to open up the case everytime you want to switch modes.
---------------------------------------------------------------------------------------------------------------------------------------------
Software:
The software was written in AtmelStudio 7.
If anyone is interested, I uploaded the source code.
I know there are a few things that could have been done better, but I'm just starting to use Atmel Studio so please don't be to hard on me. :)
Hi Tobias,
I have built your clock but I have hit a snag. With the firmware and components shown, the clock keeps great time, but the button presses cause the LEDs to cycle very fast, not very useable for setting the time and date. But I had set the lfuse to its default of 0x62 and now the buttons act as they should. This setting is for the internal 8MHz oscillator, but the schematic shows a 16MHz crystal. Can you help me resolve this please? Thanks for a great project.