Skip to content

CrashOverride85/zc95

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

219 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)

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.