
Mysterium pcb
coseyfannitutti/mysterium
TKL keyboard that can be entirely assembled using only through hole components, including usb type-c

Low-power real-time clock using ATmega32 Timer2 in asynchronous mode, driven by a 32.768 kHz watch crystal on TOSC1/TOSC2.
Timer2 timekeeping is an open-source printed circuit board by Lerrinsyron, from the Lerrinsyron/ATmega32_Asynchronous_Timer2_Timekeeping repository on GitHub. It is a 2-layer board of 45.5 × 57 mm with 18 parts on 41 nets, routed with 162 tracks and 8 vias.
It is built around the ATMEGA32A-PU. Its parts include 4 capacitors, 4 resistors, 4 switches, 3 diodes and 1 IC. It belongs with the AVR (ATmega, ATtiny) boards of this library.
ATmega32 Asynchronous Timer2 Timekeeping
CT 321 — Group 13
Low-power real-time clock using ATmega32 Timer2 in asynchronous mode, driven by a 32.768 kHz watch crystal on TOSC1/TOSC2. The CPU sleeps between timer events; Timer2 keeps running and wakes the CPU exactly once per second.
Build
cd firmware
# Real hardware
avr-gcc -mmcu=atmega32 -DF_CPU=8000000UL -Os -I/usr/avr/include \
-o hex/firmware.elf src/main.c
avr-objcopy -O ihex -R .eeprom hex/firmware.elf hex/firmware.hex
# SimulIDE
avr-gcc -mmcu=atmega32 -DF_CPU=8000000UL -DSIMULIDE_MODE -Os -I/usr/avr/include \
-o hex/firmware_simulide.elf src/main.c
avr-objcopy -O ihex -R .eeprom hex/firmware_simulide.elf hex/firmware_simulide.hexIf /usr/avr/include doesn't exist on your machine, run find /usr -name "io.h" | grep avr to find your avr-libc path.
SimulIDE
Load hex/firmware_simulide.hex into the ATmega32. Set Freq to 8000000 and Serial Monitor baud to 9600.
⚠️ Known limitation: SimulIDE cannot model the external 32.768 kHz crystal on TOSC1/TOSC2. The SIMULIDE_MODE build uses an internal-clock CTC fallback to produce the same 1-second tick. The KiCad design remains correct for real hardware.
Common Issues
Garbage output on serial monitor baud rate mismatch. Confirm SimulIDE Serial Monitor is set to 9600, not 4800.
"SLEEP instruction not fully implemented" warning expected. SimulIDE does not model power-save sleep. Ignore it; everything else works correctly.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | SW_Push | Button_Switch_THT:SW_PUSH_6mm | SW1, SW2, SW3, SW4 |
| 3 | 330 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R3, R4 |
| 3 | LED | LED_THT:LED_D5.0mm | D1, D2, D3 |
| 2 | 100nF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C3, C4 |
| 2 | 12pF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C1, C2 |
| 1 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2 |
| 1 | ATmega32A-P | Package_DIP:DIP-40_W15.24mm | U1 |
| 1 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J1 |
| 1 | Crystal | Crystal:Crystal_HC49-4H_Vertical | Y1 |
It measures 45.5 × 57 mm and has 2 copper layers, 1.6 mm thick.
18 parts, built around the ATMEGA32A-PU. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the Lerrinsyron/ATmega32_Asynchronous_Timer2_Timekeeping repository on GitHub, at the commit this page was made from: the board is kicad/Timer2_timekeeping.kicad_pcb and its schematic kicad/Timer2_timekeeping.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask Lerrinsyron before reusing the design.

coseyfannitutti/mysterium
TKL keyboard that can be entirely assembled using only through hole components, including usb type-c




null-ll/basketweave
Through-hole Alice-style keyboard with arrow keys and a rotary encoder


lyso1/LCK75
a 75% through-hole keyboard designed by myself with inspiration from the CFTKB Discipline and Yiancar Gingham

dsanchezseco/punk75
Ortholinear keyboard with 75 keys and all components through hole