산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

커스텀 아두이노 HID CNC 펜던트: 저렴한 DIY 컨트롤러 제작기

부품 및 소모품

아두이노 레오나르도 (또는 32u4 칩 탑재 보드: 마이크로, 프로 마이크로 등)×1
모멘터리 푸시버튼 (LED 내장, 라벨 부착 가능) - 20개×20

프로젝트 동기

직접 만든 우드 CNC 머신에 맞는 펜던트가 필요했습니다. 상용 펜던트는 100유로 이상인데 버튼 2개와 핸드휠뿐이지만, 직접 만들면 23개 버튼 × 6기능(싱글/더블/트리플 클릭, 홀드 조합) = 138기능에 핸드휠까지 넣을 수 있습니다. 크고 무거워 보이지만 핸드휠 돌릴 때 밀리지 않아 오히려 편합니다.

커스텀 아두이노 HID CNC 펜던트: 저렴한 DIY 컨트롤러 제작기

작동 원리: 아두이노 레오나르도의 HID 기능

ATmega32u4 칩(레오나르도, 마이크로 등)은 USB HID(키보드/마우스) 에뮬레이션이 가능합니다. PC에 연결하면 키보드로 인식되어, 버튼 누름 → 키스트로크 전송 → CNC 소프트웨어(Eding CNC 등) 단축키 실행이 이루어집니다.

핵심 라이브러리: ClickButton (디바운스, 멀티클릭, 롱클릭 자동 처리)

기본 타이밍: 클릭 인식 ≥250ms, 홀드 인식 ≥1000ms (조정 가능)

케이스 제작: 마호가니 목재 + CNC 가공

Vectric Cut2D로 설계, CNC로 양면 가공. 샌딩 후 다중 바니시 코팅으로 마감. 두께 36.5mm로 버튼 높이 확보.

커스텀 아두이노 HID CNC 펜던트: 저렴한 DIY 컨트롤러 제작기

스위치 및 라벨

핸드휠 (MPG)

표준 60mm 100PPR 6단자 전자식 핸드휠. CNC 소프트웨어에서 PPR 설정 가능.

전자 회로

아두이노 레오나르도 23개 입력 핀 활용 (디지털 0~13, 아날로그 A0~A5). 모든 스위치 한 쪽은 GND, 다른 쪽은 입력 핀에 직결 (내장 풀업 사용). 총 소비전류 약 150mA (LED 켠 상태).

커스텀 아두이노 HID CNC 펜던트: 저렴한 DIY 컨트롤러 제작기

프로그래밍 방법

펜던트를 CNC 전원에 연결한 상태에서 USB로 PC와 연결해 아두이노 IDE로 업로드. 다른 PC(노트북)로 프로그래밍할 때도 펜던트 전원은 CNC에서 공급받은 상태 유지.

코드: CNC 펜던트 펌웨어

ClickButton 라이브러리 필수 (ClickButton.h 포함). 아래는 주요 구조와 X축 버튼 예시입니다.

#include <ClickButton.h>
#include <Keyboard.h>

const int buttons = 20;
ClickButton button[21] = {
  ClickButton(0, LOW, CLICKBTN_PULLUP), // dummy (1부터 시작)
  ClickButton(0, LOW, CLICKBTN_PULLUP), // Pin 0
  ClickButton(1, LOW, CLICKBTN_PULLUP), // Pin 1
  // ... Pin 2~13
  ClickButton(12, LOW, CLICKBTN_PULLUP),
  ClickButton(13, LOW, CLICKBTN_PULLUP),
  ClickButton(A0, LOW, CLICKBTN_PULLUP), // Pin 15
  ClickButton(A1, LOW, CLICKBTN_PULLUP), // Pin 16
  ClickButton(A2, LOW, CLICKBTN_PULLUP), // Pin 17
  ClickButton(A3, LOW, CLICKBTN_PULLUP), // Pin 18
  ClickButton(A4, LOW, CLICKBTN_PULLUP), // Pin 19
  ClickButton(A5, LOW, CLICKBTN_PULLUP)  // Pin 20
};

long aux1_delay = 0;

void setup() {
  for (int i = 1; i <= buttons; i++) {
    button[i].debounceTime = 20;
    button[i].multiclickTime = 250;
    button[i].longClickTime = 1000;
  }
}

void loop() {
  for (int i = 1; i <= buttons; i++) button[i].Update();
  
  // 버튼 1: 리셋(F1) / ESC / 드라이버 끄기(홀드)
  if (button[1].clicks != 0) {
    switch (button[1].clicks) {
      case 1: press_RESET(); break;           // F1
      case 2: press_ESC(); break;
      case -1: press_ESC(); goto_MACHINE_IO_MENU(); press_F2(); goto_MAIN_MENU(); break;
    }
  }
  
  // 버튼 13: X축 핸드휠 / X축 제로 / X축 워크제로 이동(홀드)
  if (button[13].clicks != 0) {
    switch (button[13].clicks) {
      case 1: shortcut_HANDWHEEL_X(); break;      // Ctrl+Shift+X
      case 2: shortcut_ZERO_X(); break;           // Ctrl+1
      case -1: press_ESC(); goto_MAIN_MENU(); user_MACRO_18(); break; // G0 X0
    }
  }
  
  // 버튼 14: Y축 핸드휠 / Y축 제로 / Y축 워크제로 이동(홀드)
  // 버튼 15: Z축 핸드휠 / Z축 제로 / Z축 머신업 위치(홀드)
  // 버튼 17~19: 핸드휠 배율 1x/10x/100x
  // 버튼 20: 머신/워크 좌표 토글
  // ... 나머지 버튼들 유사 패턴
}

// 키보드 단축키 함수들 예시
void press_RESET() { Keyboard.begin(); Keyboard.press(KEY_F1); delay(100); Keyboard.releaseAll(); }
void press_ESC() { Keyboard.begin(); Keyboard.press(KEY_ESC); delay(100); Keyboard.releaseAll(); }
void goto_MAIN_MENU() { Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_F1); delay(100); Keyboard.releaseAll(); }
void shortcut_HANDWHEEL_X() { Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_LEFT_SHIFT); Keyboard.press('x'); delay(100); Keyboard.releaseAll(); }
void shortcut_ZERO_X() { Keyboard.begin(); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('1'); delay(100); Keyboard.releaseAll(); }
void user_MACRO_18() { Keyboard.begin(); Keyboard.press(KEY_LEFT_ALT); Keyboard.press('1'); delay(100); Keyboard.releaseAll(); } // Alt+1 (사용자 매크로 18)
// ... 기타 단축키 함수들 생략

전체 코드는 첨부 파일(cnc_pendant_SenmxC8UCj.zip) 또는 원문 참조. 사용자 매크로 1~20, 메뉴 이동, 플러드/미스트 토글 등 모든 기능 포함.

필수 라이브러리

회로도

커스텀 아두이노 HID CNC 펜던트: 저렴한 DIY 컨트롤러 제작기

간단한 회로: 모든 버튼 한 쪽 GND, 다른 쪽 아두이노 핀 직결. 핸드휠은 별도 인코더 인터페이스 필요 (코드 미포함, 소프트웨어 측에서 처리).

CAD 파일

요약

상용 제품 1/10 비용으로 기능은 10배 이상인 CNC 펜던트를 아두이노 레오나르도 HID 기능으로 제작했습니다. ClickButton 라이브러리로 버튼당 6기능 할당이 핵심입니다. 목재 케이스로 그립감과 안정감도 훌륭합니다.

제조공정

  1. 단추: 고대 잠금장치에서 현대 혁신까지
  2. 아두이노 메가에서 푸시 버튼으로 PWM을 이용해 LED 밝기 제어하기
  3. 블루투스 제어 아두이노 스파이봇(Spybot) 만들기
  4. 플릭모트(FlickMote): 스마트 홈을 위한 제스처 제어 IR 리모컨
  5. DIY 아두이노 TV B-Gone: 모든 TV를 끄는 만능 리모컨
  6. 아두이노로 만드는 대형 LED 마스터 시계 (알람 기능 포함, 12m 거리에서도 식별 가능)
  7. 아두이노와 블루투스로 만드는 스마트 물건 찾기 'Find Me'
  8. 아두이노로 만드는 맞춤형 '펀처블' 키보드 버튼: 단계별 가이드
  9. Osai USA OPENwiTP: 효율적 CNC 제어 위한 무선 티칭 펜던트
  10. CNC 조작판 리셋 버튼 이해하기: 기능과 사용법