No description
  • C 96.8%
  • CMake 1.7%
  • Dockerfile 1.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-28 22:36:22 +02:00
.devcontainer Initial commit: serial interface with pwm for vib 2026-05-12 14:21:41 +02:00
main Add frequncy via serial 2026-07-09 15:52:51 +02:00
models update case 2026-07-28 22:36:22 +02:00
schematics update case 2026-07-28 22:36:22 +02:00
.clangd Initial commit: serial interface with pwm for vib 2026-05-12 14:21:41 +02:00
.gitignore exclude .vscode 2026-05-12 17:40:36 +02:00
CMakeLists.txt Initial commit: serial interface with pwm for vib 2026-05-12 14:21:41 +02:00
MCU.jpg refactoring and tasks 2026-05-12 17:38:55 +02:00
README.md add size of shockers 2026-07-02 18:16:20 +02:00
Session 10.sal refactoring and tasks 2026-05-12 17:38:55 +02:00

OpenCaixianlin

A custom shocker compatible with OpenShock based on a Caixianlin shocker.

What is this

OpenCaixianlin is a small custom esp32 based shocker which can be build yourself. Required parts are an Caixianlin shocker (from which we salvage the transformer, vibration motor, beeper and battery), some transistors and an SeedStudio XIAO ESP32C3.

This repo contains a basic testing firmware, 3d printing files and schematics (soon). The actual firmware lives at this repo

Comparison with Caixianlin + OpenShock Hub

Plus

  • Bluetooth Low Energy support for controling shocker without internet
  • Smaller footprint of 47.4mm x 24.1mm x ~20/30mm compared to 59.5mm x 36.1mm x 39.8mm (l x w x h; measured on 02.07.2026, subject to change)
  • Hub software runs directly on the shocker hardware, therefore no extra hub is needed
  • Insecure 433MHz Protocol is skipped, providing security against replay attacks or id enumeration
  • More precise control of shocker: Duration has an accuracy of ~20ms, different battery levels provide the same shock
  • Easy switching between e. g. FlatShocker operation and tense unit operation via magnetically removable bottom covers
  • More comfort during wear with FlatShocker bottom

Minus

  • Less battery life due to esp getting drived by the same battery
  • More expensive shocker (Adds around ~10€ in parts to a 6€ shocker instead of once 10€ for a hub which you could use for multiple shockers)
  • No support for default remote (however I'm planning to make a hardware remote based on BLE)
  • No more water resistance

Build guide

We have yet to build a first functional prototype. Therefore a build guide cannot be provided. However we do have a hijacked Caixianlin which runs our firmware and are currently working on putting the required hardware in the case

Pinout

  • GPIO2/D0: Power button (used for ble pairing and possible more in future)
  • GPIO3/D1: Transformer (Shocking part)
  • GPIO4/D2: Beeper (Annoying part, may be able to play songs in future)
  • GPIO5/D3: White LED (optional)
  • GPIO6/D4: Green LED (optional)
  • GPIO7/D5: Vibration motor (Brrrrrr)

Usage guide

ToDo. Controlled via ShockAlarm

Measured from of Caixianlin

Vibrate

PWM at 85Hz from 14% to 100%

Shock

PWM at 666hz from 4% to 30%

Dev cable

Orange - Power button Black - GND Red - VCC (3.7V; or 3.3, whatever you want lol) Grey - Green LED Yellow - White LEDs Purple - Beep Green - Shocker White - Vib