چرا Klipper به جای Marlin؟

Marlin فریم‌ور محبوب پرینترهای سه‌بعدی است که مستقیماً روی بورد پرینتر اجرا می‌شود. کار می‌کند، پایدار است، اما محدودیت‌هایی دارد:

  • پردازش روی MCU با منابع محدود (معمولاً STM32 با RAM کم)
  • تنظیمات نیازمند کامپایل مجدد فریم‌ور
  • پشتیبانی محدود از Input Shaping و Pressure Advance
  • سرعت محدود در G-code پیچیده

Klipper معماری متفاوتی دارد: پردازش روی یک کامپیوتر کمکی (Raspberry Pi، Orange Pi یا حتی گوشی اندروید) انجام می‌شود و فقط دستورات نهایی به MCU ارسال می‌شوند. این یعنی:

  • سرعت بالاتر: پردازش G-code روی پردازنده قدرتمندتر
  • Input Shaping: حذف ringing و ووو با شتاب‌دهنده‌های نرم‌افزاری
  • Pressure Advance: کنترل دقیق جریان اکسترودر
  • تنظیمات بدون کامپایل: فقط فایل printer.cfg رو ویرایش کن
  • Web Interface: Mainsail یا Fluidd برای کنترل از مرورگر
  • Bed Leveling پیشرفته: Klipper Mesh Bed Leveling با تجسم گرافیکی
خلاصه: Marlin برای شروع خوبه. وقتی به دنبال کیفیت و سرعت بیشتری هستی، Klipper Upgrade منطقی‌ترین قدم بعدیه.

پیش‌نیازها

برای نصب Klipper به این‌ها نیاز داری:

قطعهتوضیح
بورد پرینترSKR Pro، RAMPS، BTT Octopus یا هر بورد پشتیبانی‌شده
کامپیوتر میزبانRaspberry Pi 3/4/5 یا Orange Pi One (ARM، ۵۱۲MB+ RAM)
کابل USBداده — کوتاه و باکیفیت (مهم!)
SD Cardبرای فلش فریم‌ور (FAT32)
منبع تغذیه پایدار۵V 2A+ برای Orange Pi
هشدار: هنگام فلش کردن، فریم‌ور Marlin از روی بورد پرینتر پاک می‌شود. همیشه یک بکاپ از firmware.bin فعلی Marlin داشته باشید تا بتونید برگردید. برای بکاپ گرفتن، FIRMWARE.CUR رو از SD Card کپی کنید.

مرحله ۱: نصب Klipper روی Orange Pi

اول، سیستم‌عامل Orange Pi رو آپدیت کن و وابستگی‌های لازم رو نصب کن:

# روی Orange Pi (SSH بزن)
sudo apt-get update
sudo apt-get install -y git python3 python3-venv python3-dev \
  libffi-dev libncurses-dev libusb-1.0-0-dev \
  gcc-arm-none-eabi binutils-arm-none-eabi \
  libnewlib-arm-none-eabi dfu-util stm32flash make

حالا کلایپر رو از گیت‌هاب کلون کن:

cd ~
git clone https://github.com/Klipper3d/klipper.git
cd klipper

محیط مجازی پایتون بساز و وابستگی‌ها رو نصب کن:

python3 -m venv ~/klippy-env
~/klippy-env/bin/pip install -r scripts/klippy-requirements.txt
نکته مهم درباره Python 3.14: اگر از Armbian جدید استفاده می‌کنید، ممکن است پایتون ۳.۱۴ نصب باشد. کتابخانه greenlet که Klipper استفاده می‌کند ممکن است روی پایتون ۳.۱۴ خطا بدهد. در این صورت، پایتون ۳.۱۱ یا ۳.۱۲ نصب کنید:
sudo apt-get install python3.11 python3.11-venv
python3.11 -m venv ~/klippy-env

مرحله ۲: کامپایل فریم‌ور Klipper برای بورد پرینتر

حالا باید فریم‌ور Klipper رو برای بورد پرینترت (مثلاً SKR Pro با STM32F407) کامپایل کنی:

cd ~/klipper
make clean
make menuconfig

تنظیمات menuconfig برای SKR Pro (STM32F407):

گزینهمقدار
Microcontroller ArchitectureSTMicroelectronics STM32
Processor modelSTM32F407
Bootloader offset32KiB bootloader
Clock Reference8 MHz crystal
Communication interfaceUSB (PA11/PA12)

بعد از تنظیم، ذخیره کن و خارج شو. سپس کامپایل کن:

make

فایل خروجی:

~/klipper/out/klipper.bin

این فایل حدود ۴۴KB خواهد بود (بسیار کوچک‌تر از Marlin).

مرحله ۳: فلش فریم‌ور از طریق SD Card

بورد SKR Pro از فلش با SD Card پشتیبانی می‌کند. مراحل:

  1. فایل klipper.bin رو به firmware.bin تغییر نام بده
  2. فایل رو روی SD Card (فرمت FAT32) کپی کن
  3. SD Card رو از کامپیوتر بکش و داخل بورد پرینتر بذار
  4. پرینتر رو ریستارت کن (power off/on یا دکمه reset)
  5. ۲۰-۳۰ ثانیه صبر کن — بورد فریم‌ور رو فلش می‌کنه
  6. SD Card رو بردار

اگر فلش موفق بوده، فایل firmware.bin روی SD Card به FIRMWARE.CUR تبدیل شده.

تأیید موفقیت: بعد از فلش، بورد پرینتر رو به Orange Pi وصل کن. باید به‌جای usb-STMicroelectronics_MARLIN_... حالا usb-Klipper_stm32f407... ببینی:
ls /dev/serial/by-id/
# خروجی باید شبیه این باشه:
# usb-Klipper_stm32f407_240021001551333136373330-if00

مرحله ۴: نوشتن printer.cfg

Klipper از یک فایل متنی به نام printer.cfg برای تنظیمات استفاده می‌کنه. برخلاف Marlin، نیازی به کامپایل نیست — فقط فایل رو ویرایش کن و RESTART بزن.

یک فایل printer.cfg پایه برای پرینتر CoreXY با SKR Pro:

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

[printer]
kinematics: corexy
max_velocity: 300
max_accel: 3000
max_z_velocity: 20
max_z_accel: 100

[stepper_x]
step_pin: PE11
dir_pin: !PE10
enable_pin: !PE9
microsteps: 16
rotation_distance: 40
endstop_pin: ^PB14
position_endstop: 0
position_max: 300
homing_speed: 50

[stepper_y]
step_pin: PD8
dir_pin: !PB12
enable_pin: !PD9
microsteps: 16
rotation_distance: 40
endstop_pin: ^PB13
position_endstop: 0
position_max: 300
homing_speed: 50

[stepper_z]
step_pin: PD14
dir_pin: PD13
enable_pin: !PD15
microsteps: 16
rotation_distance: 8
endstop_pin: ^PA0
position_endstop: 0.5
position_max: 350

[extruder]
step_pin: PD6
dir_pin: !PD5
enable_pin: !PD4
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB15
sensor_type: ATC Semitec 104GT-2
sensor_pin: PC0
min_temp: 0
max_temp: 280

[heater_bed]
heater_pin: PE2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC3
min_temp: 0
max_temp: 130

[fan]
pin: PE6

[heater_fan nozzle_cooling]
pin: PE5

[probe]
pin: ^PB15
z_offset: 0
speed: 5.0

[bed_mesh]
speed: 80
horizontal_move_z: 5
mesh_min: 30,30
mesh_max: 270,270
probe_count: 5,5
توجه: این تنظیمات برای یک پرینتر خاص است. pinها برای بورد شما متفاوت خواهند بود. حتماً شماتیک بورد خودتون رو چک کنید. مقادیر rotation_distance و position_max باید برای پرینتر شما کالیبره بشن.

برای پیدا کردن pin‌های صحیح بوردت، به پوشه config رسمی Klipper مراجعه کن.

مرحله ۵: تست موتورها و کالیبراسیون

بعد از راه‌اندازی Klipper، این تست‌ها رو انجام بده:

تست اندستاپ‌ها

QUERY_ENDSTOPS

باید بگه همه open هستن. اگر TRIGGERED نشون داد بدون اینکه چیزی فشرده باشی، یعنی pin رو اشتباه تنظیم کردی.

تست موتورها (بدون حرکت واقعی)

STEPPER_BUZZ STEPPER=stepper_x
STEPPER_BUZZ STEPPER=stepper_y
STEPPER_BUZZ STEPPER=stepper_z

هر موتور باید یه حرکت کوچیک انجام بده و برگردد. اگر صدای موتور رو شنیدی ولی حرکت نکرد، dir_pin یا enable_pin رو چک کن.

تست هوم کردن

G28

پرینتر باید به نقطه صفر بره. اگر موتورها به اشتباه حرکت کردن، dir_pin رو با علامت ! معکوس کن.

دستورات مفید بعد از راه‌اندازی

  • STATUS — وضعیت کلی پرینتر
  • BED_MESH_CALIBRATE — ساخت مش bed leveling
  • SET_PRESSURE_ADVANCE ADVANCE=0.05 — تنظیم Pressure Advance
  • TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP=100 — تست Input Shaping

رفع مشکل قطعی USB (مهم!)

یکی از رایج‌ترین مشکلات نصب Klipper روی Orange Pi، قطع و وصل مداوم USB بین Orange Pi و بورد پرینتر است. این مشکل خیلی آزاردهنده است چون Klipper دائماً Lost communication with MCU می‌ده.

نشانه‌ها:

# در dmesg بارها این رو می‌بینی:
usb usb4-port1: disabled by hub (EMI?), re-enabling...
USB disconnect, device number 68
new full-speed USB device number 69

دلایل و راه‌حل‌ها:

۱. کابل USB ضعیف یا بلند

رایج‌ترین علت. از یه کابل کوتاه (۳۰-۵۰ سانت) و باکیفیت استفاده کن. کابل‌های بلند افت ولتاژ ایجاد می‌کنند.

۲. منبع تغذیه ضعیف Orange Pi

اگر Orange Pi رو با یه آداپتور ضعیف (مثلاً ۵V ۱A) تغذیه می‌کنی، وقتی USB فعال می‌شه، ولتاژ می‌افته. حداقل ۵V 2A لازم است.

۳. تداخل الکترومغناطیسی (EMI)

کابل USB رو از سیم‌های موتور و هیتر دور نگه دار. اگر کنار سیم‌های فاز پرینتر هست، تداخل ایجاد می‌کنه.

۴. Backfeed از طریق USB

کابل USB ممکنه ۵V رو از SKR به Orange Pi (یا برعکس) منتقل کنه. این می‌تونه باعث ناپایداری بشه. می‌تونی یه کابل USB با سیم VCC قطع شده (data-only) استفاده کنی.

ترتیب پیشنهادی برای رفع:
۱. اول کابل USB رو عوض کن (کوتاه و خوب)
۲. آداپتور Orange Pi رو قوی‌تر کن (۵V 2A+)
۳. کابل رو از سیم‌های موتور دور کن
۴. اگر باز مشکل پابرجاست، کابل data-only امتحان کن

کالیبراسیون Input Shaping (بهبود چشمگیر کیفیت)

یکی از بزرگ‌ترین مزیت‌های Klipper نسبت به Marlin، قابلیت Input Shaping هست. این تکنیک لرزش‌های پرینتر رو در سرعت‌های بالا جبران می‌کنه و ghosting/ringing رو به‌شدت کاهش می‌ده.

روش ۱: با اداکلر (ADXL345)

  1. یه ماژول ADXL345 بگیر (هزینه‌ش حدود ۵۰-۸۰ هزار تومانه)
  2. طبق راهنمای رسمی وصلش کن به SKR Pro
  3. دستورات کالیبراسیون رو اجرا کن: MEASURE_AXES_NOISE و سپس TEST_RESONANCES AXIS=X و TEST_RESONANCES AXIS=Y
  4. نتیجه رو در printer.cfg ذخیره کن: [input_shaper]\nshaper_freq_x: ...\nshaper_freq_y: ...
  5. پرینتر رو restart کن

روش ۲: بدون اداکلر (دستی)

اگه اداکلر نداری، می‌تونی با چاپ یک مدل تست (رنگ‌های متوالی تند تند) و مشاهده ghosting، فرکانس شاپر رو دستی تنظیم کنی. شروع کن با:

[input_shaper]
shaper_type: mzv
shaper_freq_x: 35
shaper_freq_y: 35

بعد از فعال‌سازی، می‌تونی acceleration رو به ۳۰۰۰-۵۰۰۰ mm/s² افزایش بدی — بدون اینکه کیفیت چاپ بیفته.

تنظیم Pressure Advance (حذف زگیر و آکله)

Pressure Advance (PA) معادل linear advance در Marlin هست. این قابلیت جلوی blob و zit رو در نقاط شروع و توقف حرکت می‌گیره. برای تنظیم:

  1. دستور TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=0.005 رو اجرا کن
  2. یه مدل تست چاپ کن (مثلاً یه لوله توخالی)
  3. ارتفاعی که بهترین کیفیت رو داشت پیدا کن
  4. مقدار PA رو حساب کن: start + (height × factor)
  5. در [extruder] بخش قرار بده: pressure_advance: 0.045

برای Bowden معمولاً PA بین ۰.۰۴۰ تا ۰.۰۸۰، و برای Direct Drive بین ۰.۰۲۰ تا ۰.۰۴۰ هست.

ترفند: بعد از input shaping و pressure advance، پرینترت مثل یه دستگاه حرفه‌ای چاپ می‌کنه. سرعت ۲x با کیفیت بالاتر از Marlin — این بزرگ‌ترین دلیل مهاجرت به Klipper است.

کارهای بعد از نصب

وقتی Klipper نصب شد و مشکل USB هم حل شد، این کارها رو هم انجام بده:

  • PID Tune: PID_CALIBRATE HEATER=extruder TARGET=210 و PID_CALIBRATE HEATER=heater_bed TARGET=60
  • Bed Level: از BED_SCREWS_ADJUST یا SCREWS_TILT_CALCULATE استفاده کن
  • Bed Mesh: BED_MESH_CALIBRATE رو اجرا کن و در printer.cfg فعالش کن
  • Z Offset: با SET_GCODE_OFFSET Z_ADJUST=±0.05 MOVE=1 دقیق تنظیم کن
  • Macros: START_PRINT و END_PRINT ماکرو‌ها رو تعریف کن برای چاپ‌های اتوماتیک

سوالات متداول

آیا می‌تونم به Marlin برگردم؟

آره. کافیه firmware.bin مارلین رو دوباره روی SD Card بذاری و بورد رو ریست کن. همیشه قبل از نصب Klipper، از FIRMWARE.CUR روی SD Card بکاپ بگیر.

چه بوردهایی پشتیبانی می‌شن؟

اکثر بوردهای ۳۲-بیت: SKR Pro، SKR Mini، BTT Octopus، RAMPS، MKS Gen L، STM32F4، LPC1768 و بیشتر. برای لیست کامل به مستندات رسمی Klipper مراجعه کن.

آیا Klipper با هر پرینتری کار می‌کنه؟

Klipper با اکثر پرینترهای ۳۲-بیت کار می‌کنه. اگر پرینترت ۸-بیت است (مثلاً ATmega2560)، ممکنه کار کنه ولی به‌خاطر منابع محدود، پیشنهاد نمی‌شه.

تفاوت Mainsail و Fluidd چیه؟

هر دو Web Interface برای Klipper هستند. Mainsail کامل‌تر و حرفه‌ای‌تر است. Fluidd سبک‌تر و سریع‌تر است. هر دو رایگان و open-source هستند.

آیا Input Shaping به سخت‌افزار اضافه نیاز داره؟

نه الزاماً. Klipper از شتاب‌دهنده نرم‌افزاری (software-based) پشتیبانی می‌کنه. برای نتیجه بهتر، می‌تونی از ADXL345 استفاده کنی، ولی برای شروع، روش نرم‌افزاری (تعریف [resonance_tester] با وزنه) هم کافیه.


سوالی درباره نصب Klipper داری؟

دیمو، مشاور هوشمند چاپ سه‌بعدی، رایگان جواب میده

شروع گفتگو با دیمو ←

← بازگشت به همه مقاله‌ها   |   محاسبه قیمت آنلاین ←