Skip to the content
2 layers191.5 × 76 mmPcb project, the printed circuit board in 3D

4 channel EStim box inspired by the mk312bt, with Lua scripting support

Size
191.5 × 76 mm
Copper layers
2
Thickness
1.6 mm
Parts
337
Nets
332
Pads
1,194
Tracks, vias
4,571, 795
Pours
26
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
16 Nov 2021
Updated
20 Oct 2026

Overview

Pcb project is an open-source printed circuit board by CrashOverride85, from the CrashOverride85/zc95 repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 191.5 × 76 mm with 337 parts on 332 nets, routed with 4,571 tracks and 795 vias.

It is built around the MAX3232EEAE+T, LM324 and TCA9534PW, with the MCP4728-E/UN, USBLC6-2P6 and SN74LVC1G3157DCKR among its other parts. Its parts include 157 resistors, 72 capacitors, 28 ICs, 26 diodes and 19 transistors. It belongs with the RP2040 boards of this library.

Main components

12

README

README.md

ZC95

Note: This repo has submodules, so if cloning, it's best to use the recursive option.

Introduction

The ZC95 is a DIY four channel EStim box with similar output design and feel to the MK312-BT (which in turn is a clone of the ET-312B).

zc95

The box is primarily intended for standalone use (i.e. not used whilst connected to phone/laptop/tablet), but can be controlled remotely via a Python GUI, and run Lua scripts that have been uploaded to it over serial or WiFi.

Main features:

  • 4 isolated channels
  • Audio input - line level for estim tracks or microphone input (selectable via menu)
  • Many inbuilt patterns - around 14, not counting audio and more esoteric stuff
  • Custom patterns can be written in Lua
  • Two stereo 3.5mm trigger input sockets, allowing for up to 4 external inputs (e.g. remote buttons, foot pedals, etc.)
  • Support for many BLE remote/camera buttons, e.g. to trigger output when the button is pressed
  • Remote control over WiFi or serial using a python app
  • Allows limited control of a certain type of 433MHz shock collar
  • Somewhat experimental BLE steaming - allows for per-pulse level control from laptop or other device, with an example in python
  • An accessory port with 3 output lines that can be controlled from Lua scripts, to allow interacting with other devices

Technical details:

  • Has been designed with the JLC PCB assembly service in mind, and is mostly an SMD design with a few though hole parts
  • Uses 2x Raspberry Picos
  • Firmware is open source and mostly C++, and makes use of many 3rd party libraries
  • 26650 cell for power
  • KiCad project files included in repo, not just gerbers
  • Audio input includes microphone preamp that can be toggled via menu, along with variable gain
  • Consists of 3 PCBs:
    • Front panel - no traces, just text / mounting holes
    • Front panel controls - 4x POTs and associated ADC, 1x rotary encoder and 6 serial RGB LEDs. Designed for production using the SMT assembly service at JLCPCB, with a handful of extra through hole parts also requiring hand soldering.
    • Main board - power supply / charging, pattern generation, button input, output signal generation, audio input
  • Case is either an off the shelf Hammond 1598DBK (larger), or a 3D printed case (step/stl files provided)

Build guide

Schematics

Gerbers

Compiled firmware

Operation notes

Pattern guide

Lua scripting notes

Notes on building source

Credits

Miscellaneous

History

The ZC95 is very heavily inspired by the MK312-BT, which is a reversed engineered version of the ET-312. The original repo for that project is long gone, but there is a fork here.

The ZC95 mk1 was made public in late 2021, and had a similar form factor to the MK312. That version has been built successfully by many.

The ZC95 mk1 had the output stage on a separate PCB. It's no longer part of the zc95 build, but could still be built and used to add 4 channel estim output to an Arduino (with notes for & tested with an ESP32). The PCB / BoM / build notes for it are here.

MKI vs. MKII

These are the main changes from the MKI to MKII:

  • Much smaller - the mainboard is less than half the size
  • Output, Audio and main board are now combined
  • USB-C charger input instead of 15v barrel jack
  • 26650 cell instead of 12v SLA battery (similar capacity)
  • "Aux" socket swapped for separate "Serial" and "Audio" sockets
  • Output sockets changed from 2.5mm to 3.5mm
  • Serial selectable (via jumpers) between 3.3v TTL and RS232
  • Display no longer briefly flashes white on power on
  • Removed: 12v output on accessory port

Support, feedback, etc.

The ZC95 project is provided 'as is' without warranty of any kind, either express or implied. The project is provided for your use at your own risk.

Having said that, if you run into difficulties or have questions, the two best places to try are:

Other projects

Other related projects that are worth checking out:

TODO

Firmware

  • Triphase support from Lua
  • Allow Lua scripts to interact with shock collars
  • Combo pattern? Having, e.g., waves on channels 1+2 plus something like TENS on 3+4 would be good
  • Save pattern settings on exit?
  • Disable when plugged in / switch to charging screen (maybe a setting in the menu to disable)
  • Accessory port doesn't do much - just 3 output lines. There's a serial interface there too, which could be exposed in the Lua environment

Hardware

  • Improved 3D printed case?

Known issues

  • Will charge faster if switched on when plugged in, and not switched off for at least 10 seconds (or just left on)
  • Sometimes when finished charging (battery icon showing solid green), the battery percentage will only show ~95% despite being fully charged. Should be fixed in a future firmware version.

Parts

337
QtyValueFootprintReferences
4510kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R11, R15, R101, R103, R105, R109, R114, R117, R125, R128, R129, R132, R136, R137, R146 +29
42100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR12, R13, R37, R39, R104, R108, R111, R112, R116, R118, R119, R122, R142, R144, R147, R150 +26
25100RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR14, R16, R19, R20, R21, R22, R27, R28, R29, R30, R110, R121, R124, R127, R134, R135 +9
20100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC3, C4, C10, C12, C13, C15, C16, C18, C20, C28, C30, C31, C34, C49, C51, C59 +4
161uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C2, C5, C21, C26, C32, C36, C37, C39, C41, C42, C43, C44, C45, C48, C52
14150kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR41, R44, R52, R55, R66, R69, R79, R82, R91, R92, R97, R99, R148, R149
12BZX584C3V6Diode_SMD:D_SOD-523D1, D6, D18, D20, D21, D22, D23, D24, D25, D26, D27, D28
10AO3400APackage_TO_SOT_SMD:SOT-23_HandsolderingQ2, Q4, Q5, Q7, Q8, Q10, Q11, Q13, Q17, Q19
910uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC9, C25, C40, C56, C66, C67, C68, C70, C72
922uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC22, C23, C24, C38, C53, C54, C55, C64, C65
84k7Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR93, R94, R100, R106, R107, R113, R133, R154
7USBLC6-2P6Package_TO_SOT_SMD:SOT-666U19, U20, U21, U22, U23, U24, U25
62k2Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR10, R90, R120, R123, R138, R143
5220uFCapacitor_Tantalum_SMD:CP_EIA-7343-43_Kemet-X_Pad2.25x2.55mm_HandSolderC11, C14, C17, C19, C46
5AO3401APackage_TO_SOT_SMD:SOT-23_HandsolderingQ1, Q14, Q15, Q16, Q18
41kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR102, R115, R130, R131
43.3nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC29, C33, C35, C60
4330KResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR86, R95, R141, R153
442TL004-RC out:42TL+UTR1, TR2, TR3, TR4
4BAV23CLPackage_TO_SOT_SMD:SOT-23-3D8, D10, D12, D16
4IRF9Z24NPBFPackage_TO_SOT_THT:TO-220-3_VerticalQ3, Q6, Q9, Q12
4SMAJ13ADiode_SMD:D_SMAD7, D9, D11, D15
4SN74LVC1G3157DCKRPackage_TO_SOT_SMD:SOT-363_SC-70-6_HandsolderingU12, U18, U26, U27
310nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC27, C57, C62
356kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR87, R89, R145
20.5RResistor_SMD:R_2512_6332Metric_Pad1.40x3.35mm_HandSolderR36, R61
21.5uHProjLib:FXL0630L1, L2
25.1kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR139, R140
2AudioJack3_SwitchTRProjLib:PJ-3062-COJ4, J18
2Conn_02x04_Odd_EvenConnector_PinSocket_2.54mm:PinSocket_2x04_P2.54mm_VerticalJ3, J5
2DNPCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC58, C71
2LM324Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU6, U11
2PicoProjLib:RPi_Pico_SMD_THU3, U9
2TCA9534Package_SO:TSSOP-16_4.4x5mm_P0.65mmU1, U28
2TPS61088ProjLib:IC_TPS61088RHLRU8, U17
10.01RResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR126
10.47uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC47
11.5kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR78
11SMA4734ADiode_SMD:D_SMAD5
126650 CellProjLib:BH-26650-A5BJ001BT1
14.7uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC69
1433TXConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ9
147nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC50
1500mAFuse:Fuse_0805_2012Metric_Pad1.15x1.40mm_HandSolderF1
19vLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD13
1ACC PortConnector_Dsub:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset7.70mm_Housed_MountingHolesOffset9.12mmJ7
1AT24C04CDRGPackage_SO:SOP-8_3.76x4.96mm_P1.27mmU5
1AudioInConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ16
1BQ25601Package_DFN_QFN:Texas_S-PWQFN-N24_EP2.7x2.7mm_ThermalViasU2
1BQ27441-G1Package_SON:Texas_S-PDSO-N12U13
1CHAN1ProjLib:PJ-3062-COJ11
1CHAN2ProjLib:PJ-3062-COJ12
1CHAN3ProjLib:PJ-3062-COJ14
1CHAN4ProjLib:PJ-3062-COJ15
1CHRGLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD4
1Conn_01x02Connector_Molex:Molex_KK-254_AE-6410-02A_1x02_P2.54mm_VerticalJ13
1DNPResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderC63
1FS8205APackage_TO_SOT_SMD:SOT-23-6_HandsolderingU15
1FTC201610S1R0MBCAProjLib:FTC201610SL3
1FrontPanelConnector_IDC:IDC-Header_2x04_P2.54mm_VerticalJ8
1HT7533-1Package_TO_SOT_SMD:SOT-89-3U16
1HY2111-GBPackage_TO_SOT_SMD:SOT-23-6_HandsolderingU14
1I2CConnector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_VerticalJ10
1LCDConnector_Molex:Molex_KK-254_AE-6410-10A_1x10_P2.54mm_VerticalJ6
1MAX3232EEAE+TProjLib:SOP65P777X199-16NU4
1MCP4651Package_SO:TSSOP-14_4.4x5mm_P0.65mmU10
1MCP4728Package_SO:MSOP-10_3x3mm_P0.5mmU7
1OKLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD14
1PGLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD3
1SS34Diode_SMD:D_SMAD17
1SW_SPDTProjLib:SS-12D06L5SW1
1TRG1ProjLib:PJ-3062-COJ1
1TRG2ProjLib:PJ-3062-COJ2
1TestPoint_1.65vTestPoint:TestPoint_Pad_D1.5mmTP2
1TestPoint_5vTestPoint:TestPoint_Pad_D1.5mmTP3
1TestPoint_9.6vTestPoint:TestPoint_Pad_D1.5mmTP1
1Thermistor_NTCConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalTH1
1USB_C_ReceptacleProjLib:1054500101J20

The 334 most common of 337 parts.

More from CrashOverride85/zc95

2
  • 2 layers60.3 × 139.1 mmOutputBoard, the printed circuit board in 3D

    OutputBoard

    CrashOverride85/zc95

    4 channel EStim box inspired by the mk312bt, with Lua scripting support

    117 parts117GPL-3.0
  • 2 layers106 × 37.8 mmPanelControls, the printed circuit board in 3D

    PanelControls

    CrashOverride85/zc95

    4 channel EStim box inspired by the mk312bt, with Lua scripting support

    48 parts117GPL-3.0

Similar boards

  • 2 layers109.2 × 48.3 mmOutput board, the printed circuit board in 3D

    Output board

    saawsm/SW32

    A 4-channel E-Stim.

    88 parts13GPL-3.0
  • 4 layers44.8 × 76 mmTiny scarab, the printed circuit board in 3D

    Tiny scarab

    Embeetle/tiny-scarab

    Tiny beetle board based on the CH32V003 10-cent chip.

    147 parts24MIT
  • 4 layers70 × 60 mmCAN Logger V2.0, the printed circuit board in 3D

    CAN Logger V2.0

    deep-th/CAN_Logger

    This is a compact and reliable CAN logger board built for automotive and industrial applications. It features the ESP32-S3 microcontroller and MCP25625 CAN controller with integrated transceiver, supporting two…

    138 parts3
  • 2 layers64 × 30 mmEstim breakout, the printed circuit board in 3D

    Estim breakout

    rasterizednet/raspberry-pi-estim

    This repo includes kicad projects for the raspbi controller, and estim breakout, as well as the AVR source code for the estim breakout.

    49 parts5CC0-1.0
  • 6 layers160 × 100 mmBuslab, the printed circuit board in 3D

    Buslab

    tombueng/hilprobe

    HILprobe: multi-function UUT probe for hardware-in-the-loop testing - RS-485, CAN FD, logic analyzer, 4-ch scope, two programmable UUT supplies. KiCad 10, 6 layers, RP2350B + ESP32-S3.

    429 parts
  • 2 layers88 × 46 mmPsg14a power, the printed circuit board in 3D

    Psg14a power

    mykhayloscherbak/psg14aemu

    Starter-alternater panel emulator for GTD350

    53 parts
  • 4 layers80 × 105 mmRobotLegoController, the printed circuit board in 3D

    RobotLegoController

    OpenBotBrain/mcu-board

    Some design notes for an MCU board.

    725 parts

Questions

How big is the Pcb project PCB?

It measures 191.5 × 76 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Pcb project use?

337 parts, built around the MAX3232EEAE+T, LM324, TCA9534PW and MCP4728-E/UN. 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 Pcb project KiCad files?

From the CrashOverride85/zc95 repository on GitHub, at the commit this page was made from: the board is pcb-project/MainBoard/main.kicad_pcb and its schematic misc/OutputBoard/kicad/output.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pcb project design in my own project?

Its repository publishes it under the GPL-3.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).