

Coin haptic timer
Hey! Johno the human here. This repo/project is in part a test of the state of 'vibe electronics'. The board works but requires a minor bodge, bridging pins 6&7 on the ATtiny chip.
- Copper layers
- 2
- Thickness
- 0.8 mm
- Parts
- 16
- Nets
- 9
- Pads
- 40
- Tracks, vias
- 0, 0
- Routed
- Not yet
- KiCad
- KiCad 5 (file 20171130)
- Created
- 4 Aug 2026
- Updated
- 5 Aug 2026
Overview
Coin haptic timer is an open-source printed circuit board by johnowhitaker, from the johnowhitaker/timrrr repository on GitHub. It is a 2-layer board with 16 parts on 9 nets.
It is built around the 1N4148WS, AO3400A and CR2032, with the MK-12C02-G025 and VCLP1020B002L among its other parts. Its parts include 3 capacitors, 3 resistors, 2 diodes, 1 IC and 1 transistor. It belongs with the AVR (ATmega, ATtiny) and NXP (LPC, Kinetis, i.MX RT) boards of this library.
Main components
51N4148WS
SOD-3231.25V@150mA 100V 150mA 1uA@75V 200mW 2A 4ns Independent SOD-323 Switching Diodes ROHSJiangsu Changjing Electronics Technology (CJ)Switching DiodesAO3400A
SOT-23-55℃~+150℃ 1 N-channel 1.45V 1.4W 30V 48mΩ@2.5V 5.7A 50pF 630pF 75pF 7nC@10V N-Channel SOT-23 MOSFETs ROHSAlpha & Omega SemiconductorMOSFETsCR2032
-- Unclassified goods ROHSMaxellUncategorisedMK-12C02-G025
SMD,6.6x1.4mm1.4mm 300mA 5.2mm 5V 6.6mm Black Rectangular Columnar SPDT Surface Mount, Right Angle SMD,6.6x1.4mm Slide Switches ROHSG-SwitchSlide SwitchesVCLP1020B002L
-Vibration MotorsJinlong Machinery
README
README.mdTimrrr — pocket haptic timer
Hey! Johno the human here. This repo/project is in part a test of the state of 'vibe electronics'. The board works but requires a minor bodge, bridging pins 6&7 on the ATtiny chip. Apart from that it works exactly as hopes! The goal is to train my 'time sense' and avoid taking logner-than-expected breaks. The whole process of this (apart from debugging the wrong pin during board bring-up) was smooth and pleasant, and I'm a little in awe of the fact that I could get 5 boards ASSEMBLED for $15, albeit with the new-customer $10 discount applied and a simple little circuit. Delightful times. Anyway, feel free to ask me about the project, or ask your agent about the project, but please don't ask your agent to ask me about the project! And if you want to replicate, well, maybe wait for v2, which I will make (and maybe sell?) if it turns out to be a useful device. Cheers, J.
Timrrr is a coin-sized timer that gives one discreet vibration approximately every five minutes. This repository captures the manufactured CR2032 MVP, its electrical reference files, firmware, assembly notes, and programming workflow.
Hardware snapshot
- 32 mm round, 0.8 mm PCB
- ATtiny412 microcontroller
- CR2032 primary cell
- Vybronics VCLP1020B002L 10 mm × 2.1 mm vibration motor, hand-soldered
- AO3400A low-side motor driver with flyback diode
- One red status LED
- Hard power switch; bridge the switch pads when the switch is omitted
- Single-wire UPDI programming through TP1–TP3
The intended final behavior is a 200 ms buzz every nominal five minutes. On power-up, one short LED flash means the open-circuit battery reading is acceptable and three flashes mean low battery. Normal periodic operation remains dark.
Current status — 2026-08-04
The as-fabricated PCB contains one confirmed pinout error: TP1 was routed to U1 physical pin 7 (PA3), but the ATtiny412's PA0/UPDI signal is physical pin 6. Bridging U1 pins 6 and 7 reworks the existing boards; PA3 is otherwise unused by the firmware. The editable PCB/netlist references have been corrected for the next revision, while the archived JLC manufacturing files remain unchanged.
After the rework, a CP2102 SerialUPDI adapter received STATUSA 0x20, the
32-byte tinyAVR SIB, and device signature 1E 92 23. The 476-byte
bringup_led sketch was then programmed and verified successfully at 57600
baud, and its one-second LED pattern was observed on hardware. The 1652-byte
pocket_haptic_timer sketch was subsequently programmed and flash-verified.
Motor operation, five-minute RTC timing, ADC calibration, battery sag, and
sleep current still require bench validation.
A second reworked board was subsequently programmed and flash-verified through
the patched Raspberry Pi Pico Debug Probe toolchain with demo_10s_15s, which
uses RTC standby sleep between a 10-second motor output and 15-second LED event.
Earlier debugging also identified a Raspberry Pi Debug Probe compatibility issue: its UART bridge suspends while DTR is low, whereas megaTinyCore SerialUPDI normally opens with DTR low. The retained DTR patch and standalone Pico probe remain useful diagnostic tools, but neither was the cause of the target silence; the incorrect physical UPDI pin was.
Repository map
hardware/manufacturing/jlcpcb/as-received/— original JLC order-detail downloads, unchanged.hardware/manufacturing/jlcpcb/order-export/— extracted fabrication/order snapshot from JLC.hardware/source/— KiCad electrical/reference files, BOMs, placement data, and explicit net audit.hardware/easyeda-import/— historical EasyEDA import archive.firmware/bringup_led/— first programming test; flashes the status LED once per second.firmware/motor_test/— guarded two-second motor test.firmware/pocket_haptic_timer/— Arduino-buildable five-minute timer; review-ready but not bench-qualified.firmware/baremetal_reference/— original avr-gcc implementation retained for comparison.docs/programming.md— Pico/SerialUPDI wiring and Arduino IDE configuration.docs/assembly.md— motor, holder, and missing-switch connections.docs/cost_estimate.csv— original planning estimate.tools/pico/debugprobe.uf2— Raspberry Pi Debug Probe firmware used during bring-up.tools/pico/updi_probe/— read-only Pico firmware that generates UPDI locally without a USB-UART bridge.tools/serialupdi/— Raspberry Pi Debug Probe compatibility patch for megaTinyCore SerialUPDI.
Important source-of-truth note
The files under hardware/source/ predate the final interactive EasyEDA routing and are retained as electrical and design-reference sources. The JLC order archive under hardware/manufacturing/jlcpcb/ is the authoritative record of the PCB that was actually fabricated.
First bring-up
Follow docs/programming.md. Program firmware/bringup_led/bringup_led.ino before installing the motor. A successful test gives a 250 ms LED flash once per second.
Do not connect a CR2032 while the Pico's 3.3 V output is connected to TP2. Do not run the motor from the Pico's 3.3 V rail.
Safety
A CR2032 can cause fatal internal burns if swallowed. Any enclosure must make the cell inaccessible to children and require a tool or two independent simultaneous actions to open. These files are an experimental MVP and have not received product-safety, EMC, or regulatory certification.
Parts
16| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | — | TESTPAD-1.5MM | TP1, TP2, TP3 |
| 2 | 100nF | C_0402 | C1, C3 |
| 1 | 100R | R_0402 | R1 |
| 1 | 100k | R_0402 | R2 |
| 1 | 10uF | C_0805 | C2 |
| 1 | 1N4148WS | SOD-323 | D1 |
| 1 | 1k | R_0402 | R3 |
| 1 | AO3400A | SOT-23 | Q1 |
| 1 | ATTINY412-SSNR | SOIC-8_3.9x4.9mm_P1.27mm | U1 |
| 1 | CR2032 | MY-2032-12-R_CustomBottomPad | BT1 |
| 1 | MK-12C02-G025 | SMD-6.6x1.4mm_SPDT_RA | SW1 |
| 1 | RED | LED_0603 | D2 |
| 1 | VCLP1020B002L | MOTOR_COIN_10MM_WIRE_PADS | M1 |
Questions
What parts does the Coin haptic timer use?
16 parts, built around the 1N4148WS, AO3400A, CR2032 and MK-12C02-G025. 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.
Where can I download the Coin haptic timer KiCad files?
From the johnowhitaker/timrrr repository on GitHub, at the commit this page was made from: the board is hardware/source/coin_haptic_timer.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Coin haptic timer design in my own project?
Its repository states no licence, so its author keeps all rights: ask johnowhitaker before reusing the design.
Similar boards
- 4 layers70 × 116 mm

- 4 layers44.7 × 64.6 mm

Blinky
hdsjulian/sparkles-old
Autonomous blinky devices that triangulate via soundd
97 parts2Apache-2.0 - 2 layers43 × 64.5 mm

Blinky
hdsjulian/sparkles
This repo theoretically contains everything to build, assemble and run the sparkling forests light installation.
72 parts - 2 layers

- 2 layers145 × 80 mm

Vallpass03
GustavoVieira13/vallpass
Electronic prototype of a lamp post using LoRa in the Smart Cities scope consisting of a PCB and firmware development.
46 parts - 2 layers100 × 50 mm

Clock pcb
MitchellStride/Hummingbird-RP2040-Clock-Module
RP2040 RTC Module, highly compatible with JLCPCB's basic SMT components.
124 parts2 - 4 layers60 × 79 mm

Speaking clock smd
lhm0/talking_clock
A talking clock for visually impaired users. ESP32 controlled, fully offline, long battery life.
89 parts1 - 2 layers54 × 86 mm

Cahoots
yourbuddyconner/cahoots
A 54 × 86 mm two-layer board that a Raspberry Pi Pico 2 solders onto. Front: the raw 1.54" e-paper (Good Display GDEY0154D67) on its 24-pin flex, two tactile switches, the pin half of a magnetic pogo connector at the…
46 parts1