Note: This repo has submodules, so if cloning, it's best to use the recursive option.
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).
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)
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.
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
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:
- Github discussions or issues
- The ZC95 channel on Joanne's E-Stim Community discord, see Estim control boxes -> zc95
- I'd highly recommend joining this discord server anyway, the zc95 chanel is a tiny part of what's there
Other related projects that are worth checking out:
-
NeoDK - Advanced electrostimulation machine development kit. In active development, and also has a chanel on Joanne's E-Stim Community discord
-
MK-312BT - Project the ZC95 was inspired by, and shares lot in common with (original repo gone, but there are many forks)
-
WT-312 - 312 style driver, intended for integration into other projects
-
FOC-Stim - In development, checkout the foc-stim channel on Joanne's E-Stim Community discord for the latest
- 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
- Improved 3D printed case?
- 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.
