Klipper – это программный комплекс для 3D принтеров, который для своей работы требует отдельного компьютера, чаще всего используются одноплатные компьютеры из семейств Raspberry Pi и Orange Pi (Далее будет использоваться сокращение ROpi), и управляет подключенными платами принтера. Принципиально всё, что требуется для работы Klipper, это компьютер (хост) с установленной операционной системой Linux, а также Python 2.7 и подключенная и соответствующим образом прошитая плата принтера.
Для чего Klipper необходим отдельный компьютер? Klipper выполняет все расчеты по перемещениям, компенсации резонансов и т.п. на компьютере, а на принтер передается уже готовый код, таким образом даже слабые 8-битные платы в состоянии радовать своих владельцев быстрой и качественной печатью. Например 16Mhz AVR позволяет получить 154 тысячи шагов в секунду на одном шаговом двигателе и 102 тысячи шагов в секунду на трех шаговых двигателях. Более подробно про производительность можно прочесть на странице Klipper Benchmarks.
Другая отличительная черта Klipper заключается в его модульности и гибкости настроек. Все настройки размещены в текстовом файле printer.cfg. И для изменения настроек не нужно перепрошивать устройства каждый раз, достаточно перезагрузить сам Klipper. А в части модульности у Klipper нет ограничений на количество плат, которыми он может управлять одновременно. Например, принтер Voron 2.4 для своей работы использует 7 шаговых двигателей, и до недавнего времени не мог размещаться на одной плате, поэтому для своей работы использовались две платы BTT SKR 1.3 или BTT SKR 1.4. Таким образом Klipper – мультиконтроллерный. Эту взаимосвязь можно определить следующим образом:
MCU - это micro-controller unit. То есть это устройство через которое в дальнейшем можно получить доступ к его портам, шинам, GPIO. Сами MCU подключаются к Klipper следующими вариантами: USB, UART, CAN bus. У каждого типа подключения есть свои плюсы и минусы, но это детально будет рассмотрено в статьях посвященных тем или иным видам подключения.
Каждый MCU предоставляет Klipper свои порты ввода-вывода, а так же шины данных, таких как SPI, i2c. То есть к каждой MCU можно подключить различные устройства и управлять ими централизованно. Например, рассматривая подключение распространённого принтера Creality Ender 3 к Klipper, можно подключить:
Программное же взаимодействие между компьютером, Klipper
и другим программным обеспечением может быть представлено следующим образом:
nginx
и предоставляет остальному программному обеспечению сетевую инфраструктуру;Обратите внимание, что красным пунктиром выделены необязательные блоки, но они могут расширить функциональность Вашего принтера.
При этом сама загрузка Klipper
и его взаимодействие с MCU
будет выглядеть следующим образом:
В файле конфигурации можно встретить разные символы, смысл которых сразу непонятен:
В Klipper
все параметры задаются в файле printer.cfg
. Сам файл printer.cfg
имеет следующий вид:
[mcu]
serial: /dev/ttyACM0
[printer]
kinematics: cartesian
max_velocity: 500
max_accel: 3000
max_z_velocity: 25
max_z_accel: 30
Что ознает что в файле printer.cfg
есть два раздела [mcu]
и [printer]
, а также параметры которые относятся к каждому из разделов.
Полный перечень разделов и параметров к ним можно найти в Config Reference.
Как работает printer.cfg
: большая часть параметров имеет преднастроенные значения, а каждый из разделов файла конфигурации переназначает указанные значения, например:
[printer]
max_accel: 3000
Задает значение max_accel
в 3000, но если конструкция в конфигурационном файле будет следующей:
[printer]
kinematics: cartesian
max_velocity: 500
max_accel: 3000
max_z_velocity: 25
max_z_accel: 30
[mcu]
serial: /dev/ttyACM0
[printer]
max_accel: 5000
То значение max_accel
будет не 3000, а 5000, так как применяться будет более позднее объявлённое в конфигурационном файле значение.
Кроме того, при использовании команды save_config
в конец printer.cfg
добавляется блок с параметрами которые были изменены или переопределены в результате выполнения других команд, например: PID_CALIBRATE
, SHAPER_CALIBRATE
и др:
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 22.266
#*# pid_ki = 1.227
#*# pid_kd = 101.033
В данном блоке видно, что переопределяется настройка блока [extruder]
в части коэффициентов PID, а, учитывая что этот блок находится внизу конфигурационного файла, текущие заначения переопределят настройки, которые были выше.
А символы #*#
означают не комментарии, а блок автосохранения.
Любые изменения этого блока могут привести к некоректной работе
Klipper
.
Любые параметры, которые будут внесены ниже блока
#*#
- игнорируютсяKlipper
.
Конфигурационный файл также может состоять из нескольких других файлов для этого идет следующий конструкт: [include (путь к файлу)]
[include ./macros.cfg]
[printer]
max_accel: 5000
В данном примере в основной файл printer.cfg
влючается файл macros.cfg
, расположенный в той же папке, и тогда основной файл конфигурации будет содержать значения именно в том порядке в котором они включались в основной файл, например:
printer.cfg
:
[a]
param1: value1
param2: value2
[b]
[include additional.cfg]
[c]
[d]
[e]
param5: value5
param6: value6
additional.cfg
:
[a]
param2: value21
param3: value3
[e]
param4: value4
param5: value51
[f]
После чтения файлов получится следующий собранный воедино: printer.cfg
:
[a]
param1: value1
param2: value2
[b]
[a]
param2: value21
param3: value3
[e]
param4: value4
param5: value51
[f]
[c]
[d]
[e]
param5: value5
param6: value6
А с учетом переопредения значений (те что ниже в конфиге переопределяют указанные выше), конфигурационный файл будет иметь следующий логический вид:
[b]
[a]
param1: value1
param2: value21
param3: value3
[f]
[c]
[d]
[e]
param4: value4
param5: value5
param6: value6
Необходимо учитывать эту особенность Klipper
при разнесении его конфигурации во вложенные файлы.
Существует два различных сценария использования Klipper:
Object exclude
, позволяющим отменить печать одной из деталей во время печати.При этом общую логику прохождения gCode файла можно визуализировать следующим образом:
Программный комплекс для 3D принтеров Klipper можно установить на довольно большой перечень устройств, где ключевым является наличие свободного USB порта, или возможность использования USART подключения.
Вариантов конечных устройств MCU, плат принтеров или дополнительных устройств настолько много, что описывать их все не представляется возможным, отметим что Klipper легко устанавливается на:
Предлагаем Вашему вниманию обобщенную статью по установке на разные виды устройств и выполняемую разными вариантами. Все это рассмотрено в статье Установка Klipper.
Для управления принтером, а также периферийными устройствами, подсветками необходимо, чтобы Klipper мог взаимодействовать с ними, необходимо их правильно сконфигурировать и определить в конфигурации.
Различные варианты подключения MCU к Klipper расмотрены в статье: Подключение MCU
После успешной настройки MCU Klipper получит возможность взаимодействия с выводами и шинами этих MCU. К ним относятся Pins, i2c, SPI.
Детально взаимодействие с MCU рассмотренно в статье Подключение периферийных устройств