3D Printing Works

3D 프린터에 클리퍼 설치하기 6 (8비트 보드에 설치하기)

목정(睦靜) 2023. 7. 16. 11:44

최근에 나오는 3D 프린터는 32비트 보드를 사용하여 제작되는 경우가 대부분이고 64비트 보드를 사용한 프린터들도 출시가 되고 있습니다. 지난번에 "3D 프린터에 클리퍼 설치하기 2" 에서 킹룬의 KP3S에 클리퍼 펌웨어를 업로드 하는 것 까지 설명을 하였습니다. 이번에는 8비트 보드에 클리퍼를 설치하는 방법에 대해서 설명을 하려고 합니다. 구형의 엔더3 모델이나 CR10 같은 경우 그리고 좀 오래된 보드의 경우에 8비트 보드로 앞에서 설명한 방식으로 펌웨어가 플래싱이 되는 경우도 있고 되지 않는 경우도 있습니다. 엔더 3나 CR10에서 32비트 보드로 업그레이드 하신 분들은 다른 글을 참고해 주시기 바랍니다.

사실 잘못알려져 있는 부분이 32비트 이상의 보드에만 클리퍼를 설치할 수 있다는 것입니다. 권장이 32비트인 것은 맞지고 많은 유투버들이 32비트 보드에 클리퍼를 설치하는 영상을 올려서 그런것 같습니다. 그런데, 제가 클리퍼를 써보니 사실 라파의 MCU가 주로 많은 역할을 하고 3D 프린터 보드의 MCU는 거의 놀고 있는 것을 알게 되었습니다. 8비트 보드를 사용하는 분들의 경우에는 이런부분을 잘 활용하면 비용적 측면에서는 좀 더 괜찮은 접근이 되지 않을까 싶습니다.

먼저 한가지 문제점을 말씀 드리겠습니다. 8비트 보드 중에서 어떤 보드들은 클리퍼 펌웨어가 자동으로 플래시 되는 경우도 있지만 어떤 경우는 자동으로 플래시 되지 않는 경우가 있습니다. 자동으로 플래시 되지 않는 경우도 실제 있으며, 그 원인은 부트로더가 없는 보드인 경우입니다. 이 경우에는 별도로 아두이노 우노 보드 또는 아두이노 우노 호환보드를 사용하여 3D프린터 보드에 부트로더를 먼저 업로드하고 그 이후에 플래시를 해야하는 상황입니다. 여기서 두가지 선택지가 있습니다. 하나는 8비트 보드를 32비트 보드로 업그레이드 하는 것이고, 하나는 아두이노 우노보드를 구입하는 것입니다. 호환보드 같은 경우는 그리 큰 비용이 들지 않으니 구매하시어 해보시는 것도 나쁘지 않을 것 같습니다. 선택은 각자의 몫으로 남기고 이글에서는 8비트 보드 중에서 부트로더가 없어서 플래시가 자동으로 되지 않는 경우를 설명하도록 하겠습니다.

아래 사진은 저의 엔더3 보드입니다. Creality 3D V1.1.3 보드로 MCU 가까운 곳에서 찍었습니다. ATMEGA 1284P라고 적혀있네요. 우선 이 칩셋을 쓰는 보드의 경우에는 부트로더가 없는 보드로 아두이노 우노로 부트로더 업로드를 해야만 최종적으로 클리퍼 펌웨어가 플래시됩니다.

프린터에서 보드만 떼어네서 테스트용으로 구성해 보았습니다. 오른쪽에 라파가 있고 왼쪽이 엔더3 8비트 보드입니다. 라파의 USB 포트에서 연결만 해도 보드에 전원은 들어옵니다. LED가 동작하는 것을 보고 알 수 있습니다. 라파와 엔더3 보드를 연결할때는 USB 2.0 Mini 5핀으로 연결하였습니다. 케이블도 요즘에 흔히 사용하는 것이 아니라 추가로 구입했습니다.

우선 "3D 프린터에 클리퍼 설치하기 2"에서 라파이미져를 이용하여 마이크로 SD카드에 구운 이미지를 라파에 넣고 전원을 인가합니다. 크롬과 같은 웹브라우저에서 라파의 내부 IP를 입력하면 아래와 같은 화면이 나오게 됩니다. printer.cfg 파일이 없어서 그렇다고 나오는데, printer.cfg 파일만 업로드 한다고 해결되는 것은 아닙니다.

웹페이지를 하나더 여시고 example config 파일들이 있는 아래의 사이트에 접속합니다.

https://github.com/Klipper3d/klipper/tree/master/config

거기서 자신의 프린터 에 맞는 것을 선택합니다. 저같은 경우에는 2018년도에 제조된 초창기 엔더3 모델이네요. 5년이나 지났네요.

모델을 선택하면 아래와 같은 화면으로 바뀝니다. 거의 대부분의 cfg 파일 헤더부분에 주석처리가 되어 있는 보드에 대한 설명이 있습니다. 빨간색 박스에 AVR atmega1284p라고 되어있네요.

그리고 파란색 부분의 내용이 부트로더에 관한 내용입니다. 플래시가 자동으로 되지 않는 경우에는 다른 해결방안을 찾아야 하는 데, 그것이 아두이노 우노로 프린터 보드에 부트로더를 업로드 시키는 것입니다. 저같은 경우도 그렇게 해서 정상적으로 플래시를 했습니다. 그리고 오른쪽 상단의 화살표 있는 부분을 클릭하면 복사가 되는데, 메모장을 여시고 저장을 해놓으시면 됩니다. 저는 아래와 같이 저장해 놓았습니다.

첨부파일
ender3_v.1.1.3_printer.cfg
null파일 다운로드

클리퍼 공식홈페이지의 installation 페이지를 하나 열어 놓으시고 Putty로 라파에 접속합니다.

 
cd ~/klipper/
make menuconfig

위와 같이 입력하면 아래처럼 화면이 바뀌는데,

커서를 두번째로 옮기셔서 아래 그림처럼 선택해 주시고

그리고 아래 그림처럼 프로세서 모델을 atmega1284p로 선택하여 줍니다.

최종적으로 아래 그림처럼 세팅이 되면

Q를 누르면 아래 그림처럼 저장할거냐고 묻는데, Y를 입력하시면 됩니다.

그럼 아래 그림처럼 저장이 되었다는 화면이 나옵니다.

이제

make

를 입력하고 엔터를 치시면 아래 그림처럼 뭔가를 라파가 열심히 하고

최종적으로 hex 파일이 생성되면 완료된 것입니다. 이제

ls /dev/serial/by-id/*

를 입력하시면 아래의 USB 통신에 대한 포트 정보가 나오게 됩니다.

/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AC00ATU9-if00-port0

인데, 이것은 나중에 printer.cfg 파일을 설정할 때 넣게 됩니다.

이제

sudo service klipper stop
make flash FLASH_DEVICE=/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AC00ATU9-if00-port0
sudo service klipper start

을 한줄씩 실행시키면 되는데, 두번째 줄에서 에러가 납니다.

위그림 처럼 입력하면 에러가 나고 아두이노 우노를 이용해서 부트로더를 프린터 보드에 올리고 나서 다시 하면 제대로 아래 그림처럼 됩니다.

위와 같이 완료가 되어야만 정상적으로 플래시가 된것입니다. 이제

sudo service klipper start

을 입력하고 엔터를 치시면 엔더3 V1.1.3 보드에 클리퍼 펌웨어가 업로드 된 것입니다. 웹페이지에서 라파의 내부IP로 접속을 해보면 아래 오른쪽 빨간박스의 노란화살표 부분에 프린터 보드의 mcu정보가 정확하게 나오면 설치가 제대로 된것입니다.

이제 프린터 설정에서 앞에서 저장해 놓았던 ender3_v1.1.3_printer.cfg 파일을 업로드하시고 이름을 변경하여 printer.cfg로 바꿔줍니다. 그리고 printer.cfg 파일을 클릭하여 아래 그림처럼 수정해 줍니다.

앞에서 저장해 놓았던 USB 통신 포트 정보입니다. 이제 macos.cfg를 업로드 하면 Ender3 V1.1.3 8비트 보드에 클리퍼를 설치하는 것은 끝나게 됩니다.

이제 Ender3 V1.1.3 8비트 보드에 부트로더를 업로드 하는 방법에 대해 설명하겠습니다. 아두이노 우노보드 또는 호환보드가 필요합니다. 그 과정은 아래와 같습니다.

1. 아두이노 우노 보드를 Arduino ISP로 만듦

2. 아두이노 우노와 Ender-3 보드의 ISP 라인을 연결

3. 아두이노 우노를 Ender-3에 부트로더 굽기

아두이노 우노를 Arduino ISP로 만드는 방법은 아두이노 IDE를 실행한 후 메뉴 "파일" > "예제" > "11.ArduinoISP" > "ArduinoISP"를 차례로 선택하면됩니다. 아래 그림을 참고하세요.

프로젝트가 열리면 메뉴 툴에 위와 같이 보드와 포트 항목을 설정해 줍니다.

보드 : "Arduino/Genuino Uno"

포트 : COMx (포트 번호는 자신의 장치관리자에서 포트를 확인하면 됩니다. 만약 포트가 생성되지 않는 경우에는 드라이버를 하나 설치해 주셔야 합니다. 아래에 첨부합니다.)

첨부파일
CH341SER.zip
null파일 다운로드

아래 그림에서 편집 밑에 화살표를 클릭하면 업로드가 되고 아래쪽에 업로드 완료로 나옵니다.

이제 아두이노 우노는 Ender-3 보드에 부트로더를 올려줄 ISP가 되었습니다.

다음으로는 아두이노 우노와 Ender-3 보드를 연결을 해주어야 합니다. 아래사진의 왼쪽이 아두이노 우노이구요, 오른쪽이 프린터 보드입니다. 총 6개의 선으로 연결해야 하는데, 5개의 선은 암-암 듀폰단자케이블이 있어야 하고, 한개는 암-수 듀폰단자케이블이 있어야 합니다.

선 색깔대로 연결을 하면 되고, 프린터 보드의 사진의 보라색(Reset)은 아두이노 우노의 오른쪽 10번(D10)에 꽂으면 됩니다. 여기만 숫놈 핀입니다. 핀맵은 아래와 같습니다.

Ender-3      Arduino Uno

GND               GND

MOSI             MOSI

VCC               VCC

MISO             MISO

SCK               SCK

RESET           D10

ISP 연결이 다 되었으면 아두이노 우노의 USB 단자를 PC와 연결하여 전원을 공급됩니다.

이제 아두이노 ISP를 이용해 Ender-3 보드에 부트로더를 올리면 됩니다. 이에 앞서 두가지를 먼저 해야 합니다. (필요한 경우)

1. Marlin은 그래픽 라이브러리로 U8glib를 사용하고 있기 때문에 해당 라이브러리를 설치해줘야 빌드가 가능합니다.

아두이노 IDE에서 메뉴 "스케치" > "라이브러리 포함하기" > "라이브러리 관리..."를 차례로 선택하시면 됩니다.

라이브러리 매니저에서 "U8glib"를 검색해 "U8glib by oliver" 설치하세요. 시간이 다소 소요됩니다.

​2. Sanguino Board는 아두이노에서 공식 지원하는 보드가 아니어서 환경설정을 통해 "지원 보드 URL"을 추가해줘야만 보드 매니저에서 검색과 설치가 가능해집니다. 방법은 아래와 같습니다.

메뉴 "파일" > "환경설정" 선택하시면 됩니다.

"추가적인 보드 매니저 URLs" 항목에 아래의 링크를 추가합니다.

https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json

이제 부트로더를 업로드할 준비가 다 되었습니다. 아래 사진처럼 보드와 프로세서, 포트 그리고 프로그래머 설정을 맞춰주어야 합니다.

보드 : "Sanguino"

프로세서 : "ATmega1284 or ATmega1284P (16Mhz)"

포트 : "COMx ..."

프로그래머 : "Arduino as ISP"

설정이 다 되었으면 메뉴 "툴" > "부트 로터 굽기"를 선택하면 업로드가 시작 됩니다.

"부트로더 굽기 완료"라는 문구를 보시면 정상적으로 되신 겁니다.