چرا 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 با تجسم گرافیکی
پیشنیازها
برای نصب 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 |
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
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 Architecture | STMicroelectronics STM32 |
| Processor model | STM32F407 |
| Bootloader offset | 32KiB bootloader |
| Clock Reference | 8 MHz crystal |
| Communication interface | USB (PA11/PA12) |
بعد از تنظیم، ذخیره کن و خارج شو. سپس کامپایل کن:
make
فایل خروجی:
~/klipper/out/klipper.bin
این فایل حدود ۴۴KB خواهد بود (بسیار کوچکتر از Marlin).
مرحله ۳: فلش فریمور از طریق SD Card
بورد SKR Pro از فلش با SD Card پشتیبانی میکند. مراحل:
- فایل
klipper.binرو بهfirmware.binتغییر نام بده - فایل رو روی SD Card (فرمت FAT32) کپی کن
- SD Card رو از کامپیوتر بکش و داخل بورد پرینتر بذار
- پرینتر رو ریستارت کن (power off/on یا دکمه reset)
- ۲۰-۳۰ ثانیه صبر کن — بورد فریمور رو فلش میکنه
- SD Card رو بردار
اگر فلش موفق بوده، فایل firmware.bin روی SD Card به FIRMWARE.CUR تبدیل شده.
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 levelingSET_PRESSURE_ADVANCE ADVANCE=0.05— تنظیم Pressure AdvanceTUNING_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)
- یه ماژول ADXL345 بگیر (هزینهش حدود ۵۰-۸۰ هزار تومانه)
- طبق راهنمای رسمی وصلش کن به SKR Pro
- دستورات کالیبراسیون رو اجرا کن:
MEASURE_AXES_NOISEو سپسTEST_RESONANCES AXIS=XوTEST_RESONANCES AXIS=Y - نتیجه رو در
printer.cfgذخیره کن:[input_shaper]\nshaper_freq_x: ...\nshaper_freq_y: ... - پرینتر رو 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 رو در نقاط شروع و توقف حرکت میگیره. برای تنظیم:
- دستور
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=0.005رو اجرا کن - یه مدل تست چاپ کن (مثلاً یه لوله توخالی)
- ارتفاعی که بهترین کیفیت رو داشت پیدا کن
- مقدار PA رو حساب کن:
start + (height × factor) - در
[extruder]بخش قرار بده:pressure_advance: 0.045
برای Bowden معمولاً PA بین ۰.۰۴۰ تا ۰.۰۸۰، و برای Direct Drive بین ۰.۰۲۰ تا ۰.۰۴۰ هست.
کارهای بعد از نصب
وقتی 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 داری؟
دیمو، مشاور هوشمند چاپ سهبعدی، رایگان جواب میده
شروع گفتگو با دیمو ←