

예전에 ESP32-S3 Nano를 사용해 Retro-go 콘솔을 만들어 본 적이 있는데, 제 또래 친구들 몇 명에게 직접 사용해 보게 했더니 모두 “너무 작다”는 똑같은 반응을 보였습니다. 그런 피드백을 받은 후, 휴대하기 편하면서도 플레이하기 편안한, 조금 더 큰 버전을 만들기로 했습니다. 처음에는 SNES 버전을 만들었는데, 작동은 꽤 잘되었지만 배선이 다소 복잡하고 사용자 경험 측면에서 몇 가지 불편한 점이 있다고 느꼈습니다. 그래서 누구나 쉽게 만들 수 있도록 이 버전으로 재설계했습니다. 또한 이번이 Instructables에 튜토리얼을 올리는 것은 이번이 처음입니다.
이전 버전에 관심이 있으시다면, 여기에서 확인해 보실 수 있습니다.


위에 나열된 모든 구성 요소를 준비하고 필요한 부품을 3D 프린팅하세요. Bambu Lab Slicer를 사용하는 경우, AIO 파일에서 직접 프린팅할 수 있습니다.
(또는 여기에서 .zip 파일을 불러오세요)
https://drive.google.com/file/d/1EGTf1Zb35-VmQmvTk9TxD2AQW_3zjx64/view?usp=sharing
양면 테이프와 전선이 충분한지 확인하고, 납땜 도구와 멀티미터를 준비하세요. 까다로운 점은 SMD 부품을 조립하기 위해 PCB를 잘라내야 할 수도 있다는 것입니다. 대신 표준 스루홀 부품을 사용할 수도 있지만, 결과물이 깔끔해 보이지 않을 수 있으며 단락을 방지하기 위해 전기 테이프가 필요할 수도 있습니다.




2.4인치 디스플레이를 10핀 커넥터에 연결한 후, 그림과 같이 프레임에 끼워 넣으세요. 그래도 디스플레이가 움직인다면, 디스플레이가 제자리에 고정되도록 작은 플라스틱 조각을 추가하거나 얇은 양면 테이프를 사용하여 고정하세요. (단, 나중에 다시 분리해야 할 경우 조정이 더 어려워질 수 있으니 이 점을 유의하십시오.)
그런 다음 그림과 같이 M1.6×3 및 M2×3 나사를 사용하여 고정 커버를 부착하십시오. (원래는 모두 M2 나사를 사용하도록 설계했으나, 출력 후 나사 구멍이 돌출되어 후면 장착 지점이 약해질 수 있었습니다. 따라서 나사가 구멍 안에 완전히 들어갈 수 있도록 M1.6으로 변경했습니다.)







시작하기 전에, 디스플레이를 설치한 후 테스트할 수 있도록 NANO-S3에 펌웨어를 플래시하세요. 펌웨어 플래시 작업에 익숙하지 않다면, 아래의 ‘소프트웨어’ 섹션으로 건너뛰어 주세요. 해당 섹션에서 그 과정을 설명해 드립니다.
Nano-S3, SD 카드 모듈, FPC 커넥터에 양면 테이프를 붙인 다음, 그림과 같이 배치하십시오.
나머지 부품들의 납땜 작업을 더 쉽게 하기 위해, 그림과 같이 작은 구리 패드를 사용하여 공통 접지와 공유 3.3V 전원 레일을 만들었습니다. 이 지점들은 다른 여러 모듈과 연결되므로, 이 작은 부품을 사용하면 납땜 작업이 훨씬 수월해집니다.
다음으로, 공유 접지선과 3.3V 전선을 먼저 배선합니다. 전선을 신중하게 배치하고, 움직이지 않도록 소량의 접착제로 고정하세요. 그렇지 않으면 다른 공유 전선을 납땜할 때 구리 패드에서 전선이 떨어질 수 있습니다. 양면 테이프로 단단히 고정하면 분리될 가능성을 크게 줄이거나 완전히 없앨 수 있어, 3.3V 전원 및 접지 연결을 더 쉽게 분배할 수 있습니다.

이 부분은 세부 사항이 몇 가지 있어서 별도의 단계로 분리했습니다. 2N2222 NPN 트랜지스터를 사용하는 경우 1 kΩ 저항을 사용하고, BC547을 사용하는 경우 2.2Ω에서 1 kΩ 사이의 저항을 사용할 수 있습니다.디스플레이 모듈의 사양을 확인하여 전기 노이즈를 필터링하기 위해 VCC와 GND 사이에 커패시터가 필요한지 확인하십시오. 제가 사용한 디스플레이는 전류 소모량이 적어 커패시터가 필요하지 않았습니다.
배선 작업에 앞서 먼저 트랜지스터의 핀 배치를 확인하십시오. 콜렉터(C)를 디스플레이 커넥터(이하 ‘디스플레이’라고 칭함)의 10번 핀에 연결하고, 이미터(E)를 GND에 연결하십시오. 베이스(B)는 사용하는 트랜지스터에 따라 2.2 Ω, 10 Ω 또는 1 kΩ 저항을 통해 Nano-S3의 A7 포트에 연결하십시오. 이 튜토리얼에서는 납땜 전에 핀을 쉽게 식별할 수 있도록 GPIO 번호 대신 Nano-S3 보드에 인쇄된 핀 이름을 사용할 것입니다.


이 단계에서는 다음과 같이 Nano-S3를 디스플레이 및 SD 카드 모듈에 연결하십시오.
배선 과정을 더 쉽게 파악할 수 있도록 엑셀 표를 만들었습니다. 제공된 도면에 따라 전선을 연결하십시오. 파란색 행은 Nano-S3 핀을 공유하는 연결을 나타냅니다. D13을 디스플레이 핀 3과 SD 카드의 CLK 핀에 함께 연결하십시오. 디스플레이 핀 10은 이전 단계에서 연결한 트랜지스터와의 연결입니다.

이제 SD 카드의 CS 선만 남았습니다. 이 선을 Nano-S3의 D3 핀에 연결하세요. SD 카드의 3V3 및 GND 선은 앞서 준비해 둔 공용 구리 패드에 연결하세요.








이 단계에서는 앞서 준비한 40 × 60 mm 시제품 PCB를 앞쪽 프레임에 대어 맞춰 봅니다. M1.6×3 또는 M2×3 나사 두 개를 사용하세요(하나가 너무 헐거우면 더 단단히 고정되는 것을 선택하세요). PCB를 제자리에 고정하기 위해 오른쪽 상단과 왼쪽 하단 모서리를 추천합니다.
그런 다음 PCB를 앞면이 보이도록 뒤집으세요. PCB의 접점 위치를 표시할 수 있는 마커나 연필을 사용하여 스위치가 설치될 위치를 표시하세요. 제가 사용한 것과 똑같은 스위치를 사용할 필요는 없으며, 추천 예시에 나와 있는 것과 같은 다른 유형의 스위치를 사용해도 됩니다. 다만, 푸시 버튼 방식의 스위치를 사용할 경우, D-패드와 A/B 버튼 아래로 튀어나온 부분을 잘라내어 버튼을 쉽게 누를 수 있도록 하세요.
제가 사용한 것과 동일한 스위치를 사용한다면, 위치 조정이 더 쉬워지도록 그림과 같이 스위치 뒷면에 양면 테이프를 붙이세요. 모든 스위치를 배치하고, D-패드와 A/B 버튼을 장착한 후 버튼 감도를 테스트하세요. 잘 작동한다면 스위치를 제거하고 납땜을 준비하세요.
이 스위치들을 납땜하려면 각 구멍에 납을 바른 다음, 납땜 인두 끝을 구멍에 삽입하여 납을 녹여 접점을 연결하세요. 멀티미터를 사용하여 각 버튼이 올바르게 작동하는지 확인하세요. 모든 버튼에 대해 이 과정을 반복하세요.
모든 스위치가 정상적으로 작동하면, 얇은 구리선을 사용하여 각 스위치의 접지 단자를 연결하세요. 각 스위치의 어느 쪽이든 편리한 쪽을 선택하면 되지만, 나머지 쪽은 Nano-S3 연결에 사용하게 됩니다. 이 얇은 전선의 절연 피복은 가열되면 녹아 전기를 전도하게 됩니다. 납땜 인두를 전선에 잠시 대어 피복을 녹인 다음, 이를 이용해 모든 스위치의 접지 단자를 서로 연결하십시오.


이 단계에서 초기 디스플레이 테스트를 수행할 수 있습니다. USB-C 케이블을 Nano-S3 보드에 연결한 후 SD 카드를 삽입하라는 메시지가 표시되는지 확인하십시오. 디스플레이에 무언가 표시된다면 디스플레이 배선이 올바른 것입니다. 아무것도 표시되지 않는다면, 먼저 모든 디스플레이 및 SD 카드 연결 상태를 다시 확인하십시오.







이 단계를 진행하기 전에, 버튼을 연결한 후 테스트를 더 쉽게 진행할 수 있도록 SD 카드를 미리 준비해 두는 것이 좋습니다. SD 카드를 포맷한 다음, 다음 튜토리얼에서 SD 카드용 파일을 다운로드하세요:
튜토리얼 페이지: https://www.instructables.com/ESP32-VMU-Handheld-Console-Yes-It-Plays-Doom/
직접 링크: https://github.com/DynaMight1124/retro-go/releases/download/VMU/VMU-S3.SD.Files.zip
파일을 SD 카드의 루트 디렉터리에 직접 압축을 풀고, 모든 기능이 정상적으로 작동하는지 테스트하기 위해 몇 가지 ROM을 추가하세요.
Excel 표의 핀 배열에 따라 버튼을 Nano-S3에 연결하십시오. PCB의 연결된 접지선을 앞서 준비한 공통 접지에 연결하는 것을 잊지 마십시오.
그런 다음 엑셀 표에 따라 사운드 모듈을 Nano-S3에 연결하세요. 스피커는 왼쪽 하단 모서리, 사운드 출력구 근처에 장착할 수 있습니다.
옵션 버튼에 연결된 B0 핀에서, 3V3과 B0 사이에 10 kΩ 저항을 연결하세요. 이 연결은 입력 핀이 플로팅되는 것을 방지하며, 풀업 저항 역할을 합니다.
[ 모든 연결이 완료되면 초기 테스트를 진행할 준비가 된 것입니다. USB-C 케이블을 Nano 보드에 연결하고 작동해 보세요. 모든 연결이 정확하다면 정상적으로 작동할 것입니다.








먼저 리포(LiPo) 배터리에 양면 테이프를 붙이세요(물론 저는 양면 테이프의 열렬한 팬입니다). 다음으로 배터리 모니터링 회로를 제작합니다. 100 kΩ 저항 두 개와 0.1 µF 커패시터 하나를 사용하세요. 잘라낸 PCB 조각 위에 100 kΩ 저항 두 개를 병렬로 장착하고, 커패시터를 두 저항 중 하나와 병렬로 연결하세요. 두 저항과 커패시터의 한쪽 끝을 모두 함께 연결하고, 이 지점을 Nano의 A0 핀에 연결하여 배터리 신호를 읽습니다. 두 저항의 다른 끝은 리포 배터리 단자에 연결합니다. 한 저항은 양극에, 다른 하나는 음극에 연결하세요.
배터리 모니터링 회로 조립을 마친 후, 이 회로와 배터리를 충전 모듈에 연결하고, 그림과 같이 모듈을 충전함에 넣으세요. A0 핀을 직접 조립한 배터리 모니터링 회로에 연결하는 것을 잊지 마세요. 이제 올바르게 연결되었다면 정상적으로 작동할 것입니다. 스위치를 켜고 바로 재생해 보세요.


M1.6x8 나사 6개를 사용하여 덮개를 닫으십시오. 이 단계에서는 전선이 본체나 나사 구멍을 방해하지 않도록 각별히 주의하십시오.


좀 게으르니까, 다른 튜토리얼에 썼던 내용을 그냥 복사해서 붙여넣을게요 :P



이 프로젝트에 사용한 참고 자료들(제가 만든 펌웨어 포함)은 다음 링크들을 바탕으로 작성되었습니다.
* 작동 방식을 확인하고 싶은 분들을 위해 태국어로 된 YouTube 동영상입니다.
Retro-Go: ducalex/retro-go: ODROID-GO 및 기타 ESP32 기기용 레트로 에뮬레이션
ESP32 VMU: ESP32 VMU 핸드헬드 콘솔 - 네, 둠(Doom)도 실행됩니다! : 11단계 (사진 포함) - Instructables
Retro-Go S3 nano: Retro-Go S3-nano로 즐기는 레트로 게임 - Hackster.io
.img 파일 플래싱용 ESP Flasher: 릴리스 · Jason2866/ESP_Flasher
사실, 이건 제가 그냥 재미로 만든 SNES 버전을 수정해 놓은 것이어서 코드를 따로 저장해 두지 않았습니다. 어쨌든, 이 코드를 가져가서 더 수정하고 싶으신 분은 제 GitHub 저장소를 확인해 보세요.
nod3011/retro-go-ultimate: ESP32-S3 N32R16용
원문: https://www.instructables.com/Gameboy-With-ESP32-S3-NANO/