메뉴 전체보기

회원메뉴

Q-Stick: 재사용. 재배선. 다시 플레이. 버려진 담배 말이 기계가 레트로 USB 컨트롤러로 변신하다. > 게시판

본문 바로가기

쇼핑몰 검색

NO. 3433
제목 : Q-Stick: 재사용. 재배선. 다시 플레이. 버려진 담배 말이 기계가 레트로 USB 컨트롤러로 변신하다.
2026-09-26 10:41

소개: Q-Stick: 재사용. 재배선. 다시 플레이. 버려진 담배 말이 기계가 레트로 USB 컨트롤러로 변신하다.


소개: Q-Stick: 재사용. 재배선. 다시 플레이. 버려진 담배 말이 기계가 레트로 USB 컨트롤러로 변신하다.


소개: Q-Stick: 재사용. 재배선. 다시 플레이. 버려진 담배 말이 기계가 레트로 USB 컨트롤러로 변신하다.


이 프로젝트는 쓰레기통에 버려지기 직전에 구해 온 오래된 수동 OCB 담배 말이 기계에서 시작되었습니다. 그 기계 장치는 더 이상 쓸모가 없었지만, 외장은 작고 단단했으며 작은 아케이드 컨트롤러의 형태에 놀라울 정도로 잘 어울렸습니다.

마침 오래된 Arduino 키트에서 꺼낸 아날로그 조이스틱과 여러 푸시 버튼이 서랍 속에 사용되지 않은 채 놓여 있었습니다. 프로토타입 제작에 자주 사용하는 Arduino Nano 33 BLE Sense Rev2도 몇 개 가지고 있었습니다. 이렇게 잊혀 있던 부품들을 한데 모아 완전히 새로운 용도로 활용했습니다.

이 제작을 위해 특별히 구입한 부품은 하나도 없습니다.

재사용. 재배선. 다시 플레이.

그 결과물의 이름은 "Q‑Stick": 아날로그 조이스틱과 4개의 컬러 버튼을 갖춘 USB 컨트롤러로, 정식 HID 장치로 인식됩니다. 다음에서 작동합니다: RetroArch, MAME, 그리고 USB 게임패드를 지원하는 여러 게임이나 에뮬레이터에서 사용할 수 있습니다. Q-Stick은 Arduino Uno Q에서 개발하고 테스트했습니다.

변화는 외장에만 그치지 않습니다. 펌웨어는 조이스틱을 보정하고 버튼 디바운싱을 수행하며 Nano에 내장된 IMU를 사용하고, 컨트롤러를 "Arduino Q‑Stick"으로 식별합니다. Nano의 RGB LED는 현재 활성화된 모드를 표시합니다. 이후 소프트웨어 프로필을 사용하면 배선을 변경하지 않고도 각 게임에 맞게 컨트롤을 조정할 수 있습니다.

첫 번째 프로필은 "Mine Storm on Vectrex"으로 검증했습니다. 조이스틱으로 좌우 회전, 파란색 버튼으로 발사, 흰색 버튼으로 추진, 빨간색 버튼으로 순간이동을 수행합니다. 발사 버튼을 누르고 있으면 편안한 연속 발사 속도가 활성화됩니다.

검증된 결과: 아날로그 축 2개, 외장에 통합된 액션 버튼 4개, 프로토타이핑 브레드보드에 유지된 Select 및 Start 버튼, 소프트웨어 디바운싱, 3가지 제어 모드, RGB 표시, Q‑Stick이라는 이름의 USB 장치, 그리고 작동하는 게임 프로필.

  1. 프로젝트별 비용: €0: 이미 보유하고 있던 부품만 재사용했습니다.
  2. 예상 제작 시간: 펌웨어 개발을 제외하고 주말 1회
  3. 난이도: 중급
  4. 유용한 기술: 드릴 작업, 납땜, Arduino 및 기본 Linux 설정




STEP 1. 준비물


준비물


준비물


준비물


준비물


준비물


폐기되기 전에 구해 온 고장 난 OCB 수동 담배 말이 기계의 외장.

이미 가지고 있던 Arduino Nano 33 BLE Sense Rev2 프로토타이핑 보드.

오래된 Arduino 키트에서 꺼낸 KY‑023 아날로그 조이스틱 또는 동급 제품.

오래된 버튼 모음에서 꺼낸 "Select" 및 "Start"용 소형 버튼(브레드보드에만 사용)

기존 보유분의 USB 데이터 케이블.

필요에 따라 작업실에 있는 유연한 전선, 열수축 튜브, 나사 및 스탠드오프.

이 프로토타입은 USB 케이블을 통해서만 전원을 공급받습니다. 배터리, 충전기 또는 추가 변환기는 들어 있지 않습니다. 따라서 제작물이 간결해지고 프로젝트의 단순하고 재현 가능한 취지를 유지할 수 있습니다.


테스트에 사용한 게임 환경

- Linux를 실행하는 Arduino UNO Q.

- USB 허브.

- RetroArch.

- Vectrex 에뮬레이션용 오픈 소스 VecX 코어 또는 원하는 다른 코어.

UNO Q는 필수가 아닙니다. Q‑Stick은 표준 USB 게임패드이므로 호환되는 다른 컴퓨터에서도 사용할 수 있습니다.


도구

- 드라이버

- 오래된 세면대

- DIY 작업용으로 보관해 둔 사용한 칫솔

- 캘리퍼스 또는 정밀 자

- 가는 팁의 납땜 인두와 납

- 도통 모드로 설정한 멀티미터

- 로터리 공구와 점점 더 큰 드릴 비트

- 정밀 줄과 다용도 칼

- 열수축 튜브

- 보안경




STEP 2. 회수한 물건이 프로젝트의 방향을 정하도록 하기


회수한 물건이 프로젝트의 방향을 정하도록 하기


회수한 물건이 프로젝트의 방향을 정하도록 하기


회수한 물건이 프로젝트의 방향을 정하도록 하기


회수한 물건이 프로젝트의 방향을 정하도록 하기


회수한 물건이 프로젝트의 방향을 정하도록 하기


먼저 컨트롤러를 설계한 다음 케이스를 찾은 것이 아니다. 롤링 머신의 형태, 내부 용적, 장착 지점, 그리고 셸의 두 반쪽이 맞물리는 방식을 살펴보는 것부터 시작했다.

외관 상태만 보아도 왜 버려졌는지 알 수 있었다. 녹색 베이스는 심하게 닳아 있었고, 셸은 변형되어 있었으며, 일부 플라스틱 장착 지점은 손상되어 있었다. 이러한 결함 때문에 원래 용도로는 사용할 수 없었지만, 내가 필요로 했던 큰 셸 조각으로는 활용할 수 있었다.

셸 열기

롤링 머신에는 나사가 하나도 없다. 전부 클립으로 조립되어 있다. 작은 일자 드라이버를 접합부에 조심스럽게 끼운 다음, 긴 플라스틱 부품을 비틀지 않고 클립을 하나씩 풀었다. 작업은 서서히 진행해야 한다. 오래된 플라스틱은 깨끗하게 분리되기보다 금이 갈 가능성이 더 높기 때문이다.

셸을 연 뒤 베이스, 커버, 레버, 그리고 손상된 내부 메커니즘을 제거했다. 강성과 닫힘 기능에 여전히 유용한 부품은 모두 보관했고, Q‑Stick에 사용할 부품은 철저히 세척했다.

세척

세척 과정은 프로젝트의 나머지 부분과 마찬가지로 재사용이라는 철학을 따른다. 새 장비는 전혀 사용하지 않았다. 오래된 세면대, 쓰던 칫솔, 비눗물만으로 충분했다.

분해한 부품을 세면대에 담가 잔여물을 불린 다음, 각 부품을 따로 닦았다. 칫솔의 작은 헤드는 플라스틱을 손상시키지 않고 홈, 모서리, 돌출된 로고, 클립 홈까지 쉽게 닿았다.

닦은 뒤 부품을 헹구고, 깨끗한 극세사 천으로 물기를 대부분 제거한 다음, 모든 부품을 완전히 자연 건조했다.

중요: 작업을 계속하기 전에 모든 부품이 완전히 말라 있어야 한다. 특히 홈, 클립 홈, 금속 부품을 확인한다. 습기가 조금이라도 남아 있는 동안에는 드릴 작업이나 전자 부품 설치를 시작하지 않는다.

드릴 작업 전에 다음을 측정했다:

- 내부 길이와 너비

- 셸을 닫았을 때 실제로 사용할 수 있는 높이

- 플라스틱 두께

- 조이스틱 PCB의 설치 면적

- 버튼의 높이와 연결부

- Nano와 USB 커넥터에 필요한 공간

- 조이스틱 샤프트를 방해하지 않는 배선 경로

이 점검은 필수적이다. 회수한 케이스에서는 몇 밀리미터의 차이만으로도 조립 후 제대로 닫히는지가 결정될 수 있다.

이 첫 번째 사진 시리즈는 다음을 기록한다 분해 방법뿐 아니라 이 물건을 회수한 이유도 보여 준다. 더 이상 롤링 머신으로 사용할 수는 없었지만, 재료와 형태는 다른 용도로 여전히 활용할 수 있었다.




STEP 3. 드릴 작업 전에 인체공학을 설계하기


드릴 작업 전에 인체공학을 설계하기


드릴 작업 전에 인체공학을 설계하기


드릴 작업 전에 인체공학을 설계하기


드릴 작업 전에 인체공학을 설계하기


드릴 작업 전에 인체공학을 설계하기


드릴 작업 전에 인체공학을 설계하기


드릴 작업 전에 인체공학을 설계하기


최종 사용 방향에서 조이스틱은 오른쪽에, 버튼 네 개는 왼쪽에 배치했다. 처음에는 버튼을 가로로 한 줄 배치하려 했지만 롤링 머신의 좁은 너비 안에 들어가지 않았다. 해결책은 게임패드의 마름모꼴 버튼 배치처럼 십자형으로 배열하는 것이었다. 빨간색은 위, 파란색은 아래, 흰색은 왼쪽, 노란색은 오른쪽에 배치했다.

이 компакт한 배열은 사용 가능한 너비를 더 효율적으로 활용하고 네 개의 컨트롤을 모두 엄지손가락이 쉽게 닿는 곳에 둔다. 롤링 머신이 두 개 있었던 것도 유용했다. 두 번째 제품은 통합 테스트 중 예비 부품을 제공하는 donor로 사용했다.

전자 프로토타입은 처음에 브레드보드 위에 평평하게 배치하여 검증했다. 그런 다음 실제 부품을 셸 위에 배치하자 중요한 제약이 드러났다. 조이스틱 모듈은 핀 헤더가 케이스의 길이 방향을 따라 정렬되는 한 가지 방향으로만 제대로 장착된다. 이 기계적 방향은 첫 번째 테스트에서 사용한 방향과 반드시 일치하지는 않는다.

이는 배선 문제가 아니다. 펌웨어에서 X축과 Y축을 서로 바꾸고 각 축을 독립적으로 반전할 수 있다. 그러나 드릴 작업 전에, 그리고 설정을 확정하기 전에 모듈을 최종 위치에 정확히 고정한 상태에서 네 방향을 모두 테스트해야 한다.

먼저 1:1 종이 템플릿을 만들었다:

1. 셸 상단의 외곽선을 따라 그린다

2. 조이스틱 중심을 배치한다

3. 버튼 네 개를 배치한다

4. 템플릿을 임시로 부착한다

5. 실제로 플레이하는 것처럼 손을 놓아 본다

6. 내부 여유 공간을 다시 확인한다

7. 검증이 끝난 후에만 중심을 표시한다

색상 버튼 캡은 Q‑Stick에 시각적 정체성을 부여하고 동작을 더 쉽게 기억하게 한다:

B1 파란색 : 기본 동작 또는 발사

B2 흰색 : 보조 동작 또는 이동

B3 빨간색 : 특수 동작

B4 노란색 : 게임에 따라 네 번째 동작

회수한 물건의 플라스틱은 노후되어 취성이 생겼을 수 있다. 따라서 처음부터 최종 직경으로 직접 뚫지 않았다.

각 구멍마다 다음 순서로 작업한다:

1. 셸을 제대로 고정한다

2. 작은 파일럿 홀을 뚫는다

3. 직경을 점진적으로 키운다

4. 줄로 마무리한다

5. 양쪽 면의 버를 제거한다

6. 억지로 밀어 넣지 말고 부품을 시험 장착한다

조이스틱은 전면 패널 아래에 장착한다. 샤프트만 셸을 통과하고 PCB는 내부에서 보호된다. 많은 양의 접착제보다 탈착 가능한 체결 부품을 사용하는 편이 바람직하다. 목표는 컨트롤러를 정비하고, 수리하고, 업그레이드할 수 있는 상태로 유지하는 것이다.

초기 테스트에서 Nano 보드만으로는 셸 하부에 들어가며, USB 커넥터도 끝부분에서 접근할 수 있다는 것을 확인했다. 다음 사진은 전체 배선을 추가하기 전에 이 여유 공간을 확인한 과정을 기록한다.

실제로는 프로토타입에 필요한 두 줄의 헤더와 많은 수의 전선이 보드만 있을 때보다 훨씬 더 많은 공간을 차지한다. 모든 연결을 추가하고 나자 셸이 더 이상 깔끔하게 닫히지 않았다. 따라서 첫 작동 버전에서는 셸을 억지로 닫거나 배선을 약화시키는 대신 Nano를 케이스 밖으로 옮겼다.

이 타협은 의도된 것입니다. 이 버전은 재사용 가능한 프로토타이핑 하드웨어를 사용해 조작성, 펌웨어, 게임 프로필을 검증합니다. 더 소형화된 후속 버전에서는 더 작은 USB HID 보드를 사용하거나, 헤더와 Dupont 와이어 없이 보드를 직접 납땜할 수 있습니다.

따라서 테스트할 때는 Nano를 인클로저 밖에 두고 커넥터는 분리 가능한 상태로 유지합니다. 플레이하는 동안 보드의 무게가 와이어를 당기지 않도록 보드를 배치하거나 고정해야 합니다.

이 단계에서는 롤링 머신의 실루엣이 완전히 달라졌습니다. 조이스틱과 네 개의 색상 캡만으로도 이미 실제 Q‑Stick 컨트롤러처럼 보입니다. 새로 구매하지 않고 개념을 검증하기 위한 이 버전에서는 Start 및 Select 버튼이 Nano와 함께 브레드보드에 그대로 남아 있습니다. 정상적으로 작동하지만 아직 셸에 통합되지는 않았습니다.




STEP 4. 전자 장치


전자 장치


전자 장치


Nano 33 BLE Sense Rev2를 사용하는 이유는 무엇인가?

이미 프로토타이핑 장비로 이 보드를 가지고 있었습니다. 이 보드는 다음과 같은 유용한 기능을 여러 가지 결합합니다.

- 컴팩트한 폼 팩터;

- HID 게임패드를 생성할 수 있는 네이티브 USB 인터페이스;

- 내장 RGB LED;

- BMI270 가속도계 및 자이로스코프;

- 조이스틱, 버튼 및 향후 확장에 충분한 입력 수.

Nano는 3.3 V 로직으로 동작합니다. 일부 클래식 Arduino 모듈에서 사용하는 5 V가 입력에 들어가서는 안 됩니다.

조이스틱은 반드시 Nano의 3V3 핀에서 전원을 공급해야 하며, 5V에서는 공급하면 안 됩니다.

USB 케이블은 전원과 통신을 모두 제공합니다. Bluetooth 버전도 고려했지만, 배터리, 보호 회로, 충전기, 컨버터 및 스위치가 필요했을 것입니다. 이 모든 부품은 작은 인클로저 내부를 불필요하게 복잡하게 만듭니다. 따라서 이 첫 번째 버전은 의도적으로 유선 방식으로 유지합니다.

검증된 프로토타입 핀 배치:

조이스틱 VRx : A0

조이스틱 VRy : A1

조이스틱 클릭 SW : D2

버튼 B1 : D3

버튼 B2 : D4

버튼 B3 : D5

버튼 B4 | D6

조이스틱 VCC : 3V3

공통 접지 : GND

각 액션 버튼은 디지털 핀과 접지 사이에 연결됩니다. 펌웨어가 내부 INPUT_PULLUP 저항을 활성화하므로 외부 저항은 필요하지 않습니다.

- 버튼을 놓음: 입력은 High입니다.

- 버튼을 누름: 입력이 접지에 연결됩니다.

- 로직 반전은 펌웨어에서 처리됩니다.

와이어 수를 줄이기 위해 네 버튼 사이에서 접지를 데이지 체인 방식으로 연결할 수 있습니다. 각 버튼의 다른 단자는 각각 D3, D4, D5 또는 D6으로 연결합니다.

USB를 연결하기 전에 멀티미터로 다음을 확인했습니다.

1. 3V3과 GND 사이에 단락이 없는지

2. 공통 접지가 연속성을 갖는지

3. 각 버튼이 놓았을 때는 열리고 눌렀을 때는 닫히는지

4. 인접한 입력 사이에 접촉이 없는지

펌웨어는 8 ms 소프트웨어 디바운스를 적용합니다. 빠르게 테스트했을 때 원치 않는 이중 입력은 발생하지 않았습니다.

Select 및 Start 버튼

D7 및 D8 입력은 이미 펌웨어에서 지원됩니다.

Select : D7과 접지 사이

Start : D8과 접지 사이

이 두 버튼은 HID 위치 5와 6을 사용합니다. 이 프로토타입에서는 Nano 옆의 외부 브레드보드에서 계속 사용할 수 있습니다. 이렇게 하면 구성을 되돌릴 수 있고, 추가 구매를 피할 수 있으며, 재활용한 컨트롤러 셸과 개발용 전자 장치의 차이도 명확하게 보여 줍니다. 액션 버튼과 마찬가지로 INPUT_PULLUP을 사용하고 공통 접지를 공유합니다.

Ridge Racer 4에서 작동을 확인했습니다. Start는 게임을 확인하고 일시 정지하며, Select는 화면 보기를 변경하고, Start + Select 조합은 RetroArch 메뉴를 엽니다.




STEP 5. 펌웨어


펌웨어


펌웨어


펌웨어


펌웨어


펌웨어


Arduino 폴더에는 다음 네 개의 파일이 들어 있습니다.

- q-stick.ino

- config.h

- QStickGamepad.h

- QStickGamepad.cpp

Arduino IDE에서:

  1. 1. Arduino Mbed OS Nano Boards를 설치합니다.
  2. 2. Arduino Nano 33 BLE를 선택합니다.
  3. 3. Arduino_BMI270_BMM150 라이브러리를 설치합니다.
  4. 4. q-stick.ino를 엽니다.
  5. 5. USB를 통해 컴파일하고 업로드합니다.

명령줄에서는:

sh arduino-cli compile --fqbn arduino:mbed_nano:nano33ble q-stick

시작할 때 잠시 조이스틱을 중립 상태로 둡니다. 프로그램은 실제 중심점을 결정하기 위해 64개의 샘플을 취한 다음 다음을 적용합니다.

- 중립 주변의 데드 존

- HID 범위 −127 ~ +127로 변환

- 소프트웨어 버튼 필터링

- 두 개의 축, 방향 햇, 8개의 버튼 위치가 포함된 USB 리포트

최종 빌드에서는 조이스틱 모듈이 90° 회전되어 원래 왼쪽 방향이 아래쪽을 가리킵니다. 펌웨어는 X = -A0 및 Y = -A1을 사용해 이 방향을 보정합니다:

cpp
constexpr bool SWAP_XY_AXES = false;
constexpr bool INVERT_X_AXIS = true;
constexpr bool INVERT_Y_AXIS = true;

이 세 가지 설정을 사용하면 배선을 변경하지 않고도 프로그램을 다른 물리적 배치에 맞게 조정할 수 있습니다.

USB에서 Q‑Stick이 이름으로 표시되도록 하기

Arduino Mbed 코어는 HID 클래스에서 다른 이름을 정의했더라도 일반적으로 전체 장치를 일반 이름인 Nano 33 BLE로 식별합니다.

제공된 tools/patch-usb-product-name.sh 스크립트는 업로드 전에 컴파일된 바이너리에서 이 문자열을 교체합니다. Nano는 Arduino USB ID와 표준 부트로더를 그대로 유지하지만, 이제 운영 체제에는 다음과 같이 표시됩니다:

Arduino Q-Stick

The retroarch/Q-Stick.cfg 파일은 따라서 컨트롤러를 정확하게 식별하고 해당 매핑을 자동으로 적용할 수 있습니다. 이 사용자 지정은 선택 사항입니다. 이를 적용하지 않아도 컨트롤러는 작동하지만 Nano의 일반 이름으로 표시됩니다.

컴퓨터 호환성

Q‑Stick은 USB HID Gamepad 표준을 사용하므로 일반적으로 특정 드라이버가 필요하지 않습니다.

- Linux : RetroArch를 사용해 감지 및 작동을 검증함

- macOS : 일반 USB 게임패드로서 RetroArch 및 HID 호환 에뮬레이터에서 테스트했으며 정상 작동을 확인함

- Windows : DirectInput 컨트롤러로 표시되며 시스템의 joy.cpl 도구로 확인할 수 있음

현재 버전은 Linux에서 테스트되었습니다. macOS 및 Windows 호환성은 HID 표준에 기반하지만, 완전히 검증된 것으로 제시하기 전에 해당 운영 체제가 설치된 컴퓨터에서 확인해야 합니다.

Windows에서는 일부 최신 게임이 Xbox 방식의 XInput 컨트롤러만 허용합니다. RetroArch, MAME 및 HID 또는 DirectInput 컨트롤러를 허용하는 대부분의 에뮬레이터와 달리, 이러한 게임에는 변환 소프트웨어가 필요할 수 있습니다. USB 데이터 케이블이 필요하며, USB‑C 포트만 갖춘 Mac에서는 적합한 케이블이나 허브도 필요합니다.

조이스틱 클릭과 RGB LED 사용

조이스틱에 내장된 누름 버튼은 게임 내 동작으로 사용되지 않습니다. 이 버튼은 Q‑Stick의 모드를 제어합니다:

- 짧게 누르기: 다음 모드로 전환

- 1초간 길게 누르기: IMU의 중립 위치 재보정

내장 RGB LED는 현재 상태를 즉시 표시합니다:

파란색 고정 CLASSIC: X/Y 축에서 조이스틱 사용

녹색 고정 MOTION: 기울기를 방향 패드에 매핑

보라색 고정 HYBRID: 조이스틱과 모션을 동시에 사용 가능

흰색 : IMU 보정 진행 중

빨간색 : IMU를 사용할 수 없거나 보정에 실패함

MOTION 모드에서는 서로 다른 두 임계값이 히스테리시스를 만듭니다. 기울기가 약 15°에 도달하면 방향이 활성화되고, 약 9° 아래로 돌아온 후에만 해제됩니다. 이 차이는 컨트롤러가 임계값 근처에 머물 때 발생하는 떨림을 방지합니다.

CLASSIC 모드는 Mine Storm에 사용되는 모드입니다. MOTION 및 HYBRID는 운전 게임이나 접근성 중심의 조작을 실험하기 위한 모드이지만, 기본 작동에는 필요하지 않습니다.

분해한 부품을 살펴보던 중 케이스에 이미 내장된 작은 반투명 부품을 발견했습니다. 이 부품의 형태는 라이트 가이드로 재사용하기에 적합해 보입니다. 바닥 부분에 Nano의 RGB LED에서 빛을 받아 새로 구멍을 뚫지 않고도 빛의 색을 보이는 부분까지 전달할 수 있습니다.

보드를 영구적으로 고정하기 전에 이 해결책을 테스트해야 합니다. LED를 반투명 부품의 바닥 가까이에 배치하고 파란색, 녹색, 보라색, 흰색, 빨간색을 차례로 켠 다음 케이스를 닫은 상태에서 잘 보이는지 확인합니다. 측면으로 빛이 너무 많이 새어 나오면 짧은 불투명 슬리브를 사용해 LED와 반투명 부품을 광학적으로 더 가깝게 결합할 수 있습니다. 광학 표면에는 접착제를 바르지 마십시오.




STEP 6. 각 게임에 맞는 프로필 테스트 및 생성


각 기능을 개별적으로 테스트하기

Q‑Stick을 UNO Q의 USB 허브에 연결하자 Linux가 이를 게임 컨트롤러로 감지했습니다. 에뮬레이터를 실행하기 전에 jstest 도구를 사용해 입력을 확인할 수 있습니다:

sh jstest /dev/input/js0

물리적 테스트를 통해 최종 방향을 확인했습니다:

left → negative X
right → positive X
down → positive Y
up → negative Y
center → 0

네 개의 액션 버튼은 이벤트 0, 1, 2, 3에 해당합니다. 프로토타입 브레드보드에 연결된 Select와 Start는 이벤트 4와 5에 해당합니다.

게임 외부에서 컨트롤러를 테스트하는 것은 중요합니다. 잘못된 방향은 기계적 설치, 펌웨어 또는 에뮬레이터 설정에서 발생할 수 있습니다. 이 방법을 사용하면 문제가 발생한 계층을 즉시 분리해 확인할 수 있습니다.

각 게임에 맞는 프로필 생성

구형 콘솔이 모두 동일한 조작 방식을 사용하는 것은 아닙니다. 따라서 Q‑Stick은 두 수준으로 나눕니다:

1. Nano는 항상 일관된 USB 게임패드를 제공함

2. RetroArch는 실행할 게임에 맞는 프로필을 불러옴

프로필로 다음을 설정할 수 있습니다:

- 두 아날로그 축을 모두 유지하거나 하나만 사용

- 한 방향 반전

- 사용하지 않는 움직임 비활성화

- 파란색 버튼을 기본 동작으로 지정

- 특정 게임에 연사 기능 활성화

- 일반 탐색을 위해 Start와 Select 유지

따라서 게임이 바뀔 때마다 Nano를 다시 프로그래밍할 필요가 없습니다. 물리적 배치는 일관되게 유지되고, 프로필이 원래 콘솔의 조작 방식을 변환합니다.

디지털 컨트롤러를 사용하는 PlayStation 게임의 경우, ps1-qstick.cfg 프로필은 다음 설정을 사용하여 조이스틱 축을 방향 패드로 변환합니다: input_player1_analog_dpad_mode = "1". 이 설정은 Ridge Racer 4의 메뉴를 탐색하는 데 필수적입니다. 이 프로필에서는 흰색 B2가 확인을 수행하고 빨간색 B3가 취소하거나 뒤로 이동합니다.

첫 번째 프로필: Vectrex의 Mine Storm

Mine Storm은 조작 방식이 단순하면서도 특이하기 때문에 첫 번째 테스트에 적합합니다:

- 왼쪽/오른쪽: 함선 회전

- Vectrex 버튼 4: 발사

- Vectrex 버튼 3: 추진

- Vectrex 버튼 2: 순간이동

- Vectrex 버튼 1: 게임플레이 중 사용하지 않음

이 minestorm-qstick.cfg 프로필은 이러한 조작을 다음과 같이 매핑합니다:

조이스틱 왼쪽/오른쪽: 회전

B1 파란색: 발사 / 누르고 있음: 연속 발사

B2 흰색: 추진

B3 빨간색: 순간이동

B4 노란색: 비활성화

조이스틱 위/아래: 비활성화

파일에는 다음과 같은 설정을 비롯한 여러 설정이 포함되어 있습니다:

ini
input_player1_a_btn = "nul"
input_player1_b_btn = "2"
input_player1_x_btn = "1"
input_player1_y_btn = "0"

input_player1_left_axis = "-0"
input_player1_right_axis = "+0"
input_player1_up_axis = "nul"
input_player1_down_axis = "nul"

B1을 누르고 있는 동안 연속 발사가 활성화됩니다:

ini
input_player1_turbo_btn = "0"
input_turbo_mode = "3"
input_turbo_default_button = "1"
input_turbo_period = "6"
input_turbo_duty_cycle = "3"

짧게 누르면 한 발만 발사되고, 버튼을 누르고 있으면 연속으로 발사됩니다. 조이스틱은 수평 방향에 직접 연결되어 있으며, 이 방식이 아날로그 입력을 방향 패드로 자동 변환하는 것보다 여기서는 더 안정적인 것으로 확인되었습니다.

게임 관련 안내: 이 프로젝트는 상용 ROM을 제공하지 않습니다. RetroArch와 VecX는 오픈 소스 소프트웨어이므로, 플레이하려면 합법적으로 취득한 사본이나 자유롭게 배포되는 홈브루 게임을 사용하세요.




STEP 7. 테스트 결과


테스트 결과


테스트 결과


테스트 결과


테스트 결과


테스트 결과


테스트 결과


전기적 항목

- 3V3과 GND 사이에 원치 않는 연결 없음

- 정상적으로 열린 상태로 작동하는 버튼 4개

- 공통 접지 확인

- 조이스틱에 3.3 V가 정상적으로 공급됨

펌웨어 및 USB

- 컴파일 및 업로드 성공

- Linux에서 자동 인식

- USB 이름 Arduino Q‑Stick 확인

- 중앙 보정된 아날로그 축 2개

- 독립적으로 작동하는 액션 버튼 4개

- 디바운싱 정상 작동

- RGB LED 및 모드 전환 정상 작동

- 브레드보드에 배치한 D7의 Select와 D8의 Start가 독립적으로 인식됨

- RetroArch 메뉴를 여는 Start + Select 조합 확인

실제 게임플레이

- 양방향 회전 정상 작동

- 파란색 B1: 단발 또는 연속 발사

- 흰색 B2: 추진

- 빨간색 B3: 순간이동

- 실수로 동작하는 것을 방지하기 위해 수직 조작 비활성화

- 디지털 PlayStation 프로필을 사용하면 조이스틱으로 Ridge Racer Type 4를 탐색할 수 있음

- 흰색 B2를 확인으로, 빨간색 B3를 뒤로 이동으로 사용하는 방식 확인

- 브레드보드 상태에서 실제 게임플레이 중 Start, Select 및 두 버튼의 조합을 테스트함


따라서 테스트한 두 프로필 모두 플레이할 수 있습니다. 또한 하드웨어를 변경하지 않고 다른 게임에 맞게 조정할 수 있는 템플릿으로도 사용할 수 있습니다.


다음에 개선할 수 있는 부분

이 버전은 의도적으로 단순하게 유지했습니다. 가장 유용한 개선 사항은 다음과 같습니다:

- 미끄럼 방지 발판이나 소형 내부 추 추가

- 맞춤형 내부 마운트 제작

- 현재 모드와 선택한 설정을 메모리에 저장

- 실행한 게임에 따라 프로필 자동 선택

- 예를 들어 Hyperchase 같은 드라이빙 게임에서 IMU 활용 확대

- 부피가 큰 헤더나 Dupont 배선 없이 모든 전자 부품과 6개의 사용자 버튼을 케이스 안에 통합

Bluetooth 버전도 기술적으로는 가능하지만, 배터리와 몇 가지 추가 회로가 필요합니다. USB 버전이 완벽하게 제 역할을 하는 동안에는 이 작은 프로젝트를 복잡하게 만들고 싶지 않습니다.




STEP 8. 결론


V2 준비 중: 모든 것을 케이스 안에 넣기

여기서 소개하는 첫 번째 버전은 의도적으로 €0 프로토타입으로 유지했습니다. Nano, Start, Select는 분리 가능한 연결부가 있는 외부 브레드보드에 설치되어 있습니다. 추가 하드웨어를 구매하지 않고도 기구 설계, 펌웨어, 인체공학 및 게임 프로필을 검증할 수 있습니다.

V2의 목표는 달라집니다. 보드, 사용자 버튼 6개, 모든 배선을 롤링 머신 케이스 안에 넣는 것입니다. 향후 보드에는 다음이 필요합니다.

- VRx와 VRy용 아날로그 입력 2개

- B1~B4용 디지털 입력 4개

- Start와 Select용 디지털 입력 2개

- 조이스틱 클릭용 디지털 입력 1개

- HID 게임패드를 에뮬레이션할 수 있는 네이티브 USB 인터페이스

- 내장 IMU 또는 IMU를 추가할 수 있는 인터페이스

즉, 최소 2개의 아날로그 입력과 7개의 디지털 입력이 필요합니다.

검토 중인 보드: Seeed Studio XIAO nRF52840 Sense

V2의 유력한 후보는 Seeed Studio XIAO nRF52840 Sense입니다. 크기는 21 × 17.8 mm에 불과하며 현재 Nano와 동일한 nRF52840 마이크로컨트롤러를 사용합니다. 이처럼 작은 폼팩터에 다음 기능이 포함되어 있습니다.

- USB‑C 커넥터 및 네이티브 USB 인터페이스

- 아날로그 입력 6개를 포함한 사용 가능한 GPIO 핀 11개

- LSM6DS3TR‑C 6축 IMU

- RGB LED

- Bluetooth Low Energy 및 Li‑ion 충전 회로. 이는 이후 버전에서 사용할 수 있지만 유선 V2에는 필요하지 않습니다.

사양, 핀 배치 및 기구 설계 파일은 공식 XIAO nRF52840 Sense 문서(https://wiki.seeedstudio.com/XIAO_BLE/)에서 확인할 수 있습니다.

제안하는 V2 핀 배치

  1. 조이스틱 VRx: D0 / A0
  2. 조이스틱 VRy: D1 / A1
  3. 조이스틱 클릭: D2
  4. B1 파란색: D3
  5. B2 흰색: D4
  6. B3 빨간색: D5
  7. B4 노란색: D6
  8. Select: D7
  9. Start: D8
  10. 예비: D9 및 D10

조이스틱은 계속 3.3 V로 구동합니다. 공간을 최대한 절약하기 위해 헤더 없이 보드를 사용하고, 전선을 보드의 패드에 직접 납땜합니다. 작은 절연 마운트와 스트레인 릴리프가 보드와 USB 케이블을 모두 보호합니다.

남은 소프트웨어 작업

현재 펌웨어는 수정 없이 그대로 업로드할 수 없습니다. 조이스틱 처리, 버튼, 디바운스, 보정 및 프로필 로직은 유지할 수 있지만, USB 계층은 Adafruit TinyUSB로 포팅해야 합니다. 이 라이브러리는 이미 nRF52840 마이크로컨트롤러용 공식 HID 게임패드 예제를 제공합니다.

동작 판독 코드도 XIAO의 LSM6DS3TR‑C IMU에 맞게 수정해야 하며, 이후 Linux, macOS 및 Windows에서 새로운 테스트를 진행해야 합니다. 따라서 V2는 대회 프로토타입에 이미 구현된 기능이 아니라, 계획된 발전 단계입니다.

이미 주변에 있는 것들을 다른 시각으로 바라보기:

Q‑Stick은 단순한 수제 컨트롤러가 아닙니다. 공통된 용도를 더 이상 갖지 못했던 여러 물건이 만나는 지점입니다. 버려질 운명이었던 롤링 머신, 오래된 키트 속에 잊혀 있던 조이스틱과 버튼, 그리고 이미 프로토타이핑에 사용하던 Arduino 보드가 그것입니다.

케이스는 형태와 정체성을 제공했습니다. 서랍 속 부품들은 조작부가 되었습니다. Nano와 펌웨어는 이 조립물을 프로그래밍 가능한 USB 장치로 바꾸었습니다. 프로젝트를 위해 특별히 구매한 것은 아무것도 없습니다.

원래의 기능은 완전히 사라졌지만, 그 첫 번째 삶의 흔적은 여전히 보입니다. 그것들은 숨겨야 할 결함이 아니라 변환의 이야기를 들려주는 흔적입니다.

재사용. 다시 배선하기. 다시 플레이하기.

새 케이스나 다른 키트를 사기 전에, 이미 서랍 속에 있거나 재활용을 기다리는 물건 더미에 있는 것들을 살펴보세요. 오래된 리모컨, 망가진 장난감, 산업용 제어 상자 또는 전혀 어울릴 것 같지 않은 케이스가 여러분의 다음 컨트롤러가 될 수 있습니다.

제 영어를 검토하고 수정안을 제안받기 위해 Claude(Anthropic)를 사용했지만, 제 표현과 실수를 일부 그대로 두기로 했습니다. 영어는 제 모국어가 아니며, 제가 아닌 누군가처럼 들리기보다는 그 사실을 솔직하게 드러내고 싶었기 때문입니다.

감사합니다!


원문: https://www.instructables.com/Q-Stick-Reuse-Rewire-Replay-a-Discarded-Cigarette-/

좋아요 0
게시판

회사명 공방유니언 주소 각 공방 주소 참조
사업자 등록번호 0000 대표 공방유니언 전화 019-60105846 팩스 0000 이메일 gongbangunion@gmail.com
통신판매업신고번호 0000 개인정보관리책임자 공방유니언
Copyright © 2017 공방유니언. All Rights Reserved.