Berlin Uhr or Mengenlehreuhr, a fancy retro style clock that's a bit tricky to read: https://en.wikipedia.org/wiki/Mengenlehreuhr
The BerlinUhr is a standalone PCB with all the needed parts on it, just connect power over the USB-C and it will run.
The ATtiny167 receives the actual time from the DS3231 real time clock chip. Then displays it with 24 leds driven by the TLC5947. The brightness is adopted by measuring the ambient light with a KPS-3227.
- PCB, source it with the gerbers: https://github.com/designer2k2/BerlinUhr/tree/main/Berlin_Uhr/gerber
- Schematic: https://github.com/designer2k2/BerlinUhr/blob/main/Berlin_Uhr/Schematic.pdf
- BOM, interactive BOM here: https://github.com/designer2k2/BerlinUhr/tree/main/Berlin_Uhr/bom
- Bootloader, burn the Micronucleus Bootloader to the ATtiny167 with ISP: https://github.com/ArminJo/DigistumpArduino
- Insert CR1216 battery for the RTC to keep time also while the USB power is gone.
- Software, upload the Code from the scr folder: https://github.com/designer2k2/BerlinUhr/tree/main/src/berlin-uhr
- The time gets set the first time the code is uploaded to the time from the pc.
- To change it afterwards, push the A and B buttons on the edge / backside.
This is special on the Berlin Clock. A practical explanation is given in the wikipedia article: https://en.wikipedia.org/wiki/Mengenlehreuhr#Time_encoding
The Berlin Clock is easy to read after a couple of days :-)
- The PCB is made with KiCad (6.0.2): http://www.kicad-pcb.org/
- The PCB-Art graphics are made with Inkscape: https://inkscape.org/
- Parts of the graphics are converted to Footprints with svg2mod: https://github.com/mtl/svg2mod
- The BOM is made with InteractiveHtmlBom: https://github.com/openscopeproject/InteractiveHtmlBom
KiCad Version of at least 6.0.2 is needed due to a bug in the KPS-3227 Footprint in older Versions: https://gitlab.com/kicad/libraries/kicad-symbols/-/issues/3164
Its 17:45 😃
It can hang on a wall or sit on a table with the help of a USB-C phone docking station.
The bare PCB:
ISP Programming the Bootloader to the ATtiny with the help of a Arduino Uno:
Populated backside: