В качестве такого сервера я решил использовать недорогой 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, чтобы уменьшить шум при работе и повысить скорость перемещения печатающей головки. Но это уже материал для следующих статей.















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