hrithik18k/open-ring-flex
A flexible wearable PCB integrating inductive battery charging, BLE control with SPI flash and 32 MHz crystal, SAM L10 capacitive touch/wear sensing, haptic MOSFET drive with a large capacitor bank, RF antenna matching, and SWD programming/test connectors.
- Version
- 1.0.4
- License
- CC-BY-NC-SA-4.0
- Stars
- 0
README.md
# Open Ring — JLCPCB flex adaptation
Based on [stawiski/open-ring](https://github.com/stawiski/open-ring), hardware revision e790915a3ad39254b58bed81f724e71705a08345, by Mikolaj Stawiski and Joel Meredith. Modified for tscircuit and JLCPCB sourcing. Hardware/design derivatives remain CC BY-NC-SA 4.0; see LICENSE.
## What it does
Open Ring is a Bluetooth input device. A SAM L10 reads capacitive finger-presence and slider electrodes; a DA14531 sends gestures to a BLE-connected phone/computer. A MOSFET drives an external vibration motor for feedback. The BQ25125 manages an external rechargeable battery and system power. A diode rectifier accepts energy from an external inductive charging coil; the separate charger is not included here. SPI flash stores firmware/data. This is not a heart-rate, oxygen or medical sensing board.
## Scope
This is an enlarged electrical adaptation, not an enclosure-compatible reproduction. Main strip: 106 x 18 mm, with two programming tabs extending 10 mm below it. Every populated component is imported from a JLCPCB catalogue ID. Copper electrodes, solder pads and test pads are fabricated PCB features, not purchased components. Battery, charging coil and vibration motor are external assemblies and are not included in this PCB BOM.
The original six-layer rigid-flex stack contains selective rigid layers and exposed inner-layer assembly regions. This project uses tscircuit's native `material="flex"`, a uniform four-layer 0.22 mm design intent, native keepouts and native routing. It does not encode the original selective stackup. A fabricator must approve the actual laminate, coverlay openings, stiffeners, bend zones, via technology and stack thickness before manufacture. Never bend component/via areas. The selected 0.075 mm trace/space and 0.1/0.2 mm via dimensions require an advanced process; they are not a claim of JLC standard-flex acceptance.
## Component changes
- ATSAML10E16A: WLCSP replaced by QFN32+EP (C2053058); remapped by signal function, EP grounded. Larger package authorized by the user.
- Flash: MX25R2035FZUIL0 (2 Mbit) replaced by MX25R4035FZUIL0 (4 Mbit, C7009757), same signal pinout. Check JEDEC identification, bootloader compatibility and flash capacity configuration in firmware.
- Crystal: 32 MHz / 7 pF / 1612 replaced by ABM11W 32 MHz / 6 pF / 2016 (C5548373). Reconfigure/measure oscillator load and frequency; no firmware change is included.
- Zener uses the BZX884B5V1L automotive suffix; other substitutions retain nominal values with documented BOM identities. RF capacitor tolerance and changed stack/layout require RF tuning.
- W3008 keeps its JLC identity, with a reviewed native three-pad land pattern override and copper keepouts. Retuning and 50-ohm feed verification on the final stack are required.
- Six covered rectangular electrodes preserve the sensor net connections but are a new geometry. They require touch calibration and are not the original interdigitated slider geometry.
## Files and workflow
The schematic is organized into five native pages and 14 titled sections: power and charging, Bluetooth/RF, touch sensing, haptics, and programming/test. See [the sheet guide](docs/SCHEMATIC_LAYOUT.md) and `dist/index/schematic-sheets/` for individual SVG/PNG exports. Edit `source-data/schematic-layout.json` and regenerate with `python scripts/generate-board.py` to adjust schematic placement.
`index.circuit.tsx`: editable board. `imports/`: JLC-generated components. `source-data/original-netlist.json`: extracted reference connectivity. `source-data/adapted-netlist.json`: explicit physical-pin remap. `source-data/bom.json`: per-reference JLC IDs. `docs/HIGH_PRIORITY_BUGS.md`: reproduced tooling bugs and responsible repos.
The saved native routing lives in `source-data/native-routed-paths.json`; `source-data/crystal-paths.json` contains the two top-layer oscillator paths. Use `bunx --no-install tsci build index.circuit.tsx` to build only the intended board.
Run `bun install`, then `bunx --no-install tsci check netlist`, `check schematic-placement`, `check placement`, `check routing-difficulty`, `build`, and `check shorts`. Read the validation report for the actual current results. A rendered picture alone is not a fabrication release.