[DIY 3D Printer] 1. Klipper 설치

[DIY 3D Printer] 1. Klipper 설치

3D 프린터 성능이 향상되며 Marlin 같은 one-board방식은 연산 능력에 한계가 생겼다.

Klipper는 성능이 뛰어난 Raspberry pi같은 SBC Host에서 복잡한 연산을 담당하고,
기존의 Marlin이 올라가던 mainboard에서는 단순한 제어만을 담당하는 방식으로 기존의 한계를 해결했다.

기존 mainsail에서는 설정 값을 바꾸러면 일일히 전체 펌웨어를 다 빌드해야 했지만,
Klipper는 웹 콘솔 상에서 printer.cfg파일만 수정하면 설정이 즉시 반영된다.
뛰어난 성능을 기반으로 Input Shaping, Pressure Advance등을 통해 출력물의 퀄리티를 높일 수 있고,
Mainsail, Fluidd와 같은 직관적이고 현대적인 인터페이스를 사용할 수 있다.

이번 시리즈에서는 최근 3D Printer 트렌드에 맞춰 CAN bus를 이용한 다중 MCU 구성으로 Klipper 설치 과정에 대해 포스팅 하겠다.

준비물

  • Raspberry Pi (3B+ 이상 권장)
  • SD card
  • Printer main board
  • USB to CAN (main board에 CAN port가 있다면 불필요)
  • Can expanson board (EBB36, EBB SB2209 등 ...)

이번 포스팅에서는 Raspberry Pi 4, BTT Octopus Pro, BTT ebb36을 사용 할 것이다.

Klipper 설치

OS 굽기

https://www.raspberrypi.com/software/

위 사이트에서 Raspberri Pi 공식 imager를 다운받는다.

RPI imager

사용할 Rpi에 맞는 디바이스를 선택한 후 RASPBERRY PI OS를 선택한다.
OS에서 Other specific-purpose OS -> 3D printing -> Mainsail OS로
klipper + mainsail이 설치된 환경을 바로 사용할 수 있지만 완벽한 제어를 위해 RASPBERRY PI OS를 설치한 후 그 위에 Kiauh로 Klipper를 설치할 것이다.

OS 커스터마이징을 통해 사용자 이름, 비밀번호, SSH등을 설정 후 SD카드에 OS 이미지를 올린다.

SSH 설정 방법은 여기로

SSH로 원격접속하기 A to Z (Key, Config)
Password 방식 부터 Private Key / Public Key로 Password 없이 사용하는 방법 그리고 config 파일 생성까지 알아보겠습니다

KIAUH 설치

플래시된 SD카드를 Rpi에 꽂고 부팅한 뒤 SSH로 접속한다.

KIAUH(Klipper Installation And Update Helper)를 통해 Klipper와 Mainsail을 설치 할 것이다.

GitHub - dw-0/kiauh: Klipper Installation And Update Helper
Klipper Installation And Update Helper. Contribute to dw-0/kiauh development by creating an account on GitHub.
  1. Git 설치
sudo apt-get update && sudo apt-get install git -y
  1. KIAUH 레포지토리 clone
cd ~ && git clone https://github.com/dw-0/kiauh.git
  1. KIAUH 스크립트 실행
./kiauh/kiauh.sh 

스크립트를 실행하면 아래와 같은 화면이 뜰 것이다.

KIAUH 스크립트 실행 화면

1번을 입력해서 Install 메뉴로 들어간다.

KIAUH Inastall 메뉴

1번 Klipper, 2번 Moonraker, 3번 Mainsail, 8번 Crowsnest을 설치한다.

설치시 옵션은 아래와 같이 한다.

Klipper:
###### Number of Klipper instances to set up (default=1): 1
###### Create example printer.cfg? (Y/n): y

Moonraker:
###### Create example moonraker.conf? (Y/n): y

Mainsail:
###### Download the recommended Mainsail-Config? (Y/n): y
###### Configure Mainsail for port (default=80): 80

Crowsnest:
Do you want to add 'update manager' entry to your moonraker.conf? [Y/n]: Y
KIAUH 설치 후

설치를 마치면 b -> q로 KIAUH스크립트를 종료한다.

메인보드에 Firmware 올리기

config 설정

cd ~/klipper/
make menuconfig

Klipper Firmware Configuration 화면이 뜬다.
자신의 메인보드에 맞게 설정한다. 주로 제조사의 git hub에서 찾을 수 있다.

Klipper Firmware Configuration

Octopus Pro(H723)의 구성이다.
Communication interface는 CAN bus 구성을 사용할 예정이므로 USB to CAN bus bridge를 선택한다.
CAN bus interface는 Rpi가 아닌 다른 보드들과 연결할 pin을 선택한다.
다른 보드와 CAN bus 구성할 핀을 CAN bus interface에서 선택한다.

q -> y로 저장 후 나간다.

Firmware build

make

make 하면 ~/klipper/out/klipper.bin에 firmware가 생성된다.

생성된 Firmware 메인보드에 플래시

Firmware를 메인보드에 올리는 방법은 제조사, 메인보드마다 모두 다르다.
메인보드에 맞는 방법으로 생성된 klipper.bin을 올려주면 된다.

Octopus pro의 경우 SD카드와 DFU 방식으로 펌웨어를 올릴 수 있는데, SD카드를 사용해 펌웨어를 올려보겠다.

  1. scp로 klipper.bin 컴퓨터로 가져오기
scp [Rpi User]@[Rpi IP]:/home/[User]/klipper/out/klipper.bin [local directory]

scp 사용법을 모른다면 별로 어렵지 않으니 검색을 통해 찾아보길 바란다.

  1. SD카드에 옮기기

FAT32로 포맷된 새 SD카드에 klipper.bin을 옮긴 뒤 firmware.bin으로 이름을 바꾼다.

  1. Octopus Pro에 연결

Octopus Pro에 SD카드를 꽂은 뒤 파워를 올리면 자동으로 펌웨어가 올라간다.
펌웨어가 다 올라갔다는 신호가 딱히 없어서 넉넉하게 3분 정도 기다린다.
전원을 끄고 SD카드를 뺀 뒤 다시 컴퓨터에 연결 해 봤을 때 FIRMWARE.CUR파일이 남아있다면 정상적으로 펌웨어가 올라간 것이다.

Mainboard 연결 확인

Rpi에 mainboard를 USB로 연결한다.

firmware가 정상적으로 올라갔다면 Rpi에서 mainboard가 CAN adapter로 인식 될 것이다

lsusb
lsusb

Klipper 설치 및 mainboard 펌웨어 플래시까지 성공했다.
다음 포스팅에서는 CAN bus를 이용한 다중 MCU 연결에 대해 알아보겠다.

[DIY 3D Printer] 2. Klipper CAN bus 구성
3D프린터를 만들다 보면 toolhead로 가는 배선들이 굉장히 거슬린다. hotend heater, thermistor, probe, heater / parts fan 만 해도 기본 11가닥이고, rgb led, input shaper를 위한 가속도 센서까지 추가되면 20가닥부터 시작은 기본이다. 이 케이블들은 서로 얽혀 유지보수를 어렵게 만들 뿐만 아니라 그 자체로 뻣뻣하여 고속 프린팅을 방해한다. 이번 포스팅에선 CAN bus를 구성해

Reference :
Klipper 공식 Documentation