Move to Klipper
By using Klipper to drive multiple Arduino CNC shield, we can avoid:
- soldering parts.
- fixing our python interface to GRBL.
Klipper replaces GRBL, and will run on many more MCUs than the UNO.
Features to cover
-
Double Y-axis: - "stepper_y1" will mirror the Y stepper, see this.
-
Tool stepper control: https://gitlab.com/pipettin-bot/pipettin-grbl/-/issues/47#note_1213094953 - Can be implemented as a manual stepper (without sync to other axes).
-
Implemented as a homeable-extruder: https://github.com/naikymen/klipper-homing-extruder -
N-Axis machine: see https://gitlab.com/pipettin-bot/pipettin-grbl/-/issues/47#note_1213124359
-
Probing: for tips and stuff https://gitlab.com/pipettin-bot/pipettin-grbl/-/issues/47#note_1178892093 - Implemented custom modules: https://github.com/naikymen/klipper-homing-extruder
-
Simultaneous XY homing:not happening -
Adapt code from protocol2gcode: -
protocolBuilder: pipettin-grbl/klipper/code/piper/gcode.py -
The Moonraker "commander": - See:
pipettin-grbl/klipper/code/piper/coroutines_moon.py -
The gcode list "writer" works for sending protocols and joystick moves. -
The "safe" methods for sending protocols (i.e. with many checks) are a mess. Feedback and pauses not possible yet. - It worked well in the Jupyter notebook but I cant use
task_createas a service for some reason. -
Update position through the websocket. -
Alternate usage: generate the GCODE and "print it" on Mainsail.
- See:
-
Implementation based on GCODE generation, and relying on Mainsail for streaming.
-
Caveats
The main caveat is that "Klipper is a 3D-printer firmware". This effectively means that there is no intention of supporting non-3D-printer CNC features.
For example, Klipper does not support:
- Probing in any direction (only -Z apparently).
- Patch: use manual steppers for all axes, with the SYNC=0 option.
- Homing a "synchronized" stepper (i.e. "extruder homing").
- Patch: Run-out filament sensor hack.
- Retraction after homing: https://github.com/Klipper3d/klipper/pull/5506
- Patch: manual move and set position.
General patches:
- Macros.
- Sending low-level commands directly: https://gitlab.com/pipettin-bot/pipettin-grbl/-/issues/47#note_1216271485
- Make yet-another-klipper-fork
People
- Have a chat with Homer Sajoina from Friendzymes / GOSH colony picker.
- Folks at the Jubilee Discord are awesome: https://discord.com/channels/627982902738681876/741364565950070935
Edited by naikymen
