

SmartSpin2k Panelized
Transform your spin bike into a Smart Trainer!
- Size
- 189.5 × 204.9 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 749
- Nets
- 1,017
- Pads
- 2,918
- Tracks, vias
- 6,759, 1,116
- Pours
- 27
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 28 Aug 2020
- Updated
- 7 Nov 2026
Overview
SmartSpin2k Panelized is an open-source printed circuit board by doudar, from the doudar/SmartSpin2k repository on GitHub, published under the GPL-2.0 licence. It is a 2-layer board of 189.5 × 204.9 mm with 749 parts on 1,017 nets, routed with 6,759 tracks and 1,116 vias.
It is built around the ESP32-WROOM-32D, CP2102-GMR and MAX3232ID, with the TMC2209-LA-T, TPS5430DDA and LM1117-3.3 among its other parts. Its parts include 288 capacitors, 216 resistors, 63 ICs, 54 diodes and 36 connectors. It belongs with the radio and wireless and robots and motor control boards and the ESP32 boards of this library.
Main components
10ESP32-WROOM-32D
-- WiFi Modules ROHSEspressif SystemsWiFi ModulesCP2102-GMR
WQFN-28-EP(5x5)-40℃~+85℃ 1Mbps 20mA 3V~3.6V 80uA Transceiver USB 2.0 WQFN-28-EP(5x5) USB Converters ROHSSilicon LabsUSB ConvertersMAX3232ID
SOIC-16-40℃~+85℃ 2 2 250Kbps 300uA 3V~5.5V Short-Circuit Protection Transceiver Yes ±15kV SOIC-16 RS232 ICs ROHSTexas InstrumentsRS232 ICsTMC2209-LA-T
QFN-28-EP(5x5)-40℃~+125℃ 2 256、8、16、32、64 2A 340mΩ 4.75V~29V 4.75V~29V Bipolar Driver Overcurrent Protection、Short-Circuit Protection、Over temperature protection、Under-voltage lockout、Motor step-out prevention function、Built-in charge pump、Thermal warning STEP/DIR、UART Yes QFN-28-EP(5x5) Stepper Motor Driver ROHSTRINAMIC Motion Control GmbHStepper Motor DriverTPS5430DDA
ESOP-8-40℃~+125℃@(TJ) 1 1.221V~32.04V 3A 4.4mA 5.5V~36V 500kHz Adjustable Buck Buck Built-in No ESOP-8 DC-DC Converters ROHSTexas InstrumentsDC-DC ConvertersLM1117-3.3
SOT-2231 1.3V@(1000mA) 15V 1A 2mA 3.3V Fixed Over Current Protection、Short Circuit Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHShongjiachengUncategorisedSRV05-4
SOT-23-6L-55℃~+150℃ 15V 1pF 4A 5V 5uA 6V 80W ESD Four channels IEC 61000-4-2、IEC 61000-4-5 Unidirectional SOT-23-6L ESD and Surge Protection (TVS/ESD) ROHShongjiachengESD And Surge Protection (TVS/ESD)S8050
SOT-23-55℃~+150℃ 1 NPN 100MHz 100nA 120 25V 300mW 500mA 5V 600mV NPN SOT-23 Bipolar (BJT) ROHShongjiachengBipolar (BJT)10118194-0001LF
SMD-30℃~+80℃ 1 100V 5P Black Female Micro-B USB 2.0 SMD USB Connectors ROHSAmphenolUSB ConnectorsEG1218
插件-20℃~+70℃ 11.6mm 200mA 30V 4mm 7.4mm Black PC Pin Rectangular Columnar SPDT Through Hole Plugin Slide Switches ROHSE-SwitchSlide Switches
README
README.md
You can visit us at Facebook
Did you know there's a SmartSpin2k companion App?
Find the source code here! -> SS2kConfigApp
You can get it from the Apple App Store here:
Or for Android devices:
About
SmartSpin2k is a DIY project that allows you to turn any spin bike into a smart trainer. With SmartSpin2k, you can connect your spin bike to Zwift, TrainerRoad, or other popular training apps. This allows you to control your bike's resistance automatically, track your performance, and compete with other riders online.
SmartSpin2k is easy to build and requires only a few simple tools. The entire build process can be completed in under an hour.
If you are looking for a way to turn your spin bike into a smart trainer, SmartSpin2k is the perfect solution. With its new features and improvements, SmartSpin2k rev 3 is the best version yet.
Getting Started
To get started with SmartSpin2k, you will need the following:
- A spin bike with a resistance control knob.
- A 3D printer.
- A soldering iron and basic soldering skills.
Once you have these materials, you can follow the these instructions to build your own SmartSpin2k. If you'd prefer to buy a pre-assembled kit, we have them for sale at SmartSpin2k.com
Features
SmartSpin2k offers a number of features, including:
- Automatic incline resistance control: SmartSpin2k can automatically control your bike's resistance based on the resistance settings in your training app. This allows you to focus on your workout and not worry about adjusting the resistance yourself.
- SmartSpin2k ERG function is a great way to improve your cycling performance. It allows you to train at a consistent power output, which is essential for improving your speed and endurance. ERG stands for "electronic resistance control." It works by automatically adjusting the resistance on your bike based on the power output you set in your training app.
- Online competition: SmartSpin2k can connect to Zwift, TrainerRoad, and many other cycling apps allowing you to compete with other riders online. This is a great way to stay motivated and push yourself to new heights.
- Do you have a spin bike that doesn't output realistic or accurate power numbers? If so, you're not alone. Many spin bikes have inaccurate power meters that can make it difficult to track your progress and train effectively. With SmartSpin2k you can calibrate the power output of your spin bike.
Conclusion
SmartSpin2k is a great way to turn any spin bike into a smart trainer. With its new features and improvements, SmartSpin2k Rev 3 is the best version yet. If you are looking for a way to improve your indoor cycling experience, SmartSpin2k is the perfect solution.
Documentation
Everything you need to know is in the SS2K Wiki Hardware files and build assets are in SS2k-Hardware.
Contributing
- Install Microsoft Visual Code. https://code.visualstudio.com/
- Install the pioarduino IDE extension (
pioarduino.pioarduino-ide) recommended by this repository in Visual Studio Code. - Install Python https://www.python.org/downloads/
- Install Pre-commit. https://pre-commit.com
py -m pip install pre-commit - Follow any install warnings to add pre-commit to your path.
- Install pre-push git hooks:
pre-commit install --hook-type pre-push - Open this project in the pioarduino IDE.
For command-line builds, use a Python virtual environment and run python -m pip install -r requirements-ci.txt from the repository root to install the same pinned pioarduino Core used by CI. CI uses Python 3.11. If that environment already has the upstream platformio package installed, uninstall it before installing pioarduino; the two packages share Python modules and command names.
pioarduino still uses platformio.ini, the .platformio tool directory, and the pio / platformio commands. Build with pio run -e release (classic ESP32) or pio run -e S3release (ESP32-S3), and run native tests with pio test -e native. See AGENTS.md for build and validation details.
Important announcement for existing users
If you experience an issue after upgrading firmware, please follow these instructions in the Wiki. Flashing instructions are available HERE.
Licensing
The hardware designs are licensed under the CERN Open Hardware License Version 2 - Permissive license. The software in this project is licensed under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991 license.
Parts
749| Qty | Value | Footprint | References |
|---|---|---|---|
| 63 | 0.1uF | Capacitor_SMD:C_0402_1005Metric | C17, C17, C17, C17, C17, C17, C17, C17, C17, C20, C20, C20, C20, C20, C20, C20 +47 |
| 45 | 10k | Resistor_SMD:R_0402_1005Metric | R22, R22, R22, R22, R22, R22, R22, R22, R22, R23, R23, R23, R23, R23, R23, R23 +29 |
| 36 | 330 | Resistor_SMD:R_0402_1005Metric | R12, R12, R12, R12, R12, R12, R12, R12, R12, R13, R13, R13, R13, R13, R13, R13 +20 |
| 36 | LED_Small | LED_SMD:LED_0603_1608Metric | D1, D1, D1, D1, D1, D1, D1, D1, D1, D2, D2, D2, D2, D2, D2, D2 +20 |
| 27 | 0(5%) | Resistor_SMD:R_0402_1005Metric | R1, R1, R1, R1, R1, R1, R1, R1, R1, R4, R4, R4, R4, R4, R4, R4 +11 |
| 27 | 0.1uF(10%) | Capacitor_SMD:C_0402_1005Metric | C13, C13, C13, C13, C13, C13, C13, C13, C13, C15, C15, C15, C15, C15, C15, C15 +11 |
| 27 | 100nF(50V) | Capacitor_SMD:C_0805_2012Metric | C4, C4, C4, C4, C4, C4, C4, C14, C14, C14, C14, C14, C14, C14, C14, C14 +11 |
| 18 | 100uF(50V) | Capacitor_SMD:CP_Elec_8x10 | C7, C7, C7, C7, C7, C7, C7, C19, C19, C19, C19, C19, C19, C19, C19, C19 +2 |
| 18 | 1uF | Capacitor_SMD:C_0603_1608Metric | C10, C10, C10, C10, C10, C10, C10, C10, C10, C11, C11, C11, C11, C11, C11, C11 +2 |
| 18 | 200 | Resistor_SMD:R_0402_1005Metric | R10, R10, R10, R10, R10, R10, R10, R10, R10, R11, R11, R11, R11, R11, R11, R11 +2 |
| 18 | 80m | Resistor_SMD:R_1206_3216Metric | R15, R15, R15, R15, R15, R15, R15, R15, R15, R16, R16, R16, R16, R16, R16, R16 +2 |
| 18 | B4B-XH-AMLFSN | Connector_JST:JST_XH_B4B-XH-AM_1x04_P2.50mm_Vertical | J1, J1, J1, J1, J1, J1, J1, J1, J1, J2, J2, J2, J2, J2, J2, J2 +2 |
| 18 | D_Schottky | Diode_SMD:D_SMA | D7, D7, D7, D7, D7, D7, D7, D7, D7, D8, D8, D8, D8, D8, D8, D8 +2 |
| 18 | S8050 | Package_TO_SOT_SMD:SOT-23 | Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q1, Q2, Q2, Q2, Q2, Q2, Q2, Q2 +2 |
| 18 | SW_Push | Button_Switch_SMD:SW_Push_SPST_NO_Alps_SKRK | SW1, SW1, SW1, SW1, SW1, SW1, SW1, SW1, SW1, SW2, SW2, SW2, SW2, SW2, SW2, SW2 +2 |
| 9 | 0.01uF | Capacitor_SMD:C_0805_2012Metric | C28, C28, C28, C28, C28, C28, C28, C28, C28 |
| 9 | 1.0uF | Capacitor_SMD:C_0805_2012Metric | C25, C25, C25, C25, C25, C25, C25, C25, C25 |
| 9 | 1.5nF | Capacitor_SMD:C_0805_2012Metric | C31, C31, C31, C31, C31, C31, C31, C31, C31 |
| 9 | 100k | Resistor_SMD:R_0402_1005Metric | R14, R14, R14, R14, R14, R14, R14, R14, R14 |
| 9 | 100nF(10V) | Capacitor_SMD:C_0805_2012Metric | C12, C12, C12, C12, C12, C12, C12, C12, C12 |
| 9 | 100uF | Capacitor_SMD:C_1206_3216Metric | C30, C30, C30, C30, C30, C30, C30, C30, C30 |
| 9 | 10118194-0001LF | digikey-footprints:USB_Micro_B_Female_10118194-0001LF | J4, J4, J4, J4, J4, J4, J4, J4, J4 |
| 9 | 10uF | Capacitor_SMD:C_0603_1608Metric | C32, C32, C32, C32, C32, C32, C32, C32, C32 |
| 9 | 10uF(50V) | Capacitor_SMD:C_0805_2012Metric | C1, C1, C1, C1, C1, C1, C1, C1, C1 |
| 9 | 10uF(50V) | Capacitor_SMD:C_1206_3216Metric | C3, C3, C3, C3, C3, C3, C3, C3, C3 |
| 9 | 150pF | Capacitor_SMD:C_0805_2012Metric | C26, C26, C26, C26, C26, C26, C26, C26, C26 |
| 9 | 1M | Resistor_SMD:R_0402_1005Metric | R2, R2, R2, R2, R2, R2, R2, R2, R2 |
| 9 | 1k | Resistor_SMD:R_0402_1005Metric | R6, R6, R6, R6, R6, R6, R6, R6, R6 |
| 9 | 1uF(50V) | Capacitor_SMD:C_0603_1608Metric | C9, C9, C9, C9, C9, C9, C9, C9, C9 |
| 9 | 2.2uF | Capacitor_SMD:C_0402_1005Metric | C16, C16, C16, C16, C16, C16, C16, C16, C16 |
| 9 | 20k | Resistor_SMD:R_0805_2012Metric | R17, R17, R17, R17, R17, R17, R17, R17, R17 |
| 9 | 22k | Resistor_SMD:R_0402_1005Metric | R18, R18, R18, R18, R18, R18, R18, R18, R18 |
| 9 | 22nF(50V) | Capacitor_SMD:C_0805_2012Metric | C6, C6, C6, C6, C6, C6, C6, C6, C6 |
| 9 | 4.7k | Resistor_SMD:R_0402_1005Metric | R21, R21, R21, R21, R21, R21, R21, R21, R21 |
| 9 | 4.7uF | Capacitor_SMD:C_0805_2012Metric | C24, C24, C24, C24, C24, C24, C24, C24, C24 |
| 9 | 4.7uF(50V) | Capacitor_SMD:C_1206_3216Metric | C18, C18, C18, C18, C18, C18, C18, C18, C18 |
| 9 | 4.7uF(6V3) | Capacitor_SMD:C_0805_2012Metric | C8, C8, C8, C8, C8, C8, C8, C8, C8 |
| 9 | 5.9k | Resistor_SMD:R_0603_1608Metric | R20, R20, R20, R20, R20, R20, R20, R20, R20 |
| 9 | 549 | Resistor_SMD:R_0402_1005Metric | R19, R19, R19, R19, R19, R19, R19, R19, R19 |
| 9 | B8B-XH-A_LFSN | Connector_JST:JST_XH_B8B-XH-AM_1x08_P2.50mm_Vertical | J3, J3, J3, J3, J3, J3, J3, J3, J3 |
| 9 | EG1218 | Button_Switch_SMD:SW_SPDT_CK-JS102011SAQN | S1, S1, S1, S1, S1, S1, S1, S1, S1 |
| 9 | ESP32-WROOM-32D | RF_Module:ESP32-WROOM-32 | U1, U1, U1, U1, U1, U1, U1, U1, U1 |
| 9 | INTERFACE-CP2102-GMR(QFN28) | Package_DFN_QFN:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mm | U5, U5, U5, U5, U5, U5, U5, U5, U5 |
| 9 | LM1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U6, U6, U6, U6, U6, U6, U6, U6, U6 |
| 9 | LOGO | IEEE_Logo:SS2K_QR_Code_25x25mm | G***, G***, G***, G***, G***, G***, G***, G***, G*** |
| 9 | LOGO | IEEE_Logo:SmartSpin_ScreenPrint_One_25x25mm | G***, G***, G***, G***, G***, G***, G***, G***, G*** |
| 9 | L_Iron | Inductor_SMD:L_12x12mm_H8mm | L1, L1, L1, L1, L1, L1, L1, L1, L1 |
| 9 | MAX3232 | MAX3232:MAX3232IPWR | U3, U3, U3, U3, U3, U3, U3, U3, U3 |
| 9 | SRV05-4 | Package_TO_SOT_SMD:SOT-23-6 | U7, U7, U7, U7, U7, U7, U7, U7, U7 |
| 9 | TMC2209-LA-T | Package_DFN_QFN:QFN-28-1EP_5x5mm_P0.5mm_EP3.75x3.75mm | U2, U2, U2, U2, U2, U2, U2, U2, U2 |
| 9 | TPS5430DDA | Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.514x3.2mm | U4, U4, U4, U4, U4, U4, U4, U4, U4 |
The 729 most common of 749 parts.
Questions
How big is the SmartSpin2k Panelized PCB?
It measures 189.5 × 204.9 mm and has 2 copper layers, 1.6 mm thick.
What parts does the SmartSpin2k Panelized use?
749 parts, built around the ESP32-WROOM-32D, CP2102-GMR, MAX3232ID and TMC2209-LA-T. 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 SmartSpin2k Panelized KiCad files?
From the doudar/SmartSpin2k repository on GitHub, at the commit this page was made from: the board is Hardware/V3 - Integrated PCB/PCB/SS2K_KiCad_Files/SmartSpin2k_Panelized/SmartSpin2k_Panelized.kicad_pcb and its schematic Hardware/V3 - Integrated PCB/PCB/SS2K_KiCad_Files/SmartSpin2k.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the SmartSpin2k Panelized design in my own project?
Its repository publishes it under the GPL-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
More from doudar/SmartSpin2k
1- 2 layers57.2 × 60.3 mm

Similar boards
- 2 layers67.1 × 88.4 mm

DE429 001 INSTALL
Purdue-Northwest-Vibration-Anaylsis/Purdue-Northwest-Vibration-Analysis
Vibration analysis senior design project for purdue northwest.
48 parts2 - 4 layers317.5 × 228.6 mm

- 4 layers50 × 75.2 mm

RpiFly v3
r3dpath/RpiFly_Hardware
While most of the functionality here has been tested to work theres certainally some marginal design decisions, just beware.
108 parts1 - 2 layers290 × 100 mm

ESP32-Wall Clock
SkullKill/ESP32-Wall-Clock-PCB
ESP32 based 30cm Wall Mounted Clock. WiFi, NTP, SNMP, web interface, MicroUsb, Type-C, HG3613 Retrofit
207 parts3GPL-3.0 - 2 layers60 × 60 mm

SolarpowerPCB
icl-rocketry/ICARUS
Imperial College london rocketry Attempts to be Resourceful by Using Solar power. A CanSat for the Mach-22 Competition
142 parts - 4 layers64 × 77 mm

OBSPro
FabianSchwartau/OBSPro
Version of the OpenBikeSensor hardware optimized for PCBA
131 parts3LGPL-2.1 - 2 layers38.7 × 50.6 mm

- 4 layers89.8 × 92.5 mm
