Skip to the content
PCBKitNew board
2 layers50 × 60 mmCurl tracker, the printed circuit board in 3D

Curl Tracker is a wearable bicep curl tracker that uses an ESP32-C3 Super Mini alongside a MPU-6500 IMU to count reps, measure curl speed, and evaluate form in real-time.

Size
50 × 60 mm
Copper layers
2
Thickness
1.6 mm
Parts
55
Nets
52
Pads
233
Tracks, vias
447, 72
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
1 May 2026
Updated
26 Oct 2026

Overview

Curl tracker is an open-source printed circuit board by terryzhw, from the terryzhw/curl-tracker repository on GitHub, published under the MIT licence. It is a 2-layer board of 50 × 60 mm with 55 parts on 52 nets, routed with 447 tracks and 72 vias.

It is built around the ESP32-C3-MINI-1, TPS63001DRC and BMI270, with the USBLC6-2SC6, AO3400A and DMP2035U among its other parts. Its parts include 17 resistors, 16 capacitors, 5 ICs, 4 connectors and 3 diodes. It belongs with the ESP32 and RISC-V boards of this library.

Main components

7

README

README.md

Curl Tracker: Wearable Bicep Curl Coach

What is Curl Tracker?

Curl Tracker is a wearable bicep curl tracker that uses an ESP32-C3 Super Mini alongside a MPU-6500 IMU to count reps, measure curl speed, and evaluate form in real-time. It uses a on-device classifier to distinguish good reps from common curl form faults. Curl Tracker displays live rep metrics to a SSD1306 OLED and streams data over MQTT to be plotted on a Python/matplotlib client. It also provides haptic feedback and monitoring of device state.

Bicep-Curl Classifier

Training:

image

Collecting:

image

Breadboard Prototype

Design Choices:

  • Power: 3.7V LiPo (range: 3.0V - 4.2V) with a TP4056 module for charging managment. MT3608 module converts the varying 3.7V Lipo to a stable 5V source. A mechanical switch is used as a on/off switch.

  • MCU & Peripherals: ESP32-C3 Super Mini is the MCU that serves as the brain for the project. MPU-6500 IMU and SSD1306 share a I2C bus which the ESP32 uses to communicate. A push button is used to provide data collection input to label reps while gathering training data for the classifier.

  • Feedback: A status LED exists which turns on if any of the electronic malfunction. The OLED displays rep count, sets, and status of MQTT. The vibration motor, paired with a flyback diode circuit for back-EMF protection, is used for haptic feedback.

Curl Tracker breadboard prototype

KiCad Schematic & PCB layout

Design Choices:

  • ESP32-C3-MINI-1 module: Using a pre-certified module means the RF design is already done and the FCC/CE certification carries over, so I avoid the antenna layout, matching network, and re-testing that a bare C3 would require.

  • MPU6500 → BMI270: The MPU6500 is end-of-life and no longer recommended for new designs. The BMI270 is Bosch's current-generation IMU with active vendor support and drivers in most major frameworks.

  • TP4056 → MCP73831: Swapped the TP4056 for Microchip's MCP73831. Better documented, properly sourced through mainstream distributors, and easier to justify in a design review.

  • MT3608 → TPS63001: A LiPo swings from 4.2 V down to 3.0 V, which straddles the 3.3 V rail from both directions. A boost-only converter or an LDO can't hold regulation across that whole range, so the TPS63001 buck-boost keeps 3.3 V stable through the full discharge curve, including the current spikes when the ESP32's radio transmits.

  • USB-C: The current connector standard: reversible, mechanically more durable than micro-B, and what any user will already have a cable for.

  • JST-PH for battery and motor: Keyed housings so the connectors can't be seated backwards, and they're cheap, common, and rated well past the current this board draws.

schematic pcb_view 3d_view manufactured

Parts

55
QtyValueFootprintReferences
7100nFCapacitor_SMD:C_0402_1005MetricC6, C8, C10, C13, C14, C15, C16
610kResistor_SMD:R_0402_1005MetricR3, R6, R9, R10, R16, R17
610uFCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C4, C7, C9
4MountingHoleMountingHole:MountingHole_3.2mm_M3_PadH1, H2, H3, H4
3100kResistor_SMD:R_0402_1005MetricR1, R4, R5
3SW_PushButton_Switch_SMD:SW_SPST_TL3305ASW1, SW2, SW3
2100Resistor_SMD:R_0402_1005MetricR2, R15
24.7kResistor_SMD:R_0402_1005MetricR7, R8
24.7uFCapacitor_SMD:C_0805_2012MetricC11, C12
25.1kResistor_SMD:R_0402_1005MetricR11, R12
2JST-PHConnector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_HorizontalJ1, J4
11N5819Diode_SMD:D_SOD-123D3
11uFCapacitor_SMD:C_0805_2012MetricC5
12.2uHInductor_SMD:L_Coilcraft_LPS4018L1
1470Resistor_SMD:R_0402_1005MetricR13
15kResistor_SMD:R_0402_1005MetricR14
1AO3400APackage_TO_SOT_SMD:SOT-23Q2
1BMI270BMI270:XDCR_BMI270U4
1DMP2035Package_TO_SOT_SMD:SOT-23Q1
1ESP32-C3-MINI-1PCM_Espressif:ESP32-C3-MINI-1U2
1LEDLED_SMD:LED_0603_1608MetricD2
1MBR120Diode_SMD:D_SOD-123D1
1MCP73831-2-OTPackage_TO_SOT_SMD:SOT-23-5U3
1SSD1306 OLEDConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ3
1TPS63001Package_SON:Texas_DRC0010J_ThermalViasU1
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U5
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ5

Questions

How big is the Curl tracker PCB?

It measures 50 × 60 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Curl tracker use?

55 parts, built around the ESP32-C3-MINI-1, TPS63001DRC, BMI270 and USBLC6-2SC6. 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 Curl tracker KiCad files?

From the terryzhw/curl-tracker repository on GitHub, at the commit this page was made from: the board is design_files/curl_tracker.kicad_pcb and its schematic design_files/curl_tracker.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Curl tracker design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers83 × 83 mmBlinkekatze, the printed circuit board in 3D

    Blinkekatze

    TobleMiner/blinkekatze

    Blinkekatze, a replacement PCB to turn cat themed night-lights into interactive light displays

    134 parts34
  • 2 layers92.1 × 78.1 mmPaperd.ink, the printed circuit board in 3D

    Paperd.ink

    paperdink/paperd.ink_hw

    Hardware files for paperd.ink

    87 parts9CC-BY-SA-4.0
  • 2 layers120 × 100 mmCh bot, the printed circuit board in 3D

    Ch bot

    doabayomi/horizon-pcb

    PCB Design for the Horizon Controller Prototype (REV 1)

    271 parts
  • 4 layers55 × 55 mmDrone PCB FC, the printed circuit board in 3D

    Drone PCB FC

    Ethansuttor/drone_PCB

    An 80×80 mm STM32F405 flight controller for a 4S freestyle quad, running Betaflight off a custom target I wrote.

    90 parts
  • 4 layers32 × 46 mmFalcon core, the printed circuit board in 3D

    Falcon core

    PHS-SMCS/falcon-core

    Lightest ESP32-based blimp controller with the works; 9-DoF, ToF altimetry, motor drivers, and Wi-Fi enabled camera streaming, all on a single 300mAh LiPo. >1hr of battery life.

    94 partsAGPL-3.0
  • 2 layers148.6 × 192.2 mmBadge, the printed circuit board in 3D

    Badge

    NuttyShell/NuttyBadge

    NuttyBadge: A NuttyShell crafted multi-tool. Opensourced Hardawre and Software

    169 parts31GPL-3.0
  • 4 layers100 × 70.5 mmSmart Irrigation SystemV2, the printed circuit board in 3D

    Smart Irrigation SystemV2

    Benedikt3141/Smart-Irrigation-System

    A smart irrigation system for irrigation of up to 6 plants. It monitors the moisture, temperature, CO2 concentration, air quality ... and displays the data on a 2.4" TFT Display using an ESP32 DevKit C as processor.

    147 parts1MIT
  • 4 layers90 × 50 mmCryobelt, the printed circuit board in 3D

    Cryobelt

    michael201110/cryobelt

    100 parts1