Skip to the content
PCBKitNew board
2 layers47.9 × 28.5 mmPosture tracker v2, the printed circuit board in 3D

Posture Correction using ESP32-MINI-1 and MU sensor (GY-521 / MPU-6050)

Size
47.9 × 28.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
52
Nets
82
Pads
260
Tracks, vias
437, 38
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
25 Apr 2026
Updated
10 Jun 2026

Overview

Posture tracker v2 is an open-source printed circuit board by kiranj26, from the kiranj26/Posture-Tracker-Using-ESP32 repository on GitHub, published under the MIT licence. It is a 2-layer board of 47.9 × 28.5 mm with 52 parts on 82 nets, routed with 437 tracks and 38 vias.

It is built around the ESP32-S3-MINI-1-N8, DRV2605LDGS and AP2112K-3.3TRG1, with the MCP73831T-2ACI/OT-HXY, MPU-6050 and USBLC6-2SC6 among its other parts. Its parts include 19 capacitors, 14 resistors, 7 ICs, 3 switches and 2 diodes. It belongs with the ESP32 boards of this library.

Main components

6

README

README.md

Posture Tracker V2 — Product Grade Wearable

Branch: release/v2-product
Status: In development
V1 (MVP breadboard): See main branch

A product-grade evolution of the ESP32 posture tracker. V2 moves from a breadboard prototype to a wearable device — custom PCB, LiPo battery, haptic motor, and a compact shoulder-clip form factor small enough to wear all day.

Hardware: ESP32-S3-MINI-1 · MPU-6050 · DRV2605L + LRA · MAX98357A · 20mm speaker · 350mAh LiPo
Stack: ESP-IDF 5.5.0 · PlatformIO · C only (no Arduino, no C++)
Target size: 45×35×16mm (PCB + battery + clip)


What's New in V2

FeatureV1V2
AlertsAudio onlyHaptic (early) + Audio (escalation)
MCUESP32 Dev Kit breakoutESP32-S3-MINI-1 stamp module (built-in PCB antenna)
PowerUSB only350mAh LiPo — 12–15 hr battery life
PCBBreadboard + breakoutsCustom 2-layer PCB, all ICs direct
Speaker3W 4Ω (50mm, large)0.5W 8Ω (20mm, compact)
USBMicro-USBUSB-C with proper CC resistors
ButtonsNone2 buttons — recalibrate + snooze
Form factor~120×80mm breadboard45×35×16mm shoulder clip

Alert UX — Layered Haptic + Audio

The key design principle: haptics for early alerts, audio only for escalation.

Time / StateHapticAudio
10° for 3s — WARNING entrySingle tapSilent
WARNING sustainedDouble tapSilent
20° for 5s — BAD entryStrong double tapDouble beep
BAD +8sTriple pulseDouble beep
BAD +16sTriple pulseDouble beep
BAD +24s onwardsTriple pulse"Sit up straight" — repeats every 8s
Posture correctedLong reward pulse"Thank you good work"
30s good streakGentle pulseSilent

SW2 (snooze button) mutes all audio for 10 minutes while haptics continue — for meetings, calls, or quiet environments.


Hardware

Component List

ComponentPartPurpose
ESP32-S3-MINI-1EspressifMCU — dual core, BLE 5.0, native USB, built-in PCB antenna
MPU-6050InvenSense6-axis IMU — pitch/roll angle sensing
DRV2605LTexas InstrumentsHaptic driver — 123 built-in LRA waveforms
Z10SC2B LRAJinlong10mm linear resonant actuator — sharp haptic taps
MAX98357AMaximI2S Class D amplifier — voice clips + tones
CMS-2009-SMT-TRCUI Devices20mm 8Ω 0.5W speaker
MCP73831MicrochipLiPo charging IC — 100mA from USB-C
AP2112K-3.3Diodes Inc600mA LDO regulator — 3.3V rail
USBLC6-2SC6STMicroUSB ESD protection on D+/D- lines
350mAh LiPoGenericBattery — 12–15 hour runtime
USB-C (HRO TYPE-C-31-M-12)HROCharging + programming port, both-orientation USB 2.0

Pin Assignment

SignalGPIONotes
I2C SDA8MPU-6050 + DRV2605L shared (GPIO21/22 do not exist on ESP32-S3)
I2C SCL9MPU-6050 + DRV2605L shared
I2S BCLK26MAX98357A
I2S WS25MAX98357A
I2S DOUT27MAX98357A
SW1 BOOT/CAL0Recalibrate / ESP32 boot
SW2 SNOOZE3510-min snooze / mute toggle
SW3 RESETEN pinHardware reset button
VBAT SENSE34ADC — battery voltage monitor
AUDIO MUTE48MAX98357A SD_MODE
USB D+20Via USBLC6-2SC6 ESD protection
USB D-19Via USBLC6-2SC6 ESD protection

Architecture

Three FreeRTOS tasks (V1) + Two new tasks (V2)

TaskCorePriorityPurpose
task_read_imu05IMU read every 100ms with light sleep
task_posture_fsm04State machine — unchanged from V1
task_audio13Audio + haptic dispatch
task_buttons02Debounced button events
task_power01Battery monitor every 60s

New modules vs V1

text
NEW:      haptic.c    — DRV2605L I2C driver, waveform playback (non-blocking)
NEW:      power.c     — battery ADC, low-battery warning, deep sleep entry
NEW:      buttons.c   — debounced GPIO, short/long press detection

UNCHANGED: mpu6050.c  — I2C driver, atan2 angle math, EMA filter
UNCHANGED: posture_fsm.c — state machine logic (only alert commands change)
MODIFIED:  audio.c    — adds haptic command dispatch alongside audio
MODIFIED:  main.c     — init order adds haptic, power, buttons

Power System

text
USB-C (5V) → Polyfuse → MCP73831 LiPo charger → 350mAh LiPo
                                                        ↓
                                                  AP2112K LDO
                                                        ↓
                                                    3.3V rail → all ICs

Battery life estimate:

  • Active draw (IMU reading, no alerts): ~6mA average with light sleep
  • 350mAh ÷ 6mA = ~58 hours theoretical
  • Real world (audio bursts, haptic, occasional BLE): 12–15 hours

Low battery handling:

  • < 3.5V → warning beep + haptic
  • < 3.3V → shutdown tone + deep sleep

Form Factor

text
Assembled dimensions:
  PCB alone:        45 × 35 × 1.6mm
  PCB + battery:    45 × 35 × 8mm
  With clip:        45 × 38 × 16mm   ← final wearable size

Comparable to a car key fob.
Clips onto shirt collar, bra strap, or epaulette.
LRA motor faces the body for best haptic transmission.
Speaker grille faces outward.
USB-C and buttons accessible on edges.

Development Phases

PhaseDescriptionStatusHardware
7Haptic validation on breadboard (DRV2605L + LRA)⏳ Next📦 Parts ordered
8Speaker swap validation (20mm 8Ω 1W)⏳ Next📦 Parts ordered
9Battery system validation (MCP73831 + LiPo)⏳ Pending📦 Parts ordered
10PCB V2 schematic + layout + fabrication (JLCPCB)🔄 PCB complete — awaiting orderSchematic ✅ ERC clean. Layout ✅ fully routed. DRC ✅ 0 errors, 0 unconnected, 2 cosmetic silk warnings. Gerbers ✅ hardware/pcb/v2/. JLCPCB order ⏳ pending.
11Full integration + enclosure (3D printed clip)⏳ Pending🛒 Order after Phase 10

Branch Structure

text
main                        ← V1 MVP (public, breadboard, complete)
  └── release/v2-product    ← this branch — all V2 work
        └── feature/haptics
        └── feature/speaker-swap
        └── feature/power-system
        └── feature/pcb-v2
        └── feature/enclosure

PCB Layout — Complete

Design decisions locked

  • 2-layer board — F.Cu for all signal and power traces, B.Cu solid GND copper pour
  • Trace widths (IPC-2221 verified, 1oz copper, 10°C rise) — VBUS/VBUS_FUSED: 0.4mm, +3V3/VBAT/audio/motor: 0.3mm, all signals: 0.2mm
  • Net classes — HighCurrent (0.4mm), Power (0.3mm), Audio (0.3mm), Motor (0.3mm), USB_Diff (0.2mm impedance-controlled), Default (0.2mm)
  • Via spec — 0.8mm outer / 0.4mm drill (JLCPCB standard rule compliant)
  • Board size — ~47.6 × 28.3mm (fits 45×35×16mm wearable form factor with battery)
  • Connectors — J1: USB-C (HRO TYPE-C-31-M-12), J2: JST PH 2mm (battery), J3: Molex PicoBlade 53261-0271 (LRA haptic), LS1: Molex PicoBlade 53261-0271 (speaker)

Routing status

Net groupConnectionsStatus
GND~72✅ B.Cu + F.Cu copper pour, stitching vias placed
+3V323✅ Routed
VBAT7✅ Routed
VBUS / VBUS_FUSED4✅ Routed
I2C (SDA/SCL)6✅ Routed
USB_DP / USB_DM8✅ Routed
I2S (BCLK/WS/DOUT)3✅ Routed
Signals + buttons~31✅ Routed

Final DRC (2026-06-09): 0 errors, 0 unconnected, 2 cosmetic silk warnings (U1 silkscreen clips board edge — JLCPCB trims automatically).

File locations

text
hardware/
├── kicad/posture_tracker_v2/
│   └── posture_tracker_v2/    ← KiCad source (schematic + PCB + project files)
│       └── reports/           ← DRC.rpt, ERC.rpt
├── schematics/                ← Exported schematic PDF (posture_tracker_v2_v2.pdf)
├── pcb/
│   └── v2/
│       ├── gerbers/           ← 12 Gerber + drill files (canonical fab outputs)
│       └── posture_tracker_v2_gerbers.zip  ← upload this to JLCPCB
├── bom/                       ← Bill of materials
└── datasheets/                ← Component datasheets

Hardware Visuals

PCB — 3D View

PCB V2 3D view

PCB — Top Layer

PCB V2 top layer

PCB — Bottom Layer

PCB V2 bottom layer

PCB — Combined

PCB V2 combined

Schematic

V2 Schematic

Full schematic PDF: hardware/schematics/posture_tracker_v2_v2.pdf

PCB layer PDFs (vector): Top · Bottom · Combined


Reference Docs

Parts

52
QtyValueFootprintReferences
10100nCapacitor_SMD:C_0402_1005MetricC1, C2, C3, C4, C8, C9, C10, C11, C12, C13
510kResistor_SMD:R_0402_1005MetricR3, R7, R8, R11, R12
310uCapacitor_SMD:C_0805_2012MetricC6, C7, C15
2100kResistor_SMD:R_0402_1005MetricR9, R10
21kResistor_SMD:R_0402_1005MetricR6, R13
2220pCapacitor_SMD:C_0805_2012MetricC18, C19
24.7kResistor_SMD:R_0402_1005MetricR1, R2
25.1kResistor_SMD:R_0402_1005MetricR4, R5
2FerriteBead_SmallInductor_SMD:L_0402_1005MetricFB1, FB2
2Molex_PicoBlade_53047-0210Connector_Molex:Molex_PicoBlade_53047-0210_1x02_P1.25mm_VerticalLS1, M1
11MResistor_SMD:R_0402_1005MetricR14
11uCapacitor_SMD:C_0402_1005MetricC16
122uCapacitor_SMD:C_0805_2012MetricC5
14.7uCapacitor_SMD:C_0402_1005MetricC17
147uCapacitor_SMD:C_0805_2012MetricC14
1500mAFuse:Fuse_0805_2012MetricF1
1AP2112K-3.3TRG1Package_TO_SOT_SMD:SOT-23-5U6
1BTN_CALSKRPABE010:SW_SKRPABE010SW1
1BTN_SNOOZESKRPABE010:SW_SKRPABE010SW2
1DRV2605LDGSPackage_SO:TSSOP-10_3x3mm_P0.5mmU3
1ESP32-S3-MINI-1RF_Module:ESP32-S2-MINI-1U1
1HRO TYPE-C-31-M-12Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1
1JST-PH-2Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_HorizontalJ2
1LED_GreenLED_SMD:LED_0805_2012MetricLED1
1LED_YellowLED_SMD:LED_0805_2012MetricLED2
1MAX98357APackage_DFN_QFN:TQFN-16-1EP_3x3mm_P0.5mm_EP1.23x1.23mmU4
1MCP73831T-2ACI/OTPackage_TO_SOT_SMD:SOT-23-5U5
1MPU-6050Sensor_Motion:InvenSense_QFN-24_4x4mm_P0.5mmU2
1RESETSKRPABE010:SW_SKRPABE010SW3
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U7

Questions

How big is the Posture tracker v2 PCB?

It measures 47.9 × 28.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Posture tracker v2 use?

52 parts, built around the ESP32-S3-MINI-1-N8, DRV2605LDGS, AP2112K-3.3TRG1 and MCP73831T-2ACI/OT-HXY. 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 Posture tracker v2 KiCad files?

From the kiranj26/Posture-Tracker-Using-ESP32 repository on GitHub, at the commit this page was made from: the board is hardware/kicad/posture_tracker_v2/posture_tracker_v2/posture_tracker_v2.kicad_pcb and its schematic hardware/kicad/posture_tracker_v2/posture_tracker_v2/posture_tracker_v2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Posture tracker v2 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

  • 2 layers50 × 50 mmTiny2048, the printed circuit board in 3D

    Tiny2048

    thip/Tiny2048

    An RGB LED version of the game 2048

    54 parts4
  • 4 layers80 × 60 mmBardsAssistant, the printed circuit board in 3D

    BardsAssistant

    jaylingelbach/BardAssistant

    A tiny “Vicious Mockery” companion built on an ESP32-S3 DevKitM-1.

    77 parts
  • 4 layers68 × 46 mmUtter, the printed circuit board in 3D

    Utter

    IFAKA/utter

    Utter: covert silent-speech text input from surface EMG (open-source ALS voice)

    107 parts
  • 4 layers42.3 × 47 mmAnachron, the printed circuit board in 3D

    Anachron

    KavEn06/Anachron

    Digital Pocketwatch

    67 parts
  • 2 layers71.8 × 62.2 mmAir quality pcb v7, the printed circuit board in 3D

    Air quality pcb v7

    NilsEngelbach/air-quality-pcb

    Seventh iteration: ESP8266 → ESP32-C3 (native USB, no UART bridge), fixes from the v6 design review, right-angle switches with longer actuators, a STEMMA QT port for optional sensors, and charge-status sensing.

    85 parts
  • 2 layers64.3 × 24.5 mmIntercom, the printed circuit board in 3D

    Intercom

    tylerreckart/arthur

    A silicon assistant.

    62 parts
  • 2 layers87.9 × 87.5 mmCreative controller, the printed circuit board in 3D

    Creative controller

    ZMGID/grokbot-home

    Grok Bot account migration home (secrets encrypted)

    59 parts
  • 4 layers85.6 × 54 mmSYCL Badge 2024, the printed circuit board in 3D

    SYCL Badge 2024

    ZigEmbeddedGroup/sycl-badge

    The badge for the SYCL conference! https://zigembeddedgroup.github.io/sycl-badge/

    92 parts39