Cura + Klipper: как подружить популярный слайсер и новую прошивку

Слайсер Cura вполне способен работать с прошивкой Klipper, но в отличие от привычной пары Cura-Marlin такая комбинация пока далека от идеала. Ниже разберемся, как добиться максимальной совместимости.

Cura + Klipper: как подружить популярный слайсер и новую прошивку

Cura — самый популярный в мире слайсер с более чем миллионом пользователей. Cura имеет открытый исходный код, предлагается бесплатно и совершенствуется известным производителем 3D-принтеров UltiMaker. В интернете можно найти множество руководств по настройке Cura для работы с разным оборудованием, но информации о том, как добиться совместимости с Klipper, маловато.

Klipper — это относительно новая прошивка с открытым исходным кодом. Ее основное отличие от главного конкурента — проверенной временем и очень популярной прошивки Marlin — заключается в использовании дополнительных вычислительных мощностей в виде дополнительного микрокомпьютера, обычно Raspberry Pi. Вся суть в разделении труда: Raspberry Pi отвечает за обработку G-кода, а микроконтроллеру 3D-принтера остается только управлять непосредственно работой компонентов 3D-принтера. За счет этого достигается более высокая производительность, в свою очередь позволяющая использовать ряд продвинутых функций.

Cura + Klipper: как подружить популярный слайсер и новую прошивку

Благодаря этому Klipper зачастую предпочтителен тогда, когда требуются высокие скорости 3D-печати. Многие из современных моделей 3D-принтеров изначально затачиваются под работу с Klipper.

Основные настройки

Слайсеры — это программы, необходимые для преобразования 3D-моделей в G-код, управляющий работой 3D-принтеров. Это не единственное их назначение: слайсеры также предлагают различные функции, помогающие повышать качество печати.

К сожалению, некоторые из этих функций могут конфликтовать с функционалом Klipper, например такими настройками, как Pressure Advance для более ровной печати линий и углов и Input Shaping для устранения вибраций, вызывающих дефекты поверхностей. Cura довольно хорошо работает с Klipper, но во избежание нежелательных результатов некоторые функции необходимо отключать или изменять, чтобы сводить к минимуму вероятность конфликтов.

Cura + Klipper: как подружить популярный слайсер и новую прошивку

Первая из них — это Сoasting, отключающая подачу расплава ближе к концам укладываемых линий, чтобы не образовывались наплывы. Эта функция напрямую конфликтует с функцией Klipper под названием Pressure Advance, контролирующей подачу расплава на углах, так что Coasting лучше отключить во вкладке экспериментальных настроек (Experimental Settings).

Функции Acceleration Control и Jerk Control на вкладке настроек скорости (Speed Settings) тоже лучше оставить отключенными, хотя последняя в любом случае будет игнорироваться текущей версией Klipper.

Использовать настройки ретракта в Cure можно и нужно даже после настройки функции Pressure Advance — небольшие значения порядка 0,75 мм зачастую помогают лучше справляться с особо вязкими и липкими полимерными расплавами.

Плагины

Хотя плагины не обязательны для работы Cura в связке с Klipper, некоторые из них могут быть полезны. Например, плагин от jjgraphix добавляет меню, позволяющее регулировать настройки Klipper прямо в Cura, после чего они будут учитываться при генерации G-кода. В частности, так можно настраивать ретракт, функцию гашения вибраций (Input Shaper), динамической регулировки подачи расплава (Pressure Advance) и параметры печати калибровочных башенок.

Экспорт G-кода

Хотя G-код принято считать единственным способом управления прошивкой 3D-принтера, Klipper предлагает более продвинутый подход, используя относительно ограниченный набор команд G-кода для базового управления механикой принтера, «расширенный» G-код для настройки общей конфигурации, например:

SET_SERVO SERVO=myservo ANGLE=5.3

а также макросы для дополнительной кастомизации посредством скриптов.

Cura + Klipper: как подружить популярный слайсер и новую прошивку


Cura умеет генерировать варианты G-кода с учетом особенностей разных прошивок, но Klipper в их число пока не входит. В качестве «костыля» можно использовать G-код в стиле прошивки Marlin, но при этом необходимо помнить о нескольких последствиях.

Во-первых, Klipper может не распознавать некоторые из команд G-кода. Одна из них — принудительная остановка (M0), зачастую используемая для постановки 3D-печати на паузу. Это не такая уж и большая проблема, потому что вместо M0 можно использовать команду PAUSE в «расширенном» G-коде, например за счет прямого редактирования файла с G-кодом или создания макроса, ассоциирующего команду M0 с командой PAUSE.

Начальные и конечные инструкции

Здесь возникает вопрос: а почему вообще Klipper не распознает такие команды, как M0? Разработчики объясняют это тем, что в их задачи не входит обеспечение поддержки всех возможных команд G-кода, а упор делается на использование «расширенного» G-кода на «понятном людям языке», то есть словами.

Это приводит нас к еще одной проблеме, связанной с начальными и конечными командами. Cura добавляет такие команды в каждый файл с G-кодом, и зачастую эти команды не распознаются прошивкой Klipper. Здесь опять-таки можно вручную редактировать файлы, заменяя команды на понятные Klipper. Для этого в Cura необходимо открыть Preferences > Configure Cura > Printers > Machine Settings, а затем можно редактировать код.

Более эффективным подходом может быть создание макросов, содержащих все необходимые начальные и конечные инструкции, например;

 [gcode_macro START_PRINT…]

Типичные примеры можно найти на страничке Klipper в репозитории GitHub. Стартовые инструкции, например, могут выглядеть так:

Этот подход упрощает настройку первых и последних шагов, так как изменения в инструкциях не требуют повторного слайсинга или постоянного ручного редактирования G-кода.

Подключение

Кого-то может устраивать экспорт G-кода с компьютера на 3D-принтер посредством накопителя, например SD-карты, но при желании Сura можно подключить к Klipper напрямую. Архитектура Klipper обеспечивает такую возможность через Moonraker API. Для этой цели существуют несколько интерфейсов прикладного программирования, но Moonraker — это официальный вариант, который можно скачать с Cura Marketplace или GitHub. В основной массе случаев функционала этого API будет более чем достаточно.

Cura + Klipper: как подружить популярный слайсер и новую прошивку

Как встроить Moonraker:

  1. В поле поиска в верхней части Cura найдите и установите Moonraker Connection.
  2. Перезапустите Cura.
  3. Откройте Settings > Printer > Manage Printer и выберите Connect Moonraker.
  4. Настройте URL для пары Klipper-Moonraker, используя IP-адрес Raspberry Pi или того микрокомпьютера, который вы используете для работы с Klipper.
  5. Опционально добавьте идентификаторы периферийных устройств, сконфигурированных в Klipper — светодиодной подсветки, веб-камеры и так далее.
  6. Выберите тип файлов — G-код или UFP. Конфигурация будет сохранена, когда вы закроете это окно.

Теперь после слайсинга опции сохранения будут включать вариант Upload to <Название принтера>, после чего будет открываться окно, в котором можно изменять название файла и другие детали.

Этот подход работает с Fluidd, Mainsail, KlipperScreen и любыми другими пользовательскими интерфейсами для Klipper.