Klipper — printer.cfg, MCU, host и базовые команды после установки

Опубликовано: 4 месяца назад
Просмотров: 296

Привет. Если Klipper у тебя уже поднялся, дальше начинается самое важное: понять, где тут host, где MCU, зачем нужен printer.cfg и какие команды помогут не устроить себе квест на ровном месте. Ниже я собрал рабочую логику первого запуска: как читать конфиг, как найти правильное подключение платы, что проверить первым делом и какие команды реально нужны в первый день.

Это не статья про переход на Klipper и не повтор гайда по установке. Тут я разбираю именно этап после первой установки, когда веб-интерфейс уже открывается, но уверенности в том, что принтер готов к жизни, ещё нет.

Как связаны host, MCU и printer.cfg

В Klipper важно сразу разделить три сущности. Host — это Linux-устройство, на котором крутится сам Klipper: Raspberry Pi, Orange Pi, BTT Pi или другой совместимый мини-компьютер. Именно host запускает сервис Klipper, хранит конфигурацию, общается с фронтендом и отправляет команды дальше.

MCU — это уже плата управления принтером, то есть микроконтроллер, к которому физически подключены моторы, нагреватели, датчики, концевики и вентиляторы. Именно он щёлкает пинами и двигает железо.

printer.cfg — главный конфигурационный файл на стороне host. В нём описано, какой у тебя принтер, как host должен достучаться до MCU и какие пины, кинематика, скорости, датчики и модули вообще есть в системе.

Самая полезная мысль для старта такая: host думает и хранит логику, MCU исполняет, а printer.cfg объясняет им обоим, как работать вместе. Как только это укладывается в голове, половина путаницы исчезает.

Есть ещё один момент, на котором многие спотыкаются. В обычной схеме host и MCU — это не одно и то же. Но host при желании может стать дополнительным MCU, например для акселерометра или работы с GPIO. Тогда в конфиге появляется отдельный блок вроде [mcu rpi]. Новичку это знать полезно, но трогать такую схему в первый вечер я бы не советовал, если нет конкретной задачи.

Настройка Klipper на 3D-принтере с открытым printer.cfg и подключённой платой управления

Что должно быть в printer.cfg сразу после первой установки

Я советую смотреть на стартовый printer.cfg не как на огромную простыню, а как на набор понятных блоков. В рабочем базовом варианте там обычно есть:

  • [mcu] — способ связи с основной платой;
  • [printer] — кинематика и лимиты движения;
  • [stepper_x] / [stepper_y] / [stepper_z] — оси;
  • [extruder] — экструдер и хотэнд;
  • [heater_bed] — стол, если он есть;
  • [fan], [heater_fan], [controller_fan] — вентиляторы;
  • [probe], [bltouch], [bed_mesh] и похожие секции — уже по комплектации.

Минимальный костяк часто выглядит так:

[include mainsail.cfg]

[mcu]
serial: /dev/serial/by-id/usb-...

[printer]
kinematics: cartesian
max_velocity: 250
max_accel: 2500
max_z_velocity: 15
max_z_accel: 100

[stepper_x]
...

[extruder]
...

[heater_bed]
...

Здесь главное — не пытаться сразу вылизать всё до идеала. На первом запуске задача скромнее: получить чистую загрузку конфига, увидеть температуру, проверить концевики и убедиться, что принтер вообще понимает, где у него верх, низ и стороны.

Отдельно скажу про [include]. Если у тебя фронтенд добавил отдельные файлы для макросов или интерфейса, это нормально. Более того, это удобно. Я обычно оставляю базовое железо в основном конфиге, а макросы, калибровки и экспериментальные вещи выношу в отдельные файлы. Так проще искать ошибки и проще откатываться, когда какая-нибудь «маленькая правка на пять минут» ломает запуск целиком.

Ещё одна практичная мысль: не редактируй сразу всё подряд. Если у тебя есть пример конфига под твою плату или принтер, сначала добейся запуска на нём, а потом постепенно подчищай и дописывай своё. Собирать printer.cfg с нуля в первый день можно, но это почти всегда путь в долгую отладку.

Как найти свой MCU и правильно подключить его

Самая частая проблема после первой установки — не «сломанный Klipper», а неверно указанный путь к плате. В конфиге это обычно выглядит как секция [mcu] с параметром serial: или canbus_uuid:.

Если плата подключена по USB, нормальный путь обычно берут через стабильный идентификатор, а не через плавающий /dev/ttyUSB0. На практике это значит: сначала находишь устройство в терминале, потом копируешь путь в конфиг целиком, руками не переписываешь.

ls /dev/serial/by-id/*

Если у тебя несколько одинаковых USB-устройств и идентификаторы неуникальны, тогда уже смотри путь вида by-path. Это грубее, зато иногда спасает, когда плата и дополнительный контроллер висят через похожие чипы.

ls /dev/serial/by-path/*

Если плата сидит на CAN, в конфиге вместо serial: нужен canbus_uuid:. UUID обычно вытаскивают отдельной командой через can0:

~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0

Есть важный нюанс, который часто замалчивают в коротких гайдах: не нужно городить CAN только ради моды. Если у тебя обычная USB-связка и всё стабильно, этого более чем достаточно для базового запуска. CAN имеет смысл там, где он реально нужен по железу и компоновке.

Ещё одна классическая ловушка — путать host с основным MCU. Если ты добавляешь в конфиг что-то вроде [mcu rpi] с путём /tmp/klipper_host_mcu, это дополнительный linux mcu для GPIO, SPI, I2C и прочих задач на стороне одноплатника. Это не замена основной плате принтера. Для первого запуска такой блок чаще всего вообще не нужен.

Базовые команды Klipper, которые реально нужны в первый день

Список команд в Klipper длинный, но после первой установки тебе не нужен весь арсенал. Вот тот набор, который даёт максимум пользы и минимум хаоса.

  • STATUS — показывает состояние Klipper. Очень полезно после каждого изменения конфига.
  • RESTART — перечитывает конфиг и перезапускает host-часть. Это обычная команда после правок в printer.cfg.
  • FIRMWARE_RESTART — перезапуск глубже: помогает очистить ошибку на стороне MCU, когда простой RESTART уже не вытягивает.
  • HELP — выводит список доступных расширенных команд. Хороший способ не гадать по памяти.
  • QUERY_ENDSTOPS — проверка концевиков. До первого хоуминга это одна из самых полезных команд.
  • GET_POSITION — показывает текущие координаты и помогает понять, как Klipper видит механику.
  • G28 — хоуминг. Запускай только после проверки концевиков и направления осей.
  • M112 — аварийная остановка. Да, её тоже стоит проверить заранее, а не в момент, когда сопло уже едет не туда.
  • PID_CALIBRATE — калибровка PID для хотэнда или стола, когда базовая механика уже подтверждена.
  • SAVE_CONFIG — записывает результаты калибровок в основной конфиг и сразу перезапускает host.

Самое полезное различие здесь — между RESTART и FIRMWARE_RESTART. Если ты просто поправил строку в конфиге, обычно хватает RESTART. Если Klipper ушёл в ошибку из-за аварийной остановки, проблем связи или неудачной проверки нагрева, чаще выручает именно FIRMWARE_RESTART.

С SAVE_CONFIG тоже будь аккуратен. Эта команда удобная, но она не «магически всё чинит», а дописывает результаты калибровок в основной конфиг. Если у тебя файл уже превращён в свалку из старых экспериментов, автозапись сверху порядка не добавит. Поэтому сначала добиваемся чистой структуры, потом сохраняем результаты.

Порядок первой проверки после установки

Вот маршрут, который я бы назвал самым здравым для первого запуска.

1. Убедиться, что конфиг вообще грузится

Сохранил правку — дал RESTART — посмотрел STATUS. Если здесь уже ошибка, дальше не идём. Хаотично жать хоуминг в таком состоянии — плохая привычка.

2. Проверить температуры

Сначала смотри, что хотэнд и стол показывают комнатные значения и не ползут сами вверх. Если температура явно неадекватная, не переходи к нагреву и движению, а сразу разбирайся с типом датчика и пинами.

3. Проверить аварийную остановку

Команда M112 должна увести систему в аварийное состояние. После этого обычно используют FIRMWARE_RESTART, чтобы восстановить работу. Этот тест скучный ровно до того момента, пока он не понадобится по-настоящему.

4. Проверить концевики

До любого G28 я бы обязательно прогнал QUERY_ENDSTOPS. Нажал концевик рукой, увидел смену состояния, отпустил — ещё раз посмотрел. Если тут логика перевёрнута, хоуминг легко превращается в поездку в раму или в стол.

5. Только потом проверять хоуминг

Когда концевики живые, можно переходить к G28. Сначала наблюдай глазами и держи палец рядом с аварийной остановкой. Если ось уходит не туда, выключайся сразу, а не жди, что «сейчас сама поймёт».

6. Нагрев и PID

Когда базовая механика уже понятна, можно прогреть хотэнд и стол, а потом сделать PID-калибровку. Если нужна отдельная разборка по температурной стабильности, у меня на сайте уже есть материал про калибровку PID хотэнда.

7. После этого — Z-offset, сетка стола и уже потом скорость

Многие лезут в input shaping и разгон, когда ещё первый слой плавает. Я бы шёл наоборот: сначала базовая посадка сопла, потом геометрия, потом ускорения. По соседним темам пригодятся материалы про Z-offset и input shaping в Klipper.

Где новички чаще всего ломают запуск

Ошибка №1 — использовать плавающий путь вроде /dev/ttyUSB0. Сегодня он один, завтра другой, после перезагрузки всё исчезло. Если есть serial/by-id, лучше сразу жить через него.

Ошибка №2 — жать G28 до проверки концевиков. Формально принтер «что-то делает», но это не значит, что делает он правильно. Проверка концевиков занимает минуту и может спасти стол, сопло и нервы.

Ошибка №3 — смешать в одном файле рабочую базу и все эксперименты подряд. Макросы, тестовые секции, старые закомментированные куски, копипаста из форумов — потом уже непонятно, что реально используется, а что просто лежит мёртвым грузом.

Ошибка №4 — путать установку, базовую настройку и тюнинг. Для этого сайта у тебя уже есть соседние материалы: сначала стоит прочитать, что вообще меняет Klipper, а если ты ещё на этапе выбора платформы — заглянуть в гайд про установку на Raspberry Pi, Orange Pi или BTT Pi. А вот разгон и тонкий тюнинг идут уже потом.

Ошибка №5 — считать, что SAVE_CONFIG всегда полезен. Если ты запускаешь автосохранение после каждой случайной попытки, конфиг очень быстро зарастает хвостами. Я предпочитаю сначала понять, что именно калибрую, и только потом фиксировать результат.

Есть и менее очевидная история: некоторые советы из старых роликов заставляют менять baud rate, копировать чужие секции TMC или сразу добавлять host mcu. Для базового запуска всё это чаще мешает, чем помогает. Чем спокойнее и чище стартовый конфиг, тем быстрее ты выходишь на рабочую печать.

Краткий чек-лист после первой установки Klipper

  • Проверить, что printer.cfg загружается без ошибок.
  • После каждой правки делать RESTART и смотреть STATUS.
  • Для основной платы использовать стабильный путь к MCU, а не ttyUSB0.
  • До хоуминга проверить температуры и QUERY_ENDSTOPS.
  • Проверить M112 и понимать разницу между RESTART и FIRMWARE_RESTART.
  • Не добавлять host mcu, CAN и сложные модули, если они пока не нужны.
  • Сначала базовый запуск, потом PID, Z-offset, сетка и только затем тюнинг скорости.

Если подвести всё к одной мысли, то после первой установки Klipper тебе не нужен «идеальный конфиг». Тебе нужен понятный, чистый и предсказуемый старт: правильный MCU, живой printer.cfg, несколько базовых команд под рукой и спокойная пошаговая проверка. А уже после этого можно лезть в тонкую настройку, ускорения и красивые графики.

Метки: , , , , , , , ,