Skip to the content
PCBKitNew board
2 layersCoin haptic timer, the printed circuit board in 3D

Coin haptic timer

johnowhitaker/timrrr

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

5

README

README.md

Timrrr — 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.

image

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
QtyValueFootprintReferences
3—TESTPAD-1.5MMTP1, TP2, TP3
2100nFC_0402C1, C3
1100RR_0402R1
1100kR_0402R2
110uFC_0805C2
11N4148WSSOD-323D1
11kR_0402R3
1AO3400ASOT-23Q1
1ATTINY412-SSNRSOIC-8_3.9x4.9mm_P1.27mmU1
1CR2032MY-2032-12-R_CustomBottomPadBT1
1MK-12C02-G025SMD-6.6x1.4mm_SPDT_RASW1
1REDLED_0603D2
1VCLP1020B002LMOTOR_COIN_10MM_WIRE_PADSM1

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 mmPanel, the printed circuit board in 3D

    Panel

    Dennis960/Blumy

    A smart, WiFi-enabled ESP32 soil moisture and plant sensor

    174 parts3
  • 4 layers44.7 × 64.6 mmBlinky, the printed circuit board in 3D

    Blinky

    hdsjulian/sparkles-old

    Autonomous blinky devices that triangulate via soundd

    97 parts2Apache-2.0
  • 2 layers43 × 64.5 mmBlinky, the printed circuit board in 3D

    Blinky

    hdsjulian/sparkles

    This repo theoretically contains everything to build, assemble and run the sparkling forests light installation.

    72 parts
  • 2 layersAirtag, the printed circuit board in 3D

    Airtag

    Circuit-Digest/DIY-AirTag

    32 parts41
  • 2 layers145 × 80 mmVallpass03, the printed circuit board in 3D

    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 mmClock pcb, the printed circuit board in 3D

    Clock pcb

    MitchellStride/Hummingbird-RP2040-Clock-Module

    RP2040 RTC Module, highly compatible with JLCPCB's basic SMT components.

    124 parts2
  • 4 layers60 × 79 mmSpeaking clock smd, the printed circuit board in 3D

    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 mmCahoots, the printed circuit board in 3D

    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