пятница, 24 июля 2026 г.

Установка Klipper на 3D-принтер Kokoni EC1. Часть 2: Настройка серверной части на X96 Max с Armbian


         В первой части статьи мы полностью заменили штатную электронику принтера Kokoni EC1 на плату BIGTREETECH SKR Pico V1.0 и подготовили аппаратную часть для работы с Klipper. Следующим шагом необходимо настроить вычислительную платформу, которая будет выполнять функции сервера Klipper, обрабатывать команды печати и обеспечивать удалённый доступ к принтеру.

      В качестве такого сервера я решил использовать недорогой TV Box X96 Max. По производительности он значительно превосходит Raspberry Pi Zero и многие другие популярные одноплатные компьютеры, а приобрести его сегодня можно совсем недорого на вторичном рынке.

      Почему именно TV Box?

      После перехода на Klipper необходимость в штатной Android-плате Kokoni отпадает. Для работы системы требуется отдельный Linux-компьютер, который будет запускать Klipper и веб-интерфейс управления.

      Преимущества X96 Max:

низкая стоимость;

высокая производительность процессора Amlogic S905X2;

4 ГБ оперативной памяти;

встроенный Ethernet и Wi Fi;

низкое энергопотребление;

бесшумная работа.

      Для задач 3D-печати возможностей такого устройства более чем достаточно.

      Установка Armbian

      На TV Box была установлена операционная система Armbian. Процесс установки подробно описан ранее в статье «X96 Max. Устанавливаем Armbian (Linux Debian 11) в NAND память ТВ-приставки», поэтому подробно останавливаться на нём не буду. Установка Armbian Trixie, основанная на пакетной базе Debian 13 (Trixie), практически ничем не отличается от установки, описанной в статье для Debian 11.

 

      После первой загрузки подключаемся к X96 Max по SSH и выполняем обновление системы:

sudo apt update
sudo apt upgrade -y


      После завершения обновления рекомендуется перезагрузить устройство:

sudo reboot


Установка KIAUH

Для установки компонентов Klipper удобнее всего использовать проект KIAUH (Klipper Installation And Update Helper).

Подключаемся к TV Box по SSH и выполняем команды:

cd ~
git clone https://github.com/dw-0/kiauh.git
cd kiauh
./kiauh.sh

После запуска откроется текстовое меню установки.

 

Установка Klipper, Moonraker и Mainsail

В меню KIAUH последовательно выбираем:

1) Install  

        1) Klipper

        2) Moonraker 

        3) Mainsail

 

При установке соглашаемся на создание и загрузку файлов конфигурации.

 

Установка полностью автоматизирована и обычно занимает несколько минут.

После завершения система будет включать:

     • Klipper — сервер управления принтером;

     • Moonraker — API-сервер для взаимодействия с веб-интерфейсом;

     • Mainsail — современный веб-интерфейс управления принтером.

 

Прошивка микроконтроллера

Собираем прошивку Klipper:

cd ~/klipper
make menuconfig

Для SKR Pico выбираем следующие параметры:

     o [*] Enable extra low-level configuration options

     o Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->

     o Processor model (rp2040) --->

     o Bootloader offset (No bootloader) --->

     o Flash chip (GENERIC_03H with CLKDIV 4) --->

     o   Communication Interface (USBSERIAL) --->

 

Далее выполняем:

make

      Готовый файл прошивки появится в каталоге:  ~/klipper/out/

      Чтобы передать его на ПК с Windows (с которого выполнялось подключение по SSH), нажимаем правой кнопкой мыши на кнопке Пуск, выбираем пункт "Выполнить" и вводим команду:

scp chvv@10.20.1.104:~/klipper/out/klipper.uf2 D:



где:

chvv — имя пользователя на Armbian;

10.20.1.104 — IP-адрес X96 Max.

При первом подключении может появиться сообщение:

The authenticity of host ... This key is not known by any other names. 
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Необходимо ввести:

yes

и нажать Enter. После ввода пароля файл прошивки будет скопирован в корень диска D.

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

 

      Важно: во время прошивки плата должна получать питание только от USB-порта компьютера. Подключать внешний блок питания в этот момент нельзя.

       На компьютере плата определится как съёмный диск. Копируем на него файл klipper.uf2. Если после копирования файл исчезнет, а плата автоматически перезагрузится — прошивка записана успешно.

       После этого снимаем перемычки, подключаем плату по USB к X96 Max и проверяем её обнаружение системой:

ls /dev/serial/by-id/

      Если прошивка записана успешно, в списке появится устройство вида:

usb-Klipper_rp2040_XXXXXXXXXXXXXXXX-if00

Полученный идентификатор необходимо использовать в файле printer.cfg:

[mcu]
serial: /dev/serial/by-id/usb-Klipper_rp2040_XXXXXXXXXXXXXXXX-if00

      Теперь открываем браузер и переходим по адресу: http://IP-адрес-X96-Max

Должен открыться интерфейс Mainsail.


      
После этого открываем пункт «MACHINE (Система)»  и содержимое файла printer.cfg заменяем на прилагаемый конфигурационный файл, подставив свой идентификатор устройства.

#=========================================================
# Kokoni EC1
# SKR Pico v1.0
# Klipper
#=========================================================
[include mainsail.cfg]

[mcu]
serial: /dev/serial/by-id/usb-Klipper_rp2040_5044340408626B1C-if00
restart_method: command

[printer]
kinematics: cartesian
max_velocity: 150
max_accel: 1500
max_z_velocity: 10
max_z_accel: 100
square_corner_velocity: 5

[virtual_sdcard]
path: ~/printer_data/gcodes

[pause_resume]

[display_status]

[respond]

[idle_timeout]
timeout: 1800

[stepper_x]
step_pin: gpio11
dir_pin: gpio10
enable_pin: !gpio12

microsteps: 16
rotation_distance: 32.17

endstop_pin: ^gpio4

position_endstop: 100
position_min: 0
position_max: 100

homing_speed: 40
homing_positive_dir: true


[stepper_y]
step_pin: gpio6
dir_pin: gpio5
enable_pin: !gpio7

microsteps: 16
rotation_distance: 32.15

endstop_pin: ^gpio3

position_endstop: 0
position_min: 0
position_max: 100

homing_speed: 40


[stepper_z]
step_pin: gpio19
dir_pin: gpio28
enable_pin: !gpio2

microsteps: 16
rotation_distance: 1

endstop_pin: ^gpio25

position_endstop: 0
position_min: 0
position_max: 100

homing_speed: 8
second_homing_speed: 3
#full_steps_per_rotation: 200

[extruder]

step_pin: gpio14
dir_pin: !gpio13
enable_pin: !gpio15

microsteps: 16
rotation_distance: 7.84

nozzle_diameter: 0.4
filament_diameter: 1.75

heater_pin: gpio23
sensor_pin: gpio27

sensor_type: EPCOS 100K B57560G104F

control: pid


min_temp: 0
max_temp: 230

min_extrude_temp: 170

[tmc2209 stepper_x]
uart_pin: gpio9
tx_pin: gpio8
uart_address: 0
run_current: 0.45
stealthchop_threshold: 999999

[tmc2209 stepper_y]
uart_pin: gpio9
tx_pin: gpio8
uart_address: 2
run_current: 0.45
stealthchop_threshold: 999999

[tmc2209 stepper_z]
uart_pin: gpio9
tx_pin: gpio8
uart_address: 1
run_current: 0.70
stealthchop_threshold: 0

[tmc2209 extruder]
uart_pin: gpio9
tx_pin: gpio8
uart_address: 3
run_current: 0.55
stealthchop_threshold: 999999


[heater_fan hotend_fan]
pin: gpio17
heater: extruder
heater_temp: 50.0

[output_pin board_fan]
pin: gpio18
value: 1
shutdown_value: 1

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 24.863
#*# pid_ki = 1.237
#*# pid_kd = 124.938

После применения настроек профиля, перезагрузки и переключения языка интерфейс Mainsail выгнлядит так:


     Несколько слов о файле конфигурации и способах проверки и настройки

      После подключения всех узлов принтера к плате BIGTREETECH SKR Pico V1.0 рекомендуется проверить правильность работы каждого устройства до выполнения первой печати.


     Концевые выключатели осей X, Y и Z

     Пины подключения концевых выключателей, используемых для ограничения перемещения осей X, Y и Z, указываются в параметре endstop_pin соответствующих разделов конфигурационного файла:

[stepper_x]
endstop_pin: ^gpio4

[stepper_y]
endstop_pin: ^gpio3

[stepper_z]
endstop_pin: ^gpio25


     Для проверки работоспособности датчиков откройте консоль Mainsail и выполните команду:

QUERY_ENDSTOPS


     В ответ будет выведено текущее состояние всех концевиков:   x:open y:open z:open


      Поочерёдно нажимайте каждый концевой выключатель пальцем и повторяйте команду QUERY_ENDSTOPS. Для нажатого датчика состояние должно измениться с open на TRIGGERED. Если состояние не меняется или постоянно отображается как TRIGGERED, необходимо проверить правильность подключения датчика и настройки параметра endstop_pin.


Датчик температуры хотэнда

      Пин подключения термистора указывается в разделе [extruder] параметром sensor_pin:

[extruder]
sensor_pin: gpio27

      Проверить работоспособность датчика можно непосредственно через интерфейс Mainsail. После включения принтера температура хотэнда должна отображаться и соответствовать температуре окружающей среды, обычно в пределах 18–35 °C.

      Если значение отсутствует, отображается как 0 °C либо имеет явно некорректное значение, следует проверить подключение термистора и настройки раздела [extruder].


Нагреватель хотэнда

       Пин подключения нагревательного элемента задаётся в разделе [extruder] параметром heater_pin:

[extruder] 
heater_pin: gpio23

        Для проверки нагревателя выполните в консоли Mainsail следующую команду:

SET_HEATER_TEMPERATURE HEATER=extruder TARGET=50


       Либо установите температуру 50 °C через веб-интерфейс Mainsail.

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

Вентиляторы

       В принтере используются два вентилятора:

FAN-CASE — вентилятор охлаждения корпуса;

FAN-HE — вентилятор охлаждения хотэнда.

Вентилятор обдува модели в штатной конструкции Kokoni EC1 отсутствует.


Вентилятор корпуса (FAN-CASE)

      Вентилятор корпуса подключён через раздел:

[output_pin board_fan]
pin: gpio18

      В данной конфигурации он работает постоянно и запускается сразу после включения питания принтера.


Вентилятор хотэнда (FAN-HE)

     Вентилятор хотэнда настраивается в разделе:

[heater_fan hotend_fan]
pin: gpio17

    Он включается автоматически при достижении температуры хотэнда 50 °C и выключается после его остывания ниже заданного порога.

      Для проверки достаточно нагреть хотэнд до температуры выше 50 °C. После этого вентилятор должен автоматически начать вращение.

      Проверка всех перечисленных устройств перед первым запуском позволит своевременно выявить ошибки подключения и избежать возможных повреждений оборудования во время дальнейшей настройки и печати.


Настройка UltiMaker Cura

Machine Settings → Printer
X (Width): 95 мм
Y (Depth): 95 мм
Z (Height): 58 мм

Build plate shape: Rectangular
Origin at center: Off
Heated bed: Off
Heated build volume: Off
G-code flavor: Marlin


Printhead Settings
X min: -20 мм
Y min: -10 мм
X max: 10 мм
Y max: 10 мм
Gantry Height: 100 мм

Number of Extruders: 1
Apply Extruder offsets to GCode: On

Start G-code

M117 Homing
G28

M117 Heating
M109 S{material_print_temperature}

G92 E0

G1 Z2 F3000
G1 X2 Y2 F3000
G1 Z0.28 F300


End G-code

G91
G1 E-2 F1800

G1 Z10 F600

G90
G1 X0 Y100 F3000

M104 S0

M84


Machine Settings → Extruder 1
Plain Text
Nozzle size: 0.4 mm
Compatible material diameter: 1.75 mm
Nozzle offset X: 0.0 mm
Nozzle offset Y: 0.0 mm
Cooling Fan Number: 0
Extruder Start G-code duration: 0.0 s
Extruder End G-code duration: 0.0 s

Extruder Start G-code: пусто
Extruder End G-code: пусто



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

Заключение

     В результате модернизации штатная закрытая экосистема Kokoni EC1 была полностью заменена на открытое решение на базе Klipper. В качестве управляющего компьютера используется TV Box X96 Max с Armbian, который обеспечивает стабильную работу Klipper, Moonraker и Mainsail.

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

     Видео работы принтера привожу ниже.




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

 


       В будущем я планирую заменить экструдер, добавить освещение, вебкамеру и одновременно установить более быстроходный ходовой винт оси Z, чтобы уменьшить шум при работе и повысить скорость перемещения печатающей головки. Но это уже материал для следующих статей.


Комментариев нет:

Отправить комментарий