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

DIY 아두이노 USB 게임 컨트롤러 - 나만의 고성능 게임패드 만들기

부품 및 소모품

스파크펀 Pro Micro - 5V/16MHz ×1
아두이노 레오나르도
Pro Micro 또는 Atmega32U 기반 보드면 모두 가능
×1
스파크펀 푸시버튼 스위치 12mm (택트 스위치) ×12
저항 10kΩ ×1
커스텀 에칭 PCB
첨부된 PCB PDF 파일로 직접 제작 가능
×1
UTSOURCE 전자 부품
본 프로젝트용 모든 전자 부품 공급
×1

필요 도구 및 장비

앱 및 온라인 서비스

프로젝트 소개

영상

프로젝트 영상을 먼저 보시길 권장합니다.

소개

ElectroPunkz Labs에서 최근 작업한 "DIY 게이밍 USB 컨트롤러" 프로젝트입니다.

아이디어: 버튼과 아날로그 조이스틱을 갖춘 저렴한 Atmega32U 기반 USB 컨트롤러를 만들어 NFS, GTA, 하프라이프, 리틀 파이터 2 같은 게임을 즐기기.

두 가지 폼팩터로 제작: 첫 번째는 PS1/SNES 스타일, 두 번째는 아날로그 스틱과 버튼을 갖춘 정통 Xbox 스타일 USB 컨트롤러(아직 미완성).

DIY 아두이노 USB 게임 컨트롤러 - 나만의 고성능 게임패드 만들기

이 글에선 V1인 PS1 레이아웃 컨트롤러를 만듭니다.

재료

하드웨어는 간단하고 구하기 쉽습니다(PCB 제외, 첨부된 PDF로 직접 제작 가능).

UTSOURCE.net에서 본 프로젝트용 전자 부품 후원받았습니다. UTSOURCE.net에서 다양한 전자 부품 구매 가능합니다.

제작 과정 (배선, 조립 등)

기본 셋업 준비: 12개 푸시버튼을 Pro Micro와 풀다운 구성으로 연결. 회로도는 위와 같습니다.

브레드보드에서 테스트 후 위 회로도대로 PCB 제작.

DIY 아두이노 USB 게임 컨트롤러 - 나만의 고성능 게임패드 만들기
DIY 아두이노 USB 게임 컨트롤러 - 나만의 고성능 게임패드 만들기

OrCAD 캔던스로 PCB 설계 후 탑 레이어 PDF를 광택지에 출력.

광택지를 PCB 모양대로 잘라 동판 위에 올리고 열을 가해 잉크를 동판에 전사 (기본 토너 전사법, 제 영상 참고).

DIY 아두이노 USB 게임 컨트롤러 - 나만의 고성능 게임패드 만들기

에칭액에 담가 PCB 에칭, 부품용 구멍 뚫으면 DIY 게임 컨트롤러 PCB 완성!

회로도에 맞춰 부품 실장하면 회로 완성.

회로 완성 후 퓨전 360으로 PCB 하우징/케이스 설계 및 3D 프린팅.

DIY 아두이노 USB 게임 컨트롤러 - 나만의 고성능 게임패드 만들기

이제 코드 업로드하고 게임 즐기기만 남았습니다.

코드

Pro Micro에 제공된 코드 업로드.

조언: 보드/셋업 철저히 테스트하세요. PCB 트레이스의 저항과 연결성 확인 필수. 그라운드 라인 누락 시 핀에 불규칙 신호가 가 Pro Micro가 랜덤 키를 계속 누르게 돼 재프로그래밍이 매우 어려워집니다.

테스트

메모장 열고 컨트롤러 키 눌러 할당된 문자가 제대로 나오는지 확인. 또는 키보드 테스트 앱/웹앱 활용.

코드대로 잘 작동하면 아무 게임이나 실행해 DIY 게이밍 콘솔로 플레이!

영상 참고하세요.

향후 개선 사항

아날로그 조이스틱 추가해 마우스로 플레이어 이동하는 게임(엑스박스 원 컨트롤러 스타일) 제대로 즐길 수 있게 할 예정.

V2는 엑스박스 원 컨트롤러 레이아웃의 제대로 된 PCB로 제작 예정. 기대해주세요.

문제 있으면 댓글 남겨주세요!

코드

CODE C/C++

#include 

int WPin = 2;   // UP
int SPin = 3;   // DOWN
int APin = 4;   // LEFT
int DPin = 5;   // RIGHT
int UPLpin = 7; // upper left Q
int UPRpin = 9; // upper right E
int Xpin = 14;  // X
int Apin = 10;  // I
int Ypin = 15;  // Y
int Bpin = 16;  // B

void setup() {
  pinMode(WPin, INPUT);
  pinMode(SPin, INPUT);
  pinMode(APin, INPUT);
  pinMode(DPin, INPUT);
  pinMode(UPLpin, INPUT);
  pinMode(UPRpin, INPUT);
  pinMode(Xpin, INPUT);
  pinMode(Apin, INPUT);
  pinMode(Ypin, INPUT);
  pinMode(Bpin, INPUT);
  
  digitalWrite(WPin, HIGH);
  digitalWrite(SPin, HIGH);
  digitalWrite(APin, HIGH);
  digitalWrite(DPin, HIGH);
  digitalWrite(UPLpin, HIGH);
  digitalWrite(UPRpin, HIGH);
  digitalWrite(Xpin, HIGH);
  digitalWrite(Apin, HIGH);
  digitalWrite(Ypin, HIGH);
  digitalWrite(Bpin, HIGH);
  
  Keyboard.begin();
}

void loop() {
  if (digitalRead(WPin) == 0) { Keyboard.write('W'); delayMicroseconds(1); }
  if (digitalRead(SPin) == 0) { Keyboard.write('S'); delayMicroseconds(1); }
  if (digitalRead(APin) == 0) { Keyboard.write('A'); delayMicroseconds(1); }
  if (digitalRead(DPin) == 0) { Keyboard.write('D'); delayMicroseconds(1); }
  if (digitalRead(UPLpin) == 0) { Keyboard.write('q'); delayMicroseconds(1); }
  if (digitalRead(UPRpin) == 0) { Keyboard.write('e'); delayMicroseconds(1); }
  if (digitalRead(Xpin) == 0) { Keyboard.write('x'); delayMicroseconds(1); }
  if (digitalRead(Apin) == 0) { Keyboard.write('i'); delayMicroseconds(1); }
  if (digitalRead(Ypin) == 0) { Keyboard.write('y'); delayMicroseconds(1); }
  if (digitalRead(Bpin) == 0) { Keyboard.write('b'); delayMicroseconds(1); }
}

커스텀 파트 및 인클로저

퓨전 360 설계 파일 등

회로도

회로도 파일들

제조공정

  1. 아두이노 나노와 MPU-6050으로 실시간 자이로스코프 게임 만들기
  2. 아두이노 디지털 주사위: LCD 기반 랜덤 넘버 제너레이터 만들기
  3. 아두이노 나노로 테트리스 게임 만들기: DIY 16×8 LED 매트릭스
  4. 스마트 아두이노 물병: 실시간 음수량 모니터링 및 알림
  5. 픽셀 체이서: 아두이노 나노로 만든 인터랙티브 원탭 LED 게임
  6. 알렉사 연동 아두이노 홈 컨트롤러: 음성으로 스마트홈 제어하기
  7. 아두이노 나노와 네오픽셀 매트릭스로 만드는 네온 퐁 게임
  8. 수어 인식을 위한 스마트 제스처-텍스트 장갑
  9. 아두이노 나노와 WS2812 LED 스트립으로 만드는 1차원 퐁(Pong) 게임
  10. Arduino DMX-512 테스터 컨트롤러 – 안정적인 조명 제어를 위한 풀 파츠 키트