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

DIY 아두이노 USB 트랙패드 – 낡은 노트북 패드를 최신 입력 장치로 변환

부품 및 소모품

앱 및 온라인 서비스

프로젝트 개요

라즈베리 파이 신제품이 나올 때마다 노트북을 만들고 싶지만, 독립형 USB 트랙패드를 구하기 어렵습니다. 이 프로젝트에서는 고장 난 노트북에서 트랙패드를 적출해 Arduino Pro Micro로 USB 마우스로 변환합니다.

1단계: 부품 준비

Arduino Micro/Pro Micro/Leonardo만 HID 기능을 지원하므로 반드시 이 보드 중 하나를 사용해야 합니다. 트랙패드는 PS/2 인터페이스(데이터, 클럭 핀 보유) 타입이어야 합니다. 최신 노트북의 USB 인터페이스 트랙패드는 핀아웃만 알면 바로 USB 연결 가능하지만, 본 프로젝트는 일반적인 PS/2 타깃입니다.

2단계: 작동 원리

구형 노트북 트랙패드는 대부분 PS/2 인터페이스(데이터 T10, 클럭 T11, 전원 T20, 그라운드 대형 금속면)로 통신합니다. 아두이노가 PS/2 데이터를 읽어 USB 마우스 명령으로 변환해 컴퓨터에 전송합니다.

3단계: 배선

트랙패드 기판의 솔더 패드 4개(T10, T11, T20, 그라운드)에 와이어를 납땜합니다. 주의: 패드는 매우 약하므로 살짝만 눌려도 떨어집니다. 납땜 후 반드시 핫글루로 보강하세요.

트랙패드 패드아두이노 핀
T10 (데이터)핀 10
T11 (클럭)핀 9
T20 (전원)5V
그라운드 (대형 금속면)GND

4단계: 라이브러리 설치

Arduino IDE에 다음 두 라이브러리 설치 필요:

라이브러리 폴더에 압축 해제 후 IDE 재시작.

5단계: 코드 업로드

보드 매니저에서 Arduino Micro 또는 Leonardo 선택 필수. 다른 보드 선택 시 컴파일 오류 발생.

#include 
#include 

#define PS2_DATA 10
#define PS2_CLK 9

byte mstat1, mstat2, mxy, mx, my, mz;
int msval[2];
int repeatCnt;
PS2 moose(PS2_CLK, PS2_DATA);

void setup() {
  Mouse.begin();
  // PS/2 마우스 초기화 시퀀스 (리모트 모드, 해상도, 샘플레이트 설정 등)
  moose.write(0xff); moose.read(); moose.read(); moose.read();
  moose.write(0xf0); moose.read(); delayMicroseconds(100);
  moose.write(0xe8); moose.read(); moose.write(0x03); moose.read();
  moose.write(0xe8); moose.read(); moose.write(0x00); moose.read();
  moose.write(0xe8); moose.read(); moose.write(0x01); moose.read();
  moose.write(0xe8); moose.read(); moose.write(0x00); moose.read();
  moose.write(0xf3); moose.read(); moose.write(0x14); moose.read();
  Serial.begin(9600);
}

void ms_read() {
  moose.write(0xeb); moose.read();
  mstat1 = moose.read();
  mxy = moose.read();
  mz = moose.read();
  mstat2 = moose.read();
  mx = moose.read();
  my = moose.read();
  // 부호 비트 확장 및 12비트 값 조합
  msval[0] = (((mstat2 & 0x10) << 8) | ((mxy & 0x0F) << 8) | mx);
  msval[1] = (((mstat2 & 0x20) << 7) | ((mxy & 0xF0) << 4) | my);
  msval[2] = int(mz); // 스크롤/줌 데이터
}

void loop() {
  ms_read();
  // 노이즈 필터링: 같은 방향 3회 이상 지속 시에만 이동
  if (msval[0] > 0 && msval[2] > 10) repeatCnt++;
  else repeatCnt = 0;
  
  if (repeatCnt > 2) {
    // 원시 값을 마우스 이동 범위(-1023~1023)로 매핑 후 스케일 다운
    msval[0] = map(msval[0], 580, 5164, -1023, 1023);
    msval[1] = map(msval[1], 1120, 5967, 1023, -1023);
    Mouse.move(msval[0]/200, msval[1]/200);
  }
}

6단계: 완성 및 트러블슈팅

업로드 후 아두이노가 재부팅하며 USB 마우스로 인식됩니다. OS에 관계없이 즉시 작동.

궁금한 점은 댓글로 남겨주세요.

제조공정

  1. 블루투스 제어 라즈베리 파이 로봇 만들기 - 오디오 피드백 포함
  2. 제스처 제어 RGB 테이블 램프 – 인터랙티브 핸즈프리 조명
  3. 라즈베리파이 모터 쉴드로 만드는 안드로이드 제어 원격 주행 로봇
  4. 라즈베리 파이와 알렉사로 LED 제어하기 – 초보자를 위한 단계별 가이드
  5. 낡은 RC카를 아두이노와 엑스박스 컨트롤러로 조종하는 차량으로 개조하기
  6. 아두이노 메가 기반 닌텐도 눙크 컨트롤 6자유도 로봇 암 키트
  7. 아두이노 나노로 만드는 음성 제어 로봇 - 블루투스와 안드로이드 앱 활용
  8. MobBob: 아두이노 로봇 직접 만들기, 안드로이드 스마트폰으로 매끄럽게 제어
  9. 구글 어시스턴트와 블루투스로 음성 제어하는 홈 IoT: 아두이노 우노와 4채널 릴레이
  10. 피봇(PiBot): 아두이노 기반 88건반 피아노 연주 로봇