LED 발광 모드 변경
듀얼쇼크 연동테스트
하부 LED 구동모드中 듀얼쇼크 Audio Vu Meter (PS4 소리를 받아서 볼륨메터로 구동)
상, 하부 LED를 다르게 구동하는 모습
안녕하세요 루리입니다.
가끔 루리웹이나 블로그를 통해 듀얼쇼크 관련 글을 작성하고 있는 잉여 유저입니다.
듀얼쇼크4 개조를 위한 JDM - 030 PCB 버튼부 핀맵...
듀얼쇼크4 개조를 위한 JDM - 040(055) PCB 버튼부 핀맵 및...
이번 글에서는 특수 컨셉에 맞춘 컨트롤러 PCB 제작부터 듀얼쇼크 수리,
그리고 최종 조립테스트까지의 커스텀 컨트롤러 개발에 대한 일련의 과정을 다루어보려 합니다.
커스텀이니 만큼 단순 버튼연결식 스틱과는 조금 차별화 되는 과정이 다수 포함되어있기 때문에
특수한 기능을 포함하는 자작 / 개조 컨트롤러에 흥미가 있는 분들에게 도움이 되었으면 좋겠습니다.
혹자 : 도대체 왜 이런짓을 하는겁니까?
본인 : 판매용, 영리목적은 아닙니다. 만드는것이 취미입니다.
다만 단순 취미로 만든다고 해도 누군가에게 조금이나마 도움이 될 수 있다면 그저 기쁠 뿐입니다.
이번 개발에 들인 기간과 그 내용입니다. 0부터 0.8까지 되는데 약 한달가까이 소요가 되었습니다.
(나머지 0.2는 LED구동에 있어서 좀더 많은 기능 - 진동검출 발광 등 - 의 추가 여지가 있어 정확히는 미완성입니다.)
달력을 보니 만들고자 하는 컨트롤러를 먼저 구상하고, 파츠들을 그 후에 수배를 하다보니 조금씩 시간이 늘어진 감이 있네요.
개조에 사용된 듀얼쇼크4는 "듀얼쇼크4 개조를 위한 JDM - 040(055) PCB 버튼부 핀맵 및... (플게) " 이 글에서 확인이 가능합니다.
흠..?
한 루리웹분께서 직접 개조하시다가 오작동을 일으킨 보드를 제가 수리하여 재활용 하는 식으로 보드를 수급했고,
새 듀얼쇼크를 작업해드리는 대신 망가진 보드를 제가 고쳐서 사용을 한 케이스가 되겠습니다.
컨트롤러에 들어갈 버튼은 삼덕사의 SDB - 202C Cherry입니다.
체리사의 은축 스위치가 적용된 버튼으로, 동사 타 버튼 대비 빠른응답과 낮은 압력이 장점이라고 하네요.
다만 이전에 이용했던 버튼이 같은 삼덕사의 후타바 스위치가 들어간 SDB - 201C였는데(디자인 동일 버튼만 다름),
개인적으로 후타바 스위치의 딸깍거리는 느낌이 마음에 들었기에 과연 어떤 차이가 있는지 기대가 되는 부분입니다.
버튼 구매는 종로에 위치한 삼덕사에 방문하여 직접 구매하였습니다.
제작기 시작에 앞서, 먼저 디자인, 기능, 스펙의 구상입니다.
디자인의 경우 듀얼쇼크에서 뽑아쓸 수 있는 버튼은 다 뽑아서 써야 한다는게 제가 만드는 컨트롤러의 디자인 컨셉입니다.
이전에 제작했던 1호기와 2호기 모두 같은 컨셉으로 제작되었고, 실제로 잘 이용중에 있기때문에,
격겜용이나 타 게임 특화 컨트롤러를 제작하지 않는 한 디자인이 바뀌는 일은 없을것 같습니다.
1호기 사진 (LED 미지원, 단순 버튼연결식 개조 컨트롤러)
재질 : 상판 : 아크릴, 이외 : MDF
2호기 사진 (LED 제한적으로 지원, 전면 동시발광만 가능)
재질 : 아크릴
다만 이번 3호기에서는 1, 2호기와는 달리 커스텀 PCB라는 요소가 추가됨에 따라
다소 이용빈도가 떨어지는 상단 2개의 스틱을 수납할 수 있는 자리는 만들어 놓되, 제작에서는 뻬는걸로 결정을 하였습니다.
사실 스틱 2개 가격이 어마어마하기도 하고, 자리고 많이 차지하기 때문이지요. 물론 있으면 있는대로 손맛은 괜찮았습니다.
그렇게 구상된 3호기의 상부 디자인 입니다. 메인버튼 배열은 이전과 그대로지만,
커스텀 PCB 배치로 인해 L3, R3가 각각 쉐어, 옵션버튼 옆으로 옮겨가게 되었습니다.
기능의 경우는 2호기에서 구현한 모든것을 그대로 계승하고 거기에 추가하여
저번에는 불가능했던 R1 R2, L1 L2 버튼의 LED 구동과 외부 스위치를 통한 LED 구동모드 변경, 그리고
듀얼쇼크4 음성출력을 이용한 LED Vu Meter 구동 등이 되겠습니다.
사실 이걸 위해 커스텀 PCB를 추가했다고 봐도 무방합니다.
스펙의 경우 버튼시그널 후킹을 위해 2호기에서 구현하여 사용했던 포토커플러 방식을 그대로 이용할것이고,
MCU는 다수의 입력과 RGB LED 및 Audio 신호처리를 위해 좀더 큰 녀석인 ATmega128 (특 : 쉬움)을 사용할것입니다.
그 외 여러여러 PCB설계 관련 파라메터들을 정하고 오디오 입력은 어떻게 받을것이며 등등을 구상한 이후에
바로 PCB 설계로 들어가게 됩니다.
PCB를 설계하고 발주하기까지 3일이 소요되었는데, 그중 1일차의 작업은 이렇습니다.
(USB B타입 Female 잭)
PCB를 제작하기 위해서는 먼저 그 PCB에 올라갈 소자들의 정보가 필요합니다.
각 소자들을 납땜하려면 적절한 납땜자리가 필요한데, 이 자리정보를 만드는 과정이라고 보시면 되겠습니다.
(1일차 회로도)
RGB LED의 경우 다수를 동시에 Driving 하는 경우 전류를 꽤 많이 소모하기때문에,
듀얼쇼크4와 LED 컨트롤러 PCB로 가는 전류를 안정적으로 만들어 주기 위해 전원부 LC 필터를 구현하는 모습입니다..
본 필터가 없고 전류가 불안정한 경우 연결된 PS4에서 배터리 ? 표시가 뜨기도 합니다.
아래는 2일차의 작업입니다.
MCU인 ATmega128을 회로에 얹기위해 그리는 과정입니다.
각 버튼에서 신호를 후킹하는 회로에 대해 전체적으로 윤곽을 잡습니다.
USB B타입과 A타입을 각각 만들어 하나는 외부 입력으로, 하나는 내부 듀얼쇼크로 가는 USB 케이블을 연결하게 됩니다.
전원부 LC 필터 회로
시그널 입력부 및 신호 후킹부
MCU 및 입출력부
아래는 3일차의 작업입니다.
작업했던 시그널 입력부 단자위치를 아트웤에 유리하게 재배치 합니다.
각 소자들의 파라메터를 재확인 합니다.
이후 실제 PCB구현을 위한 아트웤을 진행합니다.
회로도와 PCB를 동시에 비교작업하는 모습입니다.
저 초록색과 빨간색 선들이 여러분들이 아시는 그 PCB의 배선이 되겠습니다.
회로도와 비교검토를 하며 진행합니다.
PCB 하단부 배선
그리고 RGB LED 모듈 실장을 위한 LED 서포트 기판입니다. 여기에 RGB LED를 납땜하여 고정을 시킬겁니다.
PCB 아트웤이 끝나게 되면, 발주처에서 대응 가능한 포맷으로 그 정보를 변환해주어야 합니다.
3D 프린팅을 하려면 STL을, 2D 프린팅을 하려면 각 문서파일로 변환을 해주듯이
Printed Circuit Board의 약자인 PCB 또한 마찬가지이며 PCB의 프린팅 정보가 담긴 파일을 거버라고 합니다.
아래는 발주처에서 제공하는 프리뷰 시뮬레이션를 거친 거버정보의 모습입니다.
PCB 발주는 중국업체를 통해 진행을 하였습니다.
PCB가 도착하였습니다.
일련의 설계과정을 거친 결과물입니다.
LED의 구동과 신호처리를 담당할것입니다.
하단부 듀얼쇼크 시그날 입력단.
상단부 MCU단.
외부전원 LC필터부 및 LED 서포터
커넥터 수삽과정
MCU 및 소자 수삽과정. 하나하나 손으로 납땜을 합니다.
전원부 LC필터를 테스트하는 모습입니다. 외부에서 전력을 공급하고, 커스텀 PCB와 핸드폰으로 공급하는 모습입니다.
수삽 2일차, RGB LED를 서포터에 고정하고 제어하여 밝은 자주색을 출력하는 모습입니다.
저것을 여러개 만들어 동시에 제어하면 컨트롤러 하단부 LED가 어느정도 구성됩니다.
참고로 여기까지의 과정들은 일반 버튼연결식 스틱을 만들고자 하는 분들에게는 전혀 필요가 없는 과정이 되겠습니다.
이 다음은 듀얼쇼크4 보드의 수리 및 개조가 되겠습니다. (제작 10일차)
사실 시간을 절약하여 새 듀얼쇼크를 구매하여 쓸 것인가? 아니면 무료지만 시간을 들여 수리를 할 것인가(수리가 될 지도 미지수죠)
고민을 좀 해봤습니다만, 역시 듀얼쇼크 가격이 한두푼이 아닌지라, 수리 후 적용을 하기로 마음을 먹었습니다.
돈이없으면_몸이힘들다
저에게 도착했을때는 이미 글루건으로 뒤덮혀있는 상태였습니다.
수리를 진행합니다. 일단 열풍기로 PCB에 손상이 안갈 정도로만 열을 쐬어 선을 떼어내야 합니다.
붙어있던 전선을 한땀한땀 제거합니다.
붙어있던 전선은 어느정도 정리가 되었으니 글루건을 정리해야 합니다.
글루건을 어느정도 정리한 모습입니다.
최종적으로 살린 모습입니다.
(사실 전선 제거 후에도 R 트리거가 오작동을 하여 추가적으로 수리를 한 부분이 몇군데 있지만,
기록을 해놓지 않아서 올리기가 어려운 부분이 있습니다.)
외부로 선을 빼기 위해 개조를 시작합니다.
메이크스틱 및 듀얼쇼크4 기반 컨트롤러는 모두 동일한 과정을 거칩니다.
커스텀 PCB에 개조한 듀얼쇼크4 보드를 연결하는 모습입니다.
제작 17일차부터 커스텀 PCB의 작동 검증에 들어갔습니다.
본래대로라면 수삽 이후에 바로 들어갔어야 하지만, 무료로 실험 대상(?)을 제공받는 대신
새 듀얼쇼크를 작업해 드리는것이 조건이었기 때문에 그쪽을 우선시 하였습니다.
본 시점부터 PCB에 실장된 MCU의 프로그래밍을 본격적으로 시작하게 됩니다.
(LED 구동 방법, 후킹 시그널 처리, 스케쥴링 등등..)
R1R2, L1L2 후킹 회로는 간단한 Comparator로 구현하였습니다.
더 간단하게 구현이 가능하지만, 개인의 취향에 따라 방식이 조금씩 다를 수 있습니다.
아래는 커스텀 PCB를 이용해 Audio Vu Meter를 구현하는 도중 촬영한 모습입니다.
초기
중기
후기
초기 PCB 설계시 Audio신호를 받아오기 위해 Half-Wafe Precision Rectifier를 구성하였으나,
실제 Audio신호 인가시 신호가 음전압으로 떨어지는 경우 OP-AMP가 오작동 하는 문제점으로 인해
후기형에서 Full-Wave Precision Rectifier로 회로를 변경하고 실험 및 기능 구현을 진행하였습니다.
후기형 PCB 패턴 수정
초(중)기형 오작동 모습
후기형 100Hz 신호 입력시 정상 출력 모습
실제 음성 입력시 정상 출력 모습
그리고 23일차 부터 프레임을 구성하는 아크릴 도면 제작에 착수를 했습니다.
도면 제작은 이미 한차례 디자인 구상을 통해 윤곽을 잡아놓은 상태이기 때문에 그렇게 오래걸리는 작업은 아닙니다.
컨트롤러의 사이즈는 1, 2호기 동일 400*300이며 경량화를 위해 상판만 5T,
그외의 하판과 전후, 좌우면은 3T의 직육면체 구성을 갖게 됩니다.
상판 작업입니다. 사진과 같은 방식으로 각 홀의 치수에 맞게 도면을 제작하면 완성입니다.
1, 2호기와 다르게 스틱을 장착하지 않는 컨셉으로 제작하기 때문에,
스틱 자리의 홀을 가리기 위한 커버 아크릴을 추가로 구성했습니다.
USB 입력부와 각종 스위치등이 달릴 후면 아크릴입니다.
아크릴을 발주하고 난 후 커스텀 PCB의 테스트를 위해 이전에 제작했던 상판을 이용해 가조립을 하는 모습입니다.
버튼들을 커스텀 PCB - 듀얼쇼크4 모듈에 연결합니다.
실제 검증을 위해 PC가 아닌 PS4로 테스트를 진행하였습니다.
그 다음단계로, 상판 및 하판에 붙일 스킨제작을 위해 원안을 만듭니다.
(일러스트에 상관없이 과정만을 봐주시면 감사하겠습니다.)
많은 분들께서 스킨을 부착하는 방식으로 아크릴과 아크릴 사이에 출력물을 끼워넣는 방식을 사용하시지만,
개인적으로 스킨의 경우 실사출력물을 아크릴 위에 부착하는것이 조금 더 고퀄리티의 결과물을 얻을 수 있어 이쪽을 애용하고 있습니다.
상판. 디자인 구상단계에서 제작한 배치도를 아크릴 커팅을 위해 선택한 그림 위에 덧씌우면 스킨 원안 제작 완성입니다.
하판. 동일하게 디자인 구상단계에서 제작한 하판 나사 홀을 그림 위에 덧씌우면 됩니다.
옆의 사각형 2개는 추가적으로 들어가는 상판 스틱커버를 구성하는 스킨이 되겠습니다.
1, 2호기와 차별화를 위해PRO 로고를 삽입하였습니다.
이후 설연휴를 지나 아크릴과 스킨을 수령하였습니다.
아크릴 가공이 썩 마음에 듭니다.
실사출력도 잘 나온것 같습니다.
이제 각종 연결 케이블을 만들 차례입니다.
PCB보드에 연결할 몰렉스 케이블을 만들기 위해 크림핑을 하는 작업입니다.
이런식으로 넣고 압착해주면
깔끔하게 압착이 됩니다.
케이블을 구매하지않고 직접 만드는 이유는, 커스텀 PCB제작으로 인해 각 소켓에 맞게 제작을 해야하기 때문입니다.
케이블을 모두 제작했으면, 준비물들을 모두 가지런히 하고 조립준비를 합니다.
준비물들을 가지런히 한 모습
도구와 재료들이 모두 준비가 됬다면, 조립을 시작합니다.
(스킨 일러스트에 상관없이 과정만을 봐주시면 감사하겠습니다.)
먼저 아크릴 상판에 스킨을 붙여줍니다.
상판 커버에도 스킨을 붙여줍니다.
하판도 동일하게 아크릴을 잘 재단해서 깔끔히 붙여줍니다.
직육면체의 아크릴을 조립할 때에는, 먼저 테이프를 이용해 직육면체의 모양을 단단히 잡아준 후
아크릴 접착제를 안쪽에서 그 틈에 스며들게하면 간단하게 조립할 수 있습니다.
아크릴 접착제의 경우 폴리를녹여서 용접하듯이 붙여주기때문에, 하나가 되듯 매우 단단하게 접착이 됩니다.
이후접착제가 마르는 동안 상판의 각 홀에 맞춰서 재단을 해줍니다.
이미 아크릴에 스킨을 붙인 상태이기 때문에 버튼에 붙일 부분은 재단 후 점착지 보호필름에 다시 붙여주도록 합니다.
버튼에 스킨을 입히기 위해 케이스를 분해합니다.
미리 그려둔 실선을 따라 잘라서 붙여준 후 다시 조립합니다.
이 작업을 버튼의 수 만큼 반복합니다.
버튼 작업을 끝내면 이런 모습이 됩니다.
하판 스킨작업 및 접착제가 마르면 이러한 직육면체의 모습이 됩니다.
외부 스킨작업이 완료된 후 내부 배선을 시작합니다.
커스텀 PCB - 듀얼쇼크4 모듈의 자리를 잡아주고, RGB LED를 각 자리에 배치합니다.
내부 RGB 배선을 마치고 테스트 및 각 버튼에 맞게 프로그래밍 합니다.
PC와 연동하여 RGB LED 제어 테스트하는 모습
버튼부 LED 테스트 후 하단부 LED도 테스트 해줍니다.
이후 버튼 배선을 완료하고 PS4와 페어링하여 인게임 테스트를 해줍니다.
인게임 테스트를 마치고 하단 LED, USB 전원부 및 기타 스위치 등을 배선 후 조립합니다.
이렇게 3호기가 제작되었습니다.
하단부 LED 및 버튼 개별 발광 테스트
버튼부 온리, 하단부 Vu Meter + 버튼부 개별 발광 테스트
인게임 테스트 1
하단 : Color Sweep(고속) + 상단 : 개별 발광
인게임 테스트 2
하단 : Vu Meter + 상단 : 개별 발광
미쿠 디바 플레이 영상을 첨부하려 했으나, 내장 녹화기능이나 방송기능에 소리 송출이 안되게 되어있어 아쉽게 포기했습니다.
3호기 전면부 사진
3호기 구동 사진
2호기와 3호기 사진
두 컨트롤러 모두 USB-B타입 입력을 지원합니다.
1호기 2호기 3호기
뭔가 가면 갈수록 점점 진화를 해서 이전에 만든 녀석은 찬밥이 되어가는게 한편으로는 아쉽기도 합니다.
이것으로 본 3호기의 제작에 대한 내용은 끝입니다. (아직 개발이 끝난것은 아니지만..)
여러모로 시도를 많이 해본 제작이였기에 나름 재미있었고,
앞으로도 번거롭지만 커스텀 PCB를 제작하여 조금 고퀄리티로 가는 노선을 계속 고수해야겠다는 생각을 많이 했습니다.
너무나도 긴 글 읽어주셔서 감사드리구요, 모두들 즐겜 즐루리 즐개조 라이프 되시길 바랍니다.
날씨가 추운데 여러분 아프지 마시고 건강하시길 바랍니다. 감사합니다.
(카메라는 갤럭시 노트5, 펜탁스 K-7을 번갈아가면서 찍었습니다.)
(IP보기클릭)211.217.***.***
무슨 소린지 몰라서 ㅈㄴ 가만히 있어야겠다..
(IP보기클릭)47.218.***.***
우와! 역시 루리웹! 이거는 게이머들을 위해서라도 판매용으로 하는게 좋을 듯 한데요?
(IP보기클릭)115.21.***.***
WS2812 계열의 RGB LED같아 보이는군요. (저도 최근에 애용하는 녀석인데, 아두이노는 라이브러리가 있는데, AVR-GCC용은 몇종류 구했던 라이브러리들이 형편없어서, 작년에 어셈으로 ATmega용 라이브러리를 만들었었네요.) 듀쇽의 IO를 받아서, 그에 따른 LED 출력제어 보드를 만드신 것 맞지요? 중간에 IO 절연치신거는 Atmega128의 VCC를 5V로 지정하셔서 레벨맞추는 대신 그냥 커플러로 쳐버리신거 같고. 멋진 작품 잘 보고 갑니다. 그나저나 주변에 P-CAD를 쓰는 분이 없어서, 생소한 화면이네요. ㅎ 저는 알레그로를 쓰고, 주변은 요즘들 알티움으로들 넘어가는터라....
(IP보기클릭)121.187.***.***
ps4 게임목록들이 매우 신사적이시군요
(IP보기클릭)211.218.***.***
(IP보기클릭)47.218.***.***
우와! 역시 루리웹! 이거는 게이머들을 위해서라도 판매용으로 하는게 좋을 듯 한데요?
(IP보기클릭)115.21.***.***
WS2812 계열의 RGB LED같아 보이는군요. (저도 최근에 애용하는 녀석인데, 아두이노는 라이브러리가 있는데, AVR-GCC용은 몇종류 구했던 라이브러리들이 형편없어서, 작년에 어셈으로 ATmega용 라이브러리를 만들었었네요.) 듀쇽의 IO를 받아서, 그에 따른 LED 출력제어 보드를 만드신 것 맞지요? 중간에 IO 절연치신거는 Atmega128의 VCC를 5V로 지정하셔서 레벨맞추는 대신 그냥 커플러로 쳐버리신거 같고. 멋진 작품 잘 보고 갑니다. 그나저나 주변에 P-CAD를 쓰는 분이 없어서, 생소한 화면이네요. ㅎ 저는 알레그로를 쓰고, 주변은 요즘들 알티움으로들 넘어가는터라....
(IP보기클릭)211.217.***.***
미즈노요코
무슨 소린지 몰라서 ㅈㄴ 가만히 있어야겠다.. | 19.02.20 14:52 | |
(IP보기클릭)27.35.***.***
아하 뭔지 알겟네요. led가 빨간색 노란색이네요 | 19.02.20 20:48 | |
(IP보기클릭)218.39.***.***
(IP보기클릭)121.187.***.***
ps4 게임목록들이 매우 신사적이시군요
(IP보기클릭)23.243.***.***
(IP보기클릭)1.212.***.***
(IP보기클릭)121.65.***.***
(IP보기클릭)121.169.***.***
(IP보기클릭)203.132.***.***
(IP보기클릭)14.63.***.***
(IP보기클릭)211.218.***.***
(IP보기클릭)58.232.***.***
(IP보기클릭)112.151.***.***
(IP보기클릭)221.154.***.***
(IP보기클릭)1.253.***.***
(IP보기클릭)115.136.***.***
(IP보기클릭)211.203.***.***
(IP보기클릭)61.84.***.***
(IP보기클릭)116.46.***.***
(IP보기클릭)220.92.***.***
(IP보기클릭)114.205.***.***
(IP보기클릭)39.117.***.***
(IP보기클릭)210.94.***.***
(IP보기클릭)116.36.***.***
(IP보기클릭)124.59.***.***
(IP보기클릭)123.215.***.***
(IP보기클릭)211.186.***.***
음...그러니까 이 부분을 막 손으로 돌리고 돌려주고 ...그러면 되는 거지요?
(IP보기클릭)116.39.***.***