Skip to the content
4 layers40 × 60 mmTrinketcore, the printed circuit board in 3D

Trinketcore

alph4345/test

TrinketCore puts everything a small rechargeable gadget needs on one 40 × 60 mm board, ready to order assembled from PCBWay:

Size
40 × 60 mm
Copper layers
4
Thickness
1.6 mm
Parts
113
Nets
89
Pads
416
Tracks, vias
1,099, 177
Pours
5
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
25 Sep 2026
Updated
18 Oct 2026

Overview

Trinketcore is an open-source printed circuit board by alph4345, from the alph4345/test repository on GitHub. It is a 4-layer board of 40 × 60 mm with 113 parts on 89 nets, routed with 1,099 tracks and 177 vias.

It is built around the RP2040, MAX98357AETE+T and TPS63031DSKR, with the W25Q128JVSIQ, PCF8563T/5,518-CN and TPS3808G01DBVR-TP among its other parts. Its parts include 37 resistors, 32 capacitors, 9 transistors, 8 ICs and 7 diodes. It belongs with the RP2040 boards of this library.

Main components

12

README

hardware/trinketcore/README.md

TrinketCore: the all-in-one supercapacitor trinket board

TrinketCore puts everything a small rechargeable gadget needs on one 40 × 60 mm board, ready to order assembled from PCBWay:

  • Room for two capacitors. They lie flat on the back, wired in parallel.
  • USB-C charging, with a red "charging" and a green "full" LED.
  • A socket for an OLED or colour TFT module. The microcontroller reads the capacitor's charge and can show it on the screen.
  • An RP2040 microcontroller with 16 MB of flash for code, sounds and pictures.
  • A speaker amplifier, two buttons, a user LED, a wake-up clock and an expansion header for LEDs, buttons and a lid switch.

The power side is CapCore's proven circuit. It cuts off before the capacitor over-discharges, uses a soft power switch that turns the whole board off, and has a buck-boost converter that keeps 3.3 V steady as the capacitor drains.

TopBottom (capacitor bay)
TrinketCore topTrinketCore bottom

Renders of the actual Gerber layers. The display plugs into the socket along the top edge. The capacitors solder into the pads on the left and lie flat inside the outlines on the back.

What's on the board

CapacitorsBT1 + BT2 in parallel: one or two 3.8 V lithium-ion capacitors (LIC). EDLC build: 2.7 V supercapacitors
ChargingUSB-C, TI BQ25173, 300 mA: two 220 F capacitors fill in about 30 minutes. Red LED (CHG) while charging, green LED (FULL) when full (USB plugged in)
Protectiondisconnects at 2.61 V (LIC) / 1.96 V (EDLC) and stays off until USB returns; ship mode for storage
Power switchthe whole board is off between uses (about 5 µA). It turns on from button A, a lid/tilt switch on WAKE, the clock alarm, or USB. Firmware keeps it on with HOLD
3.3 VTI TPS63031 buck-boost, ~500 mA even from a nearly empty capacitor
MicrocontrollerRaspberry Pi RP2040, 12 MHz crystal, 16 MB Winbond flash, USB-C data for programming, BOOT and RESET buttons (SWD is not broken out: the USB bootloader is in ROM)
DisplayJ4: socket for SPI TFT/OLED modules (GND VCC SCL SDA RES DC CS BLK), backlight dimmable by PWM. J5: 4-pin I²C OLED socket. J8: Qwiic/STEMMA QT
Charge readingcapacitor voltage on an ADC pin, plus "charging" and "USB present" inputs
SoundMAX98357A I²S class-D amplifier, 9 dB gain, shut down when idle; J7 speaker connector (JST PH 2.0 or solder the wires)
ClockNXP PCF8563 real-time clock: wakes the board on a timer or alarm (virtual pets, e-ink updates)
ButtonsA / POWER (turns the board on and is readable by firmware), B, BOOT, RESET
LEDsred CHG, green FULL (charging), blue user LED on GP25
ExpansionJ6, 14 pins: GP0–GP7, GP28–GP29 (analog), WAKE, VSYS, 3V3, GND
Board4 layers, 40 × 60 × 1.6 mm, all parts on top, PCBWay standard rules (6/6 mil, 0.3 mm holes)

Which display?

The socket fits the common 0.96–1.54″ modules, so you can try several and pick per product. A screen is the second-biggest power draw after a speaker, so the firmware uses it in short bursts: wake, show, dim, switch off.

DisplayColourDraw (with the RP2040 running)Good for
0.96″ SSD1306 OLED, 128 × 64 (SPI on J4 or I²C on J5)mono~35–40 mA; dark screens use lessgames, menus, pets
1.3–1.54″ ST7789 IPS TFT, 240 × 240full colour~45 mA at 60 % backlight, ~30 mA dimmedcolour animations, charms, games
1.28″ GC9A01 round TFT, 240 × 240full colourabout the same as the ST7789keychain "digital charms"
1.54″ 200 × 200 or 3.7″ 480 × 280 e-paper module (SSD1681 and similar)black/white, 4 greys, or black/white/rednothing between refreshes; ~30 mA for 2–3 s per black/white refresh (~14 s for three-colour)tarot oracles, badges, pets, clocks: always visible

Yes, colour TFTs work well. The backlight is most of the extra power, so dim it and switch off after a few seconds. On two 220 F capacitors a colour charm shown for 10 s, 30 times a day, lasts about four weeks. Played continuously, a colour game lasts about two hours. See the design method for the numbers.

Module pin orders vary. Modules labelled GND VCC SCL SDA RES DC CS BLK plug straight into J4. Seven-pin OLEDs (GND VCC D0 D1 RES DC CS) use the first seven positions. Others, including many GC9A01 modules (VCC GND ...), need short jumper wires. Check that GND and VCC line up before plugging in.

E-ink works too, and suits anything that should stay visible: the image costs no power at all once drawn, so the board can switch fully off. E-paper modules have a BUSY output where TFTs have a backlight input. Wire them to J4 by function (VCC → 3V3, GND, DIN → MOSI, CLK → SCK, CS, DC, RST → RES) with BUSY on the BLK pin, which the RP2040 reads on GP13. The oracle example shows a random tarot card this way.

Runtime per charge

LIC build, 85 % converter efficiency, 5 µA standby (tools/energy_calc.py):

Trinket1 × 120 F1 × 220 F2 × 220 F
Music box: 20 s tune + LEDs (~70 mA), 10 plays a day75 plays (8 days)138 plays (14 days)276 plays (4 weeks)
Colour TFT charm: 10 s shows (45 mA), 30 a day8 days14 days4 weeks
Virtual pet on e-paper: wakes every 30 min (30 mA × 3 s)3 weeks6 weeks3 months*
Tarot oracle on e-paper: a card per press (30 mA × 5 s), 10 a day600 draws (2 months)1,100 draws*2,200 draws*
OLED game, continuous (40 mA)45 min80 min2.7 h
Colour TFT game, continuous (55 mA)33 min60 min2 h

* Beyond a month or two the capacitors' own self-discharge dominates.

Fitting the capacitors

The two capacitor positions sit along the left edge. Square pad = +. Each position takes a 5.0 mm lead pitch (10–12.5 mm cans) or 3.5 mm (8 mm cans). Bend 16 mm cans' 7.5 mm leads in slightly. Bend the leads 90° so each can lies flat on the back inside its outline (CAP 1, CAP 2), with its leads at the left edge. Stick a strip of Kapton tape under each can, and glue or strap large cans.

  • One capacitor is fine: fit either position.
  • Two capacitors must be the same type (both LIC, or both EDLC on an EDLC build). Sizes may differ.
  • Good choices: Eaton HS1225-3R8127-R (120 F, 12.5 × 25 mm) or HS1625-3R8227-R (220 F, 16 × 25 mm). See choosing a capacitor.

Never fit a 2.7 V supercapacitor to a board built with the LIC values. It would be charged to 3.71 V and can vent. Tick the build box on the back, and measure the charge voltage before fitting capacitors (see Bring-up).

Pinout

J4 display socket (top edge, pin 1 = square pad, left): GND · 3V3 · SCK (GP10) · MOSI (GP11) · RES (GP12) · DC (GP9) · CS (GP8) · BLK (GP13 via 100 Ω)

J5 I²C OLED socket: GND · 3V3 · SCL (GP17) · SDA (GP16). J8 Qwiic: GND · 3V3 · SDA · SCL. The same bus as the clock (address 0x51), with 4.7 kΩ pull-ups.

J6 expansion (right edge, pin 1 at the top): GP7 · GP6 · GP5 · GP4 · GP3 · GP2 · GP1 · GP0 · GP29 · GP28 · WAKE · VSYS · 3V3 · GND. The order matches the RP2040's pins, which keeps the tracks from crossing; the back silkscreen labels every pin.

  • WAKE: pull to GND to switch the board on (lid, tilt, reed or vibration switch). For a lid that may stay open, put a 1 µF capacitor in series with the switch and a 22 MΩ resistor across that capacitor. Opening the lid then sends one wake pulse, and the board can still switch itself off.
  • VSYS: the capacitor voltage (2.6–3.7 V), on only while the board runs. Use it for vibration motors or LED strips that tolerate it.
  • GPIO pins drive LEDs directly, up to ~8 mA each through a resistor.

J7 speaker: 8 Ω, 0.5–1 W. GPIO map: see the firmware README.

LEDs and power states

LEDMeaning
red CHGcharging
green FULLUSB plugged in and the capacitors are full
red and green blinking alternatelycharger fault (for example a capacitor wired backwards, or overheating)
blueyours (GP25)

With USB plugged in the board also switches on, so a gauge can show charging progress. Cut jumper JP1 on the back if plugging in should only charge. Bridge JP2 for gadgets without a power button (always on above the cut-off).

StateDrain from the capacitorsLeaves the state when…
Runningyour load ÷ ~85 %firmware drops HOLD
Off~5 µA (clock running)button A, WAKE, clock alarm/timer, USB
Cut-off / ship modeleakage onlyUSB is plugged in

Ordering from PCBWay

Everything is in fab/:

FileUpload / use
trinketcore-gerbers.zipthe PCB (Gerbers + drill)
pcbway-bom-lic.csv (or -edlc.csv)assembly BOM for your build
pcbway-centroid.csvpick-and-place positions (mm, origin at the bottom-left corner, same as the Gerbers)
trinketcore-assembly-top.pdf, -back.pdfassembly drawings, if PCBWay asks
parts-list.csvevery part, including the ones you fit yourself
  1. On pcbway.com choose PCB Instant Quote → Quick-order PCB and upload trinketcore-gerbers.zip. It should read 40 × 60 mm and 4 layers.
  2. Board settings:
    • Material FR-4, thickness 1.6 mm, any solder mask colour.
    • Min track/spacing 6/6 mil, min hole size 0.3 mm.
    • Surface finish: ENIG is recommended because the RP2040 has 0.4 mm-pitch pads. HASL lead-free usually works too.
    • Order number: the back has a WayWayWay placeholder where PCBWay can print it. Tell them in the notes, or pick the remove-order-number option.
  3. Tick Assembly service: turnkey, top side only, about 102 SMD parts (44 unique lines), no through-hole parts. Upload pcbway-bom-lic.csv and pcbway-centroid.csv.
  4. Paste this note: "BT1, BT2, J4–J7, JP1–JP2: do not populate (customer fits capacitors and connectors). J8 and all other parts: assemble as per BOM. Please confirm pin 1 of U2, U3, U4, U5, U6, U7, U8 and the LED polarity against the silkscreen before assembly."
  5. PCBWay's engineers review the files, source the parts, and email if a part needs a substitute. Resistors and capacitors may be any brand with the same value, size and tolerance. Approve their placement confirmation photos.

Rough cost (prices change, so trust the quote): about US$25–50 for five 4-layer boards, plus assembly (setup ~US$30–50, parts ~US$8–12 per board with the RP2040, flash and amplifier). Five assembled boards typically land around US$100–180 before shipping. Most of that is fixed, so ten cost little more.

The same files work at other assembly houses (the BOM has manufacturer part numbers, and LCSC numbers where known).

Bring-up

Before fitting the capacitors:

  1. Plug in USB-C. The red and green LEDs may flicker (nothing to charge yet), and the board switches on.
  2. Measure between the square BT1 pad and GND: about 3.7 V is the LIC build, 2.6 V the EDLC build.
  3. The computer should show an RPI-RP2 drive (blank flash starts the bootloader). Install CircuitPython and try the charge gauge with a display on J4.

Then unplug USB, fit the capacitors (square pad = +), and plug USB back in: red while charging, green when full. Unplug and press A: the board runs for about 5 s, or longer if firmware raises HOLD. A new capacitor that arrives below the cut-off keeps the board off until it has charged past it.

Design files

File
trinketcore.kicad_pro/.kicad_sch/.kicad_pcbKiCad 7 project
trinketcore-schematic.pdfschematic
TrinketCore.kicad_sym, TrinketCore.pretty/project symbols and footprints
trinketcore.sesautorouter result that route_pcb.py rebuilds the board from
scripts/the generators

As with CapCore, the board is generated from code:

text
cd hardware/trinketcore/scripts
python3 gen_footprints.py
python3 gen_schematic.py && python3 check_netlist.py
python3 check_place.py
FREEROUTING_JAR=/path/to/freerouting-1.9.0.jar python3 route_pcb.py --autoroute
python3 check_netlist.py --pcb && python3 export_fab.py && python3 render.py

netlist.py is the single source of truth: parts, values, manufacturer part numbers and every connection. Autorouting needs Java and Freerouting 1.9.0 (under xvfb-run on a headless machine); without --autoroute the board is rebuilt from the committed trinketcore.ses. The crystal and the power fan-outs are drawn by hand in preroute.py, and a small grid router (maze.py) finishes whatever Freerouting leaves open.

Verification status: the schematic and PCB are checked pin-for-pin against netlist.py (378 pins). KiCad DRC with PCBWay's limits reports no errors and no unconnected items, only one warning: the USB-C footprint differs from the library copy because its silkscreen was trimmed at the board edge. The routing is automatic, so some tracks take detours a hand layout wouldn't. The board has not been built and tested yet: treat the first order as a prototype run and follow the bring-up steps.

Parts

113
QtyValueFootprintReferences
17100nFCapacitor_SMD:C_0402_1005MetricC10, C13, C14, C15, C18, C19, C20, C21, C22, C23, C24, C25, C28, C29, C31, C33 +1
71MResistor_SMD:R_0402_1005MetricR10, R14, R15, R16, R18, R24, R36
6100kResistor_SMD:R_0402_1005MetricR9, R17, R20, R23, R26, R27
61kResistor_SMD:R_0402_1005MetricR3, R6, R25, R30, R31, R34
6AO3400APackage_TO_SOT_SMD:SOT-23Q2, Q3, Q4, Q6, Q8, Q9
510uFCapacitor_SMD:C_0805_2012MetricC9, C11, C12, C30, C32
410kResistor_SMD:R_0402_1005MetricR8, R21, R22, R35
41N4148WSDiode_SMD:D_SOD-323D2, D3, D4, D6
31uFCapacitor_SMD:C_0402_1005MetricC6, C26, C27
3AO3401APackage_TO_SOT_SMD:SOT-23Q1, Q5, Q7
3FiducialFiducial:Fiducial_1mm_Mask2mmFID1, FID2, FID3
2100Resistor_SMD:R_0402_1005MetricR37, R38
210nFCapacitor_SMD:C_0402_1005MetricC3, C7
215pFCapacitor_SMD:C_0402_1005MetricC16, C17
227Resistor_SMD:R_0402_1005MetricR32, R33
2330kResistor_SMD:R_0402_1005MetricR12, R13
24.7kResistor_SMD:R_0402_1005MetricR28, R29
25.1kResistor_SMD:R_0402_1005MetricR1, R2
2LIC 3.8VTrinketCore:Supercap_PadsBT1, BT2
11.5uHTrinketCore:L_3015_UniversalL1
110MResistor_SMD:R_0402_1005MetricR7
110uFCapacitor_SMD:C_0603_1608MetricC2
1120kResistor_SMD:R_0402_1005MetricR4
112MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY2
132.768kHzCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY1
133kResistor_SMD:R_0402_1005MetricR5
14.7uFCapacitor_SMD:C_0603_1608MetricC8
14.7uFCapacitor_SMD:C_0805_2012MetricC1
1470kResistor_SMD:R_0402_1005MetricR11
1ALWAYS-ONJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP2
1BTrinketCore:SW_TS-1187A_5.1x5.1mmSW2
1BLUELED_SMD:LED_0603_1608MetricD7
1BOOTButton_Switch_SMD:SW_SPST_B3U-1000PSW3
1BQ25173DSGRTrinketCore:WSON-8-1EP_2x2mm_P0.5mm_EP0.9x1.6mm_Vias0.3U2
1DISPLAYConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ4
1EXPANSIONConnector_PinHeader_2.54mm:PinHeader_1x14_P2.54mm_VerticalJ6
1GREENLED_SMD:LED_0603_1608MetricD5
1I2C OLEDConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ5
1MAX98357ATrinketCore:TQFN-16-1EP_3x3mm_P0.5mm_EP1.23x1.23mm_Vias0.3U8
1PCF8563TPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU5
1POWER/ATrinketCore:SW_TS-1187A_5.1x5.1mmSW1
1QWIICConnector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_HorizontalJ8
1REDLED_SMD:LED_0603_1608MetricD1
1RESETButton_Switch_SMD:SW_SPST_B3U-1000PSW4
1RP2040TrinketCore:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mm_Vias0.3U6
1SPEAKERConnector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ7
1TPS3808G01DBVRPackage_TO_SOT_SMD:SOT-23-6U3
1TPS63031DSKRTrinketCore:WSON-10-1EP_2.5x2.5mm_P0.5mm_EP1.2x2mm_Vias0.3U4
1USB-CConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1
1USB-ONJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP1
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U1
1W25Q128JVSPackage_SO:SOIC-8_5.23x5.23mm_P1.27mmU7

More from alph4345/test

1
  • 4 layers21 × 48 mmCapcore, the printed circuit board in 3D

    Capcore

    alph4345/test

    TrinketCore puts everything a small rechargeable gadget needs on one 40 × 60 mm board, ready to order assembled from PCBWay:

    68 parts

Similar boards

  • 2 layers26 × 40 mmNervous ECG, the printed circuit board in 3D

    Nervous ECG

    sensors-inl/Nervous-ECG

    ECAD design files, firmware source code and standalone application for the ECG sensor of the Nervous project.

    65 parts2MIT
  • 4 layers100 × 30 mmNrst tracks only, the printed circuit board in 3D

    Nrst tracks only

    vexpaer/vexpaers_heart

    Open-source Holter ECG recorder hardware: ADS1294R, STM32WB55, microSD, BLE and USB-Pogo dock

    167 partsCERN-OHL-S-2.0
  • 4 layers64 × 56 mmAlec sensor, the printed circuit board in 3D

    Alec sensor

    eshelton328/forge

    Hardware design monorepo with software-grade CI/CD. KiCad PCB projects with automated ERC/DRC, multi-fab rule validation, schematic & BOM checks, and auto-generated board documentation.

    100 parts
  • 6 layers91.6 × 50.6 mmSmokebreak, the printed circuit board in 3D

    Smokebreak

    offgridevices/offgrid-hardware

    Open hardware from OffGrid Devices. One folder per board. CERN-OHL-S.

    208 partsCERN-OHL-S-2.0
  • 4 layers70 × 100 mmEDUEXO custom PCB, the printed circuit board in 3D

    EDUEXO custom PCB

    fabianjust/classroom-exo

    Classroom-ready open-source educational exoskeleton for biomedical and control engineering

    75 parts6
  • 6 layers250 × 167.9 mmDev board1, the printed circuit board in 3D

    Dev board1

    tbennellick/sts-hiz-serial-bodge

    966 parts
  • 6 layers32 × 20 mmWire Free DAQ, the printed circuit board in 3D

    Wire Free DAQ

    Aharoni-Lab/Miniscope-Wire-Free-DAQ

    All information, guides, and tutorials can be found on the Miniscope-Wire-Free-DAQ Wiki Page .

    126 parts5
  • 2 layers100 × 97.1 mmV8 (Carte 1), the printed circuit board in 3D

    V8 (Carte 1)

    CamilleRojas/Carte_Wifi

    57 parts

Questions

How big is the Trinketcore PCB?

It measures 40 × 60 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Trinketcore use?

113 parts, built around the RP2040, MAX98357AETE+T, TPS63031DSKR and W25Q128JVSIQ. 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 Trinketcore KiCad files?

From the alph4345/test repository on GitHub, at the commit this page was made from: the board is hardware/trinketcore/trinketcore.kicad_pcb and its schematic hardware/capcore/capcore.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Trinketcore design in my own project?

Its repository states no licence, so its author keeps all rights: ask alph4345 before reusing the design.