Klok is a cyberpunk-inspired alarm clock that rejects the idea that electronics should be hidden.
Instead of plastic shells and invisible circuitry, Klok puts the PCB, components, and imperfections front and center.
This project is as much about design philosophy and learning through failure as it is about telling time.
Most digital clocks try to disappear.
Klok does the opposite.
- Exposed traces instead of hidden wiring
- Bulky through-hole components instead of flat SMD minimalism
- A visible Arduino Nano instead of a sealed SoC
- A non-rectangular PCB framed as an object, not a board
The result is a clock that looks unfinished on purpose—industrial, crude, and honest.
- Do not hide electronic components
- Let depth, height, and shadows exist
- Celebrate through-hole parts and hand-assembled character
- Treat the PCB as the product, not something to be enclosed
- Custom PCB outline breaks away from rectangular norms
- Enclosure adapts to the board, not the other way around
- 4-digit 7-segment display driven by MAX7219
- Alarm functionality via piezo buzzer
- Auto-dimming using photoresistor + PWM
- 5-button control interface in cross layout
- RTC support via external I2C module (JST)
- LiPo-ready power input with external BMS support
⚠️ See Known Issues — not all features work in V1.
- Arduino Nano (ATmega328P)
- MAX7219 LED driver
- Common-anode 4-digit 7-segment display
- Photoresistor with voltage divider
- Piezo buzzer
- 5× tactile switches (software debounced)
- 2× JST connectors:
- J1: Power input (1S LiPo + BMS)
- J2: I2C (RTC module)
- Version: V1.0
- Two-layer PCB
- Exposed component aesthetic
- Custom non-rectangular outline
- SDA, SCL, VCC, and GND traces failed during manufacturing
- Caused by:
- Acid traps
- No teardrops
- Large manufacturing tolerances
- Result:
RTC cannot communicate → clock cannot keep time
- Last digit (minutes) does not respond
- Issue persists even after manual trace jumping
- Possible causes:
- Severe pull-up / pull-down fault on MAX7219 input
- Partial internal damage to the MAX7219 output stage
Status:
V1 is a learning artifact, not a working device.
This was my third densely populated two-layer PCB, and it shows.
Key mistakes:
- No teardrops on critical traces
- Poor routing created acid traps
- Manufacturing tolerances not accounted for
- Non-socketed MAX7219 made debugging nearly impossible
- External RTC dependency introduced a single point of failure
Despite this, the concept, interaction model, and visual identity are solid.
- Replace Arduino Nano with ESP32
- Wi-Fi NTP time sync (no external RTC)
- Proper routing with teardrops and best practices
- Socketed MAX7219 for debugging and replacement
- Clean power architecture:
- 5V for LEDs
- 3.3V for MCU
- Enclosure designed alongside PCB, not after
.
├── V1 PCB/ # PCB files for first revision
├── Arduino-Notes/ # Firmware notes and experiments
├── img/ # Renders and PCB images
This repository exists to document the design, mistakes, and evolution of Klok. Klok comes from the Dutch / German word for “clock” — simple, direct, functional.
Much like the object itself.
