目录

3D 打印机控制器实战:Klipper 固件移植,让老打印机焕发新生

## 为什么要把 3D 打印机升级到 Klipper?

如果你还在用 Marlin 固件跑 3D 打印机,那你可能错过了一个提升打印质量的机会。Klipper 是近年来最火的 3D 打印机固件,它的核心思路很聪明:**把繁重的计算任务从打印机主板移到性能更强的上位机(比如树莓派)上**。

这样做有什么好处?

– **更高的步进频率**:Marlin 在 8 位主板上最高只能跑到 50kHz,Klipper 轻松突破 100kHz
– **更平滑的运动控制**:输入整形(Input Shaping)消除共振,打印速度提升 30-50%
– **更丰富的功能**:压力提前(Pressure Advance)、网格调平、宏命令
– **更方便的配置**:配置文件修改后重启即可,不用重新编译固件

我手里有一台老款的 Ender 3,原厂主板是 8 位的 ATmega2560,用 Marlin 跑起来总是有奇怪的共振纹路。这次就用树莓派 Zero 2 W + Klipper 给它来个大升级,总成本不到 200 元。

## 需要准备什么?

| 物品 | 型号/规格 | 价格 |
|——|———-|——|
| 单板计算机 | 树莓派 Zero 2 W | ¥120 |
| MicroSD 卡 | 16GB Class10 | ¥25 |
| USB 数据线 | Micro-USB 转 USB-A | ¥10 |
| 杜邦线 | 公对母 20cm 10 根 | ¥15 |
| 散热片 | 树莓派 Zero 专用 | ¥10 |
| 外壳 | 3D 打印或亚克力 | ¥20 |
| **总计** | | **¥200** |

**注意:** 如果你已经有树莓派(任何型号都可以),那成本更低。Zero 2 W 的优势是体积小,可以直接贴在打印机外壳上。

## 步骤 1:安装 Klipper 固件

Klipper 由两部分组成:**上位机服务**(运行在树莓派上)和**下位机固件**(烧录到打印机主板)。我们先安装上位机。

### 1.1 刷写系统镜像

推荐使用 Kiauh 安装脚本,它会自动处理所有依赖。首先在树莓派上刷写 Raspberry Pi OS Lite 镜像:

“`bash
# 下载镜像(建议使用 Lite 版本,不需要桌面环境)
wget https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2024-01-22/2024-01-22-raspios-bookworm-armhf-lite.img.xz

# 解压
unxz 2024-01-22-raspios-bookworm-armhf-lite.img.xz

# 刷写到 SD 卡(替换 /dev/sdX 为你的 SD 卡设备)
sudo dd if=2024-01-22-raspios-bookworm-armhf-lite.img of=/dev/sdX bs=4M status=progress
sync
“`

### 1.2 运行 Kiauh 安装脚本

启动树莓派后,SSH 登录并运行:

“`bash
# 更新系统
sudo apt update && sudo apt upgrade -y

# 下载 Kiauh
cd ~
git clone https://github.com/th33xitus/kiauh.git

# 运行安装脚本
./kiauh/kiauh.sh
“`

在 Kiauh 菜单中:
1. 选择 `[1] Install Klipper`
2. 选择用户(默认 pi)
3. 等待自动安装完成

**注意事项:** ⚠️ 安装过程中会编译 Klipper,树莓派 Zero 2 W 大约需要 10-15 分钟,让它发热吧,别发光就好。

### 1.3 安装 Moonraker(API 服务)

Moonraker 是 Klipper 的 API 服务,让 Web 界面(Mainsail/Fluidd)能够与 Klipper 通信:

“`bash
# 在 Kiauh 菜单中选择 [2] Install Moonraker
“`

### 1.4 安装 Web 界面

推荐使用 Mainsail,界面简洁功能全:

“`bash
# 在 Kiauh 菜单中选择 [3] Install Mainsail
“`

安装完成后,在浏览器访问 `http://树莓派 IP 地址` 就能看到 Mainsail 界面了。

## 步骤 2:配置打印机

### 2.1 编译下位机固件

不同打印机主板需要不同的固件。以 Ender 3(STM32F103 主板)为例:

“`bash
# 进入 Klipper 目录
cd ~/klipper

# 配置固件
make menuconfig
“`

配置选项:
– **Micro-controller Architecture**: STM32
– **Processor model**: STM32F103
– **Bootloader offset**: 28KiB bootloader
– **Communication interface**: Serial

保存后编译:

“`bash
make clean
make -j4
“`

编译完成后,固件位于 `~/klipper/out/klipper.bin`。

### 2.2 烧录固件

将 `klipper.bin` 复制到 SD 卡根目录(打印机主板通常支持 SD 卡刷机),插入打印机主板,上电后会自动刷写。

**或者** 使用 dfu-util 通过 USB 烧录(如果主板支持 DFU):

“`bash
sudo dfu-util -d 1209:0003 -a 0 -s 0x08000000:leave -D ~/klipper/out/klipper.bin
“`

### 2.3 创建打印机配置文件

在树莓派上创建配置文件 `~/printer_data/config/printer.cfg`:

“`ini
# Ender 3 基础配置
[stepper_x]
step_pin: PB9
dir_pin: PB8
enable_pin: !PB7
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC5
position_endstop: 0
position_max: 235
homing_speed: 50

[stepper_y]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PB4
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC4
position_endstop: 0
position_max: 235
homing_speed: 50

[stepper_z]
step_pin: PB3
dir_pin: !PB2
enable_pin: !PC15
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop
position_max: 250
homing_speed: 10

[extruder]
step_pin: PC14
dir_pin: PC13
enable_pin: !PC12
microsteps: 16
rotation_distance: 33.5
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC3
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 250

[heater_bed]
heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC2
control: pid
pid_Kp: 54.027
pid_Ki: 0.770
pid_Kd: 948.182
min_temp: 0
max_temp: 130

[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32f103xe_若十十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若十若

更多关于 的文章
关注创客出手公众号

关注创客出手