Skip to the content
PCBKitNew board
4 layers46 × 86.4 mmOpenCycle, the printed circuit board in 3D

Everything is generated from design.py — do not hand-edit the board and then regenerate, you will lose the edit. If you do route by hand in KiCad, stop using the pipeline for that board and say so in docs/DECISIONS.md.

Size
46 × 86.4 mm
Copper layers
4
Thickness
1 mm
Parts
79
Nets
55
Pads
434
Tracks, vias
754, 399
Pours
8
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
30 Sep 2026
Updated
30 Sep 2026

Overview

OpenCycle is an open-source printed circuit board by Vishvak365, from the Vishvak365/OpenCycle repository on GitHub. It is a 4-layer board of 46 × 86.4 mm with 79 parts on 55 nets, routed with 754 tracks and 399 vias.

It is built around the BL652-SA-01-T/R, ESP32-S3-WROOM-1-N16R8 and MAX-M10S-00B, with the BMP581, LTR-303ALS-01 and MAX98357AETE+T among its other parts. Its parts include 25 resistors, 20 capacitors, 8 ICs, 5 connectors and 5 switches. It belongs with the ESP32 boards of this library.

Main components

12

README

pcb/README.md

OpenCycle main board v0.2 — status

Ready to order a first prototype run (5 boards): routed, DRC clean, schematic generated and netlist-matched, parts sourced, fab files exported. Not yet built or tested — treat the first run as a prototype and follow ../instructions/05-bring-up.md.

WhatWhere
Boardopencycle.kicad_pcb (+ .kicad_pro, .kicad_dru, fp-lib-table, sym-lib-table: opens in KiCad 7+)
Schematicopencycle.kicad_sch, PDF in fab/opencycle_schematic.pdf
Gerbers + drillfab/opencycle_v0.2_gerbers.zip (upload to JLCPCB as-is)
Assemblyfab/bom_jlcpcb.csv, fab/cpl_jlcpcb.csv, fab/assembly_front.pdf, fab/assembly_back.pdf
Order listfab/bom_distributors.csv and ../docs/sourcing/bom-v0.2.md
Checksdrc_report.txt, erc_report.txt, check_place.py, check_netlist.py, ../cad/board_fit.py

Everything is generated from design.py — do not hand-edit the board and then regenerate, you will lose the edit. If you do route by hand in KiCad, stop using the pipeline for that board and say so in docs/DECISIONS.md.

Verified

  • Pinouts of every IC/module against the manufacturer datasheet (see the header of design.py for the list and docs/sourcing/part-specs.md for details). Two errors in earlier notes were found and fixed: the BMP581 pin order and MAX-M10S pin 15.
  • Land patterns drawn from datasheet drawings for the BMP581 and the Taoglas 12 mm patch; all other footprints from the KiCad 7 library.
  • Mechanical fit of every real part (datasheet heights) against the enclosure, display, folded FFC, battery and speaker.
  • DRC 0 errors / 0 unconnected; ERC 0 errors; schematic netlist == board netlist.

Not verified (look at these before ordering / during bring-up)

  1. RF performance of all three antennas (GPS patch ground is 46 mm wide and cut by the radio keep-outs; Taoglas characterised it on 50 × 50 mm). Expect to tune firmware (GPS LNA gain) and possibly move to a pin-fed patch later.
  2. Battery polarity of the Adafruit lead vs. J2 (pin 1 −, pin 2 +). Q2 blocks a reversed cell, but measure before plugging in.
  3. JLCPCB rotation offsets in cpl_jlcpcb.csv — JLC's preview shows each part; fix any that are rotated (common for SOT-23, QFN and connectors) in their tool before paying.
  4. RF_IN impedance: 0.2 mm on the 1.0 mm JLC04101H-3313 stack-up is close to 50 Ω; confirm with the JLC impedance calculator or ask for impedance control.
  5. Backlight brightness with 33 Ω ballasts: ≤ 45 mA per LED in the worst case (4.2 V, Vf 2.7 V), ~21 mA typical, so full brightness is only reached on a full battery. Don't lower the ballasts unless firmware caps the PWM duty from VBAT_SENSE: at 22 Ω the worst case is 68 mA per LED, above the 50 mA per-LED limit.
  6. Charging while running: there is no USB power path — the system always runs from VBAT and the MCP73831 charges the cell and feeds the load in parallel (the same approach as Adafruit Feather boards). While the device is on and plugged in, the charger may not terminate (it holds 4.20 V). Fine for a few hours of charging; a power-path charger (e.g. BQ24072) is the v0.3 upgrade if this matters.
  7. Firmware: nothing is written yet; the pin map is in docs/HARDWARE.md.

Parts

79
QtyValueFootprintReferences
9100nFCapacitor_SMD:C_0402_1005MetricC2, C5, C7, C8, C10, C13, C17, C19, C20
610kResistor_SMD:R_0402_1005MetricR1, R21, R22, R23, R24, R25
6FiducialFiducial:Fiducial_0.75mm_Mask1.5mmFID1, FID2, FID3, FID4, FID5, FID6
510uFCapacitor_SMD:C_0603_1608MetricC4, C6, C9, C11, C18
4100kResistor_SMD:R_0402_1005MetricR10, R18, R19, R20
433RResistor_SMD:R_0603_1608MetricR5, R6, R7, R8
4MountingHole_2.2mm_M2_Pad_ViaMountingHole:MountingHole_2.2mm_M2_Pad_ViaH1, H2, H3, H4
34.7uFCapacitor_SMD:C_0603_1608MetricC14, C15, C16
3PTS810Button_Switch_SMD:SW_SPST_PTS810SW1, SW2, SW3
20RResistor_SMD:R_0402_1005MetricR13, R14
21MResistor_SMD:R_0402_1005MetricR16, R17
222uFCapacitor_SMD:C_0805_2012MetricC1, C12
24.7kResistor_SMD:R_0402_1005MetricR3, R4
25.1kResistor_SMD:R_0402_1005MetricR11, R12
2SKRTLAE010Button_Switch_SMD:SW_Push_1P1T-MP_NO_Horizontal_Alps_SKRTLAE010SW4, SW5
1100RResistor_SMD:R_0402_1005MetricR9
11kResistor_SMD:R_0402_1005MetricR2
11uFCapacitor_SMD:C_0402_1005MetricC3
12kResistor_SMD:R_0402_1005MetricR15
1AP7361C-33EPackage_TO_SOT_SMD:SOT-223-3_TabPin2U5
1BL652-SA-01RF_Module:Laird_BL652U2
1BMP581OpenCycle:Bosch_LGA-10_2x2mm_P0.5mm_BMP581U8
1CMS-151125-078L100OpenCycle:SpeakerPads_2.6mmLS1
1ConsoleConnector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_VerticalJ5
1DMG2302UPackage_TO_SOT_SMD:SOT-23Q1
1DMG2305UXPackage_TO_SOT_SMD:SOT-23Q2
1DSGP.1575.12.4.A.02OpenCycle:Taoglas_DSGP.1575.12.4.A.02_12x12mmAE1
1ESP32-S3-WROOM-1-N16R8RF_Module:ESP32-S3-WROOM-1U1
1FH12-40S-0.5SH(55)Connector_FFC-FPC:Hirose_FH12-40S-0.5SH_1x40-1MP_P0.50mm_HorizontalJ3
1GreenLED_SMD:LED_0603_1608MetricD1
1LTR-303ALS-01OptoDevice:Lite-On_LTR-303ALS-01U4
1MAX-M10SRF_GPS:ublox_MAXU3
1MAX98357APackage_DFN_QFN:TQFN-16-1EP_3x3mm_P0.5mm_EP1.23x1.23mmU7
1MCP73831-2Package_TO_SOT_SMD:SOT-23-5U6
1S2B-PH-SM4-TBConnector_JST:JST_PH_S2B-PH-SM4-TB_1x02-1MP_P2.00mm_HorizontalJ2
1SWD (BL652)Connector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_VerticalJ4
1USB4105-GF-AConnector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ1
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6D2

Questions

How big is the OpenCycle PCB?

It measures 46 × 86.4 mm and has 4 copper layers, 1 mm thick.

What parts does the OpenCycle use?

79 parts, built around the BL652-SA-01-T/R, ESP32-S3-WROOM-1-N16R8, MAX-M10S-00B and BMP581. 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 OpenCycle KiCad files?

From the Vishvak365/OpenCycle repository on GitHub, at the commit this page was made from: the board is pcb/opencycle.kicad_pcb and its schematic pcb/opencycle.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the OpenCycle design in my own project?

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

Similar boards

  • 4 layers96 × 70 mmTradewind, the printed circuit board in 3D

    Tradewind

    binaryBeachLLC/tradewind

    Tradewind TW-1: solar LoRaWAN field sensor. KiCad 9 board, CadQuery enclosure, RUI3 firmware, simulations, test data, report and datasheet.

    85 parts
  • 4 layers107 × 17 mmE0001 fader driver, the printed circuit board in 3D

    E0001 fader driver

    Karpuls/E0001-fader-driver-board

    Motorized fader driver board (ALPS RSA0N11M9A0J clone): STM32C051, DRV8210P, touch sense, I2C

    53 parts
  • 4 layers60 × 120 mmTheoros, the printed circuit board in 3D

    Theoros

    Majorwhiskey/gps-lora

    Theoros is a USB-C GPS logger and LoRa tracker built on the ESP32-S3. It logs 1 Hz u-blox M10 fixes to microSD, shows status on an OLED and sends AES-128-CCM encrypted position over 868 MHz LoRa.

    88 partsCERN-OHL-P-2.0
  • 4 layers49 × 80 mm70MHz Soil Sensor, the printed circuit board in 3D

    70MHz Soil Sensor

    jhns-de/70MHz-Soil-Sensor

    Soil moisture and electrical conductivity (EC) sensor based on 70 MHz impedance measurement, developed as part of my master’s thesis.

    130 parts2
  • 6 layers160 × 100 mmAwohali, the printed circuit board in 3D

    Awohali

    DeepSpace00/Awohali

    An open soure GNSS station for flash flood nowcasting

    556 parts
  • 2 layers30 × 30 mmReCamera Gimbal, the printed circuit board in 3D

    ReCamera Gimbal

    Seeed-Studio/OSHW-reCamera-Series

    reCamera is a series of open-source AI cameras.

    123 parts495Apache-2.0
  • 2 layers48.2 × 20.3 mmPmod 100base tx, the printed circuit board in 3D

    Pmod 100base tx

    ciniml/fpga_samples

    FPGA samples

    48 parts31BSL-1.0
  • 4 layers260 × 110 mmPandore, the printed circuit board in 3D

    Pandore

    filliformes/pandore

    pandore is an open-source digital audio instrument protyping platform based on the LattePanda Mu.

    804 parts2