본문 바로가기

▶3D 프린팅/삼디강좌

[김성민의 삼디 Life] LCD 메뉴 순서를 바꾸다 (Marlin 펌웨어 수정)

[김성민의 삼디 Life - Marlin 펌웨어 수정으로 메뉴 순서 바꾸기]



지난번 Marlin 펌웨어 수정을 통해 

Move 통한 노즐 위치제어 중 50mm 이동 메뉴 추가한 것에 이어서

메뉴 위치 변경에 도전해보았습니다. 


먼저 주의사항부터 언급하고 시작하고자 합니다.

Marlin 의 펌웨어 전체가 유기적으로 연결되어 있어서

잘못 건드리면 오작동을 일으킬 수도 있다는 사실을 인지해야 합니다. 


프로그램 언어를 아주 잘 다루시는 분이라면 상황에 대한 대처도 빠르게 할 수 있지만

저와 같이 1도 모르는 초보자들에게는 마음대로 만졌다가는 절망스러운 순간을 경험할 수도 있을 거라 봅니다. 

하지만, 우리에게는 백업이라는게 있잖습니까?

혹시 뭔가 잘못되면 복사해둔 펌웨어로 다시 업로드 하면 되니깐 너무 심각하게 생각은 하지 않고 접근해보려고요. ^^



1. 왜 메뉴를 바꾸려고 하는가?


LCD 메뉴의 순서를 바꾸면 좋겠다는 생각을 하게 된 것이 초기에 수동레벨링을 자주 하게 되면서 였습니다. 

지금은 안착도 그렇고 프린터의 위치도 고정적으로 안정이 되어 있는 상태라 필요성을 크게 느끼고 있진 않지만

처음에 빈번하게 레벨링을 하다보면 메뉴의 순서가 왜 이 모양이야? 라는 생각에 언젠가는 바꿔보고 싶었습니다. 


여러분은 수동레벨링을 어떻게 하시나요? 


저는 이런 순서로 진행합니다.


<수동레벨링 순서>


1. Auto Home 을 눌러서 노즐을 기준위치로 보낸다. (z 높이를 0 으로 보냄)

2. Disable steppers 를 눌러서 모든 스테퍼를 손으로 움직일 수 있도록 만든다.

3. 베드위에 종이 한장 끼우고 노즐을 베드의 네 귀퉁이로 보내어 베드 높이 조절나사를 돌리면서 노즐과 종이사이의 적절한 마찰이 있을정도에서 멈춘다.

4. 3번 행동을 한차례 더 해준다. (한쪽 귀퉁이를 맞추면서 다른 곳의 높이도 미세하게 달라져 있을 수 있기 때문)

5. 1 ~ 3 의 과정을 반복해서 확인한다. 


이렇게 하고 있는데요.. 

레벨링 잡는데 시간은 5분 미만으로 그리 오래 걸리지는 않지만 (처음에는 Z end stop 위치 조정한다고 시간이 더 걸렸긴 했네요)

버튼을 꾹꾹 눌러서 해당 메뉴를 찾는것이 여간 번거로운게 아니었습니다. 

그 중에서 Auto Home 이후 Disable steppers 를 누르려면 아래 버튼을 두번을 더 눌러 가려진 아래쪽 메뉴로 이동해 Disable steppers 를 찾은 다음에 눌러줘야 했지요. 



맞습니다. 별거 아닌것에 신경을 다 쓰고 있네요..  

Set home offsets 라는 메뉴는 이제껏 한번도 써보지 않은 메뉴고 앞으로도 쓸 일이 없겠다 싶어서 저걸 맨뒤나 적어도 Disable steppers 밑으로 보내고 싶어졌습니다. 


지난번 신규 메뉴도 추가를 했겠다. 이번에 메뉴의 위치만 바꾸는데 뭐가 어렵겠느냐 싶어서 시도를 해보았던 것이죠.



2. 뭘 바꿔야 하는것인가?


앞선 글에서도 언급을 했다시피 저는 펌웨어에 대한 깊은 지식이 전혀 없습니다.  파일 개수만 해도 100개가 넘는걸 다 읽어볼 수도 없거니와 읽어도 무슨 말인지 모르지요. 

그래서 방법을 딱 내가 바꿀 수 있는 것만을 만지는 선에서 시도를 해본 것입니다. (물론 그게 가능한지는 해보기 전까지는 몰랐지요. 실패하면 백업파일이 있으니깐요. ^^)


접근 방법은 지난번 메뉴 추가와 동일합니다.

LCD 에 메뉴 이름이 있다는 것은 펌웨어 어딘가에 그것을 그 자리에 기록하라는 코딩 언어가 있다는 것이고

저는 그 언어가 있는 위치를 찾아가서 순서만 바꿔주면 되는 것이었습니다. 

이것을 언급하는 이유는 저와 같이 레벨링시 귀찮음에 의해 메뉴를 조정하려고 하시는 분이 아니라 예를 들어 베드 온도를 높이는 메뉴를 Prepare 밖에 빼놓고 싶다거나 할 경우에도 참조하시면 어떨까 싶었기 때문입니다. 


바꾸려는게 Set home offsets 와 Disable steppers 메뉴였으니 marlin (skynet3d도 동일) 펌웨어에서 '찾기'를 통해 찾아보았습니다. 

몇가지가 나왔는데, 지난번 메뉴 추가시 찾아낸 Ultralcd.cpp 파일내에서 발견이 되었습니다.  가만히 살펴보니 LCD 상에 무언가를 나타내보이는 것은 Ultralcd.cpp 내에서 모두 관장을 하고 있는게 아닌가 싶었습니다. 



빨간색 파란색으로 표시한 부분이 Set home offsets 와 Disable Steppers 였습니다. 친절하게도 주석으로 구분이 되어 있네요.

그리고 그 위로는 Auto Home 이 있는 것으로 보아 제가 보고 있는 LCD 의 메뉴를 이곳에서 처리해주는 것이 맞을 거라고 생각이 들었습니다. 



3. 수정 그리고 결과


그렇게 추측하고 나서 제가 한것은 아래와 같이 두 부분의 위치만 바꾸어 놓은 것입니다. 



이러면 어떻게 될까? 


그 결과는 LCD 창을 찍은 사진으로 보여드리겠습니다.  

짜짠~



Auto home 과 Disable steppers 가 나란히 메뉴에 등장했습니다. 

이제는 Auto home 을 누르고 나자마자

한칸 아래로 내려와 Disable steppers 를 막바로 누르면 되겠네요.


이미 경험으로 아시는 분도 계시겠지만

Marlin 에서는 눌러진 명령을 기억하고 있다가 순차적으로 처리를 합니다.

그래서, Auto home 을 누르고 모든 축이 home 위치로 간 것을 보고 나서 Disable steppers 를 누르는게 아니라, Auto home 누르자 마자 Disable stepper 를 눌러놓으면 갑자기 모터가 멈추는것이 아니라 Auto home 을 다 하고 나서 Disable steppers 가 되기 때문에 그 사이에 레벨링을 위한 다른 준비를 하시면 되겠습니다. 


이상으로 간단하게 Marlin 펌웨어를 수정하여 메뉴 위치를 바꾸는 법에 대한 글을 마치겠습니다. 


감사합니다. 






김성민의 북리지 - 함께 성장하는 책 리더십 지혜