메뉴 전체보기

회원메뉴

Thingtendo - ESP32 S3를 사용한 Game & Watch 클론 > 게시판

본문 바로가기

쇼핑몰 검색

NO. 3507
제목 : Thingtendo - ESP32 S3를 사용한 Game & Watch 클론
2026-10-02 10:33

소개: Thingtendo - ESP32 S3를 사용한 Game & Watch 클론


소개: Thingtendo - ESP32 S3를 사용한 Game & Watch 클론


소개: Thingtendo - ESP32 S3를 사용한 Game & Watch 클론


소개: Thingtendo - ESP32 S3를 사용한 Game & Watch 클론


소개: Thingtendo - ESP32 S3를 사용한 Game & Watch 클론


소개: Thingtendo - ESP32 S3를 사용한 Game & Watch 클론


소개: Thingtendo - ESP32 S3를 사용한 Game & Watch 클론


소개: Thingtendo - ESP32 S3를 사용한 Game & Watch 클론


어렸을 때 어느 해 크리스마스에 Nintendo Game & Watch를 선물로 받을 수 있어서 정말 운이 좋았습니다. Donkey Kong Jr(DK-JR)였고, 그 게임을 완전히 익힐 때까지 가지고 놀았습니다!

2026년이 된 지금도 여전히 빈티지 휴대용 게임 컬렉션에 보관하고 있습니다. 하지만 기기들이 점점 낡기 시작했고, 플레이하다가 고장 낼까 봐 걱정되어 직접 만들어 보기로 했습니다.

조금 조사하다가 제가 찾던 것의 기본 구성을 갖춘 GitHub Repo를 우연히 발견했습니다. 하지만 DK-JR는 포함되어 있지 않았기 때문에, 직접 자세히 살펴보고 추가해야 했습니다.

제작하는 동안 Mario Bros, Balloon Fight 등 제가 좋아하는 G & W 게임을 몇 가지 더 플랫폼에 추가하기로 했습니다(총 4개). 이 게임들은 모두 버튼 배치가 같아서 쉽게 포함할 수 있었습니다.

이번 제작은 제가 지금까지 해 본 다른 제작보다 조금 더 까다롭습니다. ESP32-S3에 플래시해야 하는 ROM의 Bin 파일을 제공할 수 없는 이유는 저작권이 있기 때문입니다. 따라서 직접 파일을 구해야 합니다(여기서는 인터넷이 큰 도움이 됩니다. Internet Archive도 확인해 보세요…). 그런 다음 아트워크 등과 함께 bin 파일을 만들어야 합니다. 제 GitHub Repo에 'Claude Guide'라는 파일을 올려 두었습니다. 이 파일을 Repo 링크와 함께 Claude에 추가하고 필요한 파일을 만드는 데 도움을 요청하세요. 그러면 이후 과정은 간단합니다.




STEP 1. 준비물


준비물


준비물


준비물


준비물


준비물


준비물


준비물


준비물


준비물


이런 프로젝트에서는 보통 그렇듯이, 다운로드할 수 있는 PDF에 부품 목록을 정리해 두었습니다. 이 방식이 읽고 사용하기 더 편하다고 생각합니다. Ali Express에서 구매한 모든 부품의 링크도 포함했습니다.

이 단계에서 PDF를 다운로드하고 필요한 부품을 주문하세요.


다음 단계에서 PCB와 전면 및 후면 패널을 제작하는 방법을 확인하세요.




STEP 2. 보드 출력하기


보드 출력하기


사람마다 지식 수준이 다르므로, 이런 제작을 소개할 때는 기본적인 납땜 기술만 있는 사람이라도 완성할 수 있도록 충분한 정보를 제공하고 싶습니다. 여기에는 직접 PCB를 출력하는 방법에 대한 안내도 포함됩니다(정말 쉽습니다!).

그렇다면 가장 먼저 전면 패널과 PCB를 출력해야 합니다. 저는 이 작업을 위해 JLCPCB (제휴 관계 없음)를 사용합니다. 전면 패널은 실제로 부품이 하나도 장착되지 않은 PCB일 뿐입니다! 전면 패널 디자인은 Inkscape 라는 프로그램으로 제작하고(무료로 이용 가능), 드릴 구멍을 포함한 패널은 Fusion 360 에서 제작합니다(이 역시 무료입니다!).


단계:

  1. Thingtendo를 제작하는 데 필요한 파일은 Thingtendo 제 GitHub Repo 에서 찾을 수 있으므로, 아직 다운로드하지 않았다면 Repo를 데스크톱에 다운로드하세요.
  2. Gerber 파일 3개를 JLCPCB (제휴 관계 없음!)와 같은 PCB 제조업체에 보내면 3개의 패널을 제작해 줍니다. 다른 PCB 제조업체도 있으니 원하는 곳을 이용하세요.
  3. 표면 마감은 Lead Free HASL을 선택하세요. 그러면 패널이나 PCB에 납이 포함되지 않습니다.
  4. 전면 패널과 PCB의 색상은 원하는 대로 선택할 수 있습니다. 저는 검은색을 선택했습니다.
  5. 위 내용이 무슨 뜻인지 전혀 모르겠다면, 제가 작성한 보드 출력 방법에 관한 Instructable을 확인하세요. 다음에서 찾을 수 있습니다: 여기.




STEP 3. 전면 패널에 스위치와 수 핀 헤더 추가하기


전면 패널에 스위치와 수 핀 헤더 추가하기


전면 패널에 스위치와 수 핀 헤더 추가하기


전면 패널에 스위치와 수 핀 헤더 추가하기


전면 패널에 스위치와 수 핀 헤더 추가하기


전면 패널에 스위치와 수 핀 헤더 추가하기


전면 패널에 스위치와 수 핀 헤더 추가하기


제가 지금까지 만든 유사한 제작물과 이번 제작의 가장 큰 차이점은 방향 및 제어 스위치를 전면 패널에 추가했다는 것입니다! 따라서 이 스위치들을 ESP32-S3에 연결하기 위한 수 핀 헤더를 추가해야 했습니다.

단계:

  1. 5개의 택트 스위치를 각각 제자리에 납땜합니다. 이 스위치들은 스루홀 방식입니다.
  2. 시간, A, B용 SMD 택트 스위치도 3개 있습니다. 이것들도 조심스럽게 제자리에 납땜하세요. 제가 찾은 가장 좋은 방법은 기판의 각 납땜 패드에 먼저 납을 올린 다음, 스위치를 누른 상태에서 스위치 다리 하나를 납땜하고 이어서 다른 다리도 납땜하는 것입니다.
  3. 이제 전면 패널에 수 핀 헤더를 추가할 수 있습니다. 이때 전면 패널 위쪽에서 납땜 부위나 핀이 보이지 않도록 해야 하므로 다음과 같이 했습니다.
  4. 핀 주변의 플라스틱 가이드를 핀 끝부분만 살짝 보일 때까지 위로 밀어 올립니다.
  5. 기판에 끼운 다음 손가락으로 위쪽을 쓸어 보세요. 핀이 살짝 느껴지는 정도라면 각각에 납을 추가해 고정할 수 있습니다. 먼저 핀 하나를 납땜하고 핀 헤더가 똑바로 놓였는지 확인한 뒤 나머지도 제자리에 납땜하세요.
  6. 다음 단계에서는 TFT 화면의 핀 헤더 윗부분을 약간 잘라냅니다. 이 핀들은 TFT 화면의 핀보다 낮게 위치하므로 여기서는 자를 필요가 없습니다.




STEP 4. 전면 패널에 화면 추가하기


전면 패널에 화면 추가하기


전면 패널에 화면 추가하기


전면 패널에 화면 추가하기


전면 패널에 화면 추가하기


전면 패널에 화면 추가하기


전면 패널에 화면 추가하기


전면 패널에 화면 추가하기


전면 패널에 화면 추가하기


전면 패널에 화면 추가하기


다음 단계에 따라 전면 패널을 쉽게 분리할 수 있으며, 납땜을 제거할 필요도 없습니다. 특히 유지보수, 배터리 교체, 문제 해결 등에 중요합니다.

단계:

패널에 화면 추가하기

  1. 전면 패널에는 TFT 화면을 부착할 구멍이 4개 있습니다. 각 구멍에 20mm M2 나사를 넣은 다음 M2 너트를 끼워 나사를 고정합니다(저는 육각 소켓 헤드 나사를 선호합니다).
  2. 화면을 장착하기 전에 TFT 화면에 납땜된 핀 헤더의 윗부분을 잘라냅니다. 이렇게 하면 화면을 PCB에 장착했을 때 낮고 깔끔한 형태가 됩니다. 저는 핀 끝부분에서 약 2mm만 잘라냈습니다.
  3. 나사 위에 화면을 올리고 전면 패널에 맞춰 정렬합니다. 앞에서 끼운 너트가 스페이서 역할을 하므로 화면은 전면 패널에 평평하게 놓여야 합니다.
  4. 이제 각 나사에 작은 M2 스페이서(5mm)를 하나씩 추가합니다.
  5. 이제 TFT 화면의 수 핀에 로우 프로파일 암 핀 헤더를 연결할 수 있습니다.
  6. 아직 암 핀 헤더를 PCB에 납땜하지 마세요. 마지막 부분에서 납땜합니다.





STEP 5. ESP32-S3 Zero, 앰프 및 충전 모듈을 PCB에 추가하기


ESP32-S3 Zero, 앰프 및 충전 모듈을 PCB에 추가하기


ESP32-S3 Zero, 앰프 및 충전 모듈을 PCB에 추가하기


ESP32-S3 Zero, 앰프 및 충전 모듈을 PCB에 추가하기


ESP32-S3 Zero, 앰프 및 충전 모듈을 PCB에 추가하기


ESP32-S3 Zero, 앰프 및 충전 모듈을 PCB에 추가하기


ESP32-S3 Zero, 앰프 및 충전 모듈을 PCB에 추가하기


ESP32-S3 Zero, 앰프 및 충전 모듈을 PCB에 추가하기


ESP32-S3 Zero, 앰프 및 충전 모듈을 PCB에 추가하기


ESP32-S3 Zero, 앰프 및 충전 모듈을 PCB에 추가하기


단계:

  1. ESP32-S3에 수 핀 헤더를 납땜합니다.
  2. PCB에 끼운 다음 수 핀 헤더를 제자리에 납땜합니다.
  3. 이제 충전 및 전압 부스터 모듈을 살펴보겠습니다. 이 보드는 충전 모듈과 벅 부스터가 하나로 결합된 모듈입니다. 먼저 충전 및 전압 부스터 모듈의 출력 전압을 5V로 설정하겠습니다. 모듈을 전원에 연결하세요. 휴대폰 배터리, 가변 전원 공급 장치 또는 주변에 있는 어떤 전원이든 사용할 수 있지만, 전압이 5V보다 낮아야 합니다.
  4. 이제 멀티미터로 출력 전압을 확인하세요. 가능한 한 5V에 가깝게 맞춰야 하므로, 5V가 될 때까지 가변 저항을 돌리세요.
  5. 이제 모듈을 PCB에 추가할 수 있습니다. 제자리에 단단히 고정되도록 보드 밑면에 순간접착제를 조금 발랐습니다.
  6. 모듈의 각 납땜 지점에 납땜을 조금 한 다음, 저항기 다리에서 나온 전선을 각 납땜 지점에 연결하세요.
  7. 전선을 아래로 구부려 PCB의 납땜 패드에 닿게 한 다음 잘라내세요.
  8. PCB의 납땜 패드에 납땜을 추가하고 전선을 각각 연결하세요. 이렇게 하면 튼튼하게 연결할 수 있습니다.
  9. 슬라이드 스위치를 제자리에 납땜하세요.




STEP 6. 전원 추가


전원 추가


전원 추가


전원 추가


저는 보통 전자 폐기물에서 회수한 재활용 휴대폰 배터리를 사용합니다. 이번 제작에서는 오래된 카메라 배터리를 사용했는데, 두께가 얇아 잘 맞습니다. Li-Po 배터리를 사용해도 문제없습니다. 다만 PCB에서 확보한 공간(약 40mm X 40mm)에 들어가는지 확인하세요.

단계:

  1. PCB의 배터리 납땜 지점에 납땜을 조금 하세요.
  2. 배터리의 각 납땜 지점에 납땜을 조금 하세요. 배터리의 납땜 지점 주변 플라스틱이 너무 많이 녹지 않도록 신속하게 작업하세요.
  3. 배터리의 각 납땜 지점에 저항기 다리를 두 개씩 연결하세요. 배터리가 PCB의 납땜 지점과 정확히 맞지 않아 전선을 사용해야 했습니다.
  4. 배터리 뒷면에 접착제를 조금 바르고 PCB의 제자리에 붙이세요. 저항기 다리가 PCB의 납땜 지점에 연결되어 있는지 확인하세요.
  5. 모든 부분의 납땜을 마무리하세요.




STEP 7. ESP32-S3 Zero에 펌웨어 플래시하기


ESP32-S3 Zero에 펌웨어 플래시하기


이 단계에서는 다음을 사용하여 미리 빌드된 펌웨어 파일을 ESP32-S3-Zero에 기록합니다: esptoolEspressif(ESP32 칩 제조사)가 제공하는 무료 명령줄 도구입니다. Windows, Mac, Linux에서 동일한 방식으로 작동하며, 아래 가이드는 Windows 명령을 사용하고 Mac/Linux용 명령도 함께 설명합니다.

이 단계에서는 Arduino IDE나 다른 소프트웨어가 필요하지 않습니다. Python과 esptool만 있으면 됩니다.

준비물

  1. 릴리스에 포함된 펌웨어 파일 4개: bootloader.bin, partition-table.bin, ota_data_initial.bin, gandw_handheld.bin. 이 파일들은 GitHub 저장소
  2. 데이터 전송이 가능한 USB 케이블(충전 전용 케이블은 안 됨)
  3. 컴퓨터에 설치된 Python 3 (python.org — Windows에 설치할 때는 "Add Python to PATH" 확인란을 선택하세요.)

1단계: esptool 설치

터미널을 여세요(키보드에서 Windows 키 + R). Windows에서는 명령 프롬프트를, Mac/Linux에서는 터미널을 열고 다음을 실행하세요:


pip install esptool

정상적으로 설치되었는지 확인하세요:


python -m esptool version

버전 번호가 출력되어야 합니다(예: esptool v5.3.1). 대신 오류가 표시되면 Python이 올바르게 설치되었고 시스템 PATH에 등록되어 있는지 다시 확인하세요.

2단계: 보드 연결

USB를 통해 ESP32-S3-Zero를 컴퓨터에 연결하세요.

3단계: 직렬 포트 찾기

Windows: 장치 관리자를 열고 "Ports (COM & LPT)"를 확장하세요. "USB Serial Device (COM4)" 또는 "Silicon Labs CP210x (COM3)"와 같은 항목을 찾은 다음 COM 번호를 적어 두세요.

Mac: 터미널을 열고 ls /dev/cu.*를 실행하세요. /dev/cu.usbserial-0001 또는 /dev/cu.SLAB_USBtoUART와 같은 항목을 찾으세요.

Linux: ls /dev/ttyUSB* 또는 ls /dev/ttyACM*을 실행하고 표시되는 장치 이름을 적어 두세요.

어떤 플랫폼에서도 아무것도 표시되지 않으면 컴퓨터에 보드의 USB-직렬 변환 칩용 드라이버가 필요할 수 있습니다. 사용 중인 보드의 판매 페이지나 문서에서 어떤 칩을 사용하는지 확인하세요(일반적으로 CP210x 또는 CH340). 그런 다음 해당 칩 이름과 "driver"를 함께 검색하여 운영 체제에 맞는 드라이버를 찾으세요.

4단계: 펌웨어 파일이 있는 폴더로 이동

터미널에서 다운로드한 .bin 파일 4개가 들어 있는 폴더로 cd 명령을 사용해 이동하세요. 예를 들어 Windows에서는 다음과 같습니다:


cd "C:\Users\YourName\Downloads\firmware"

4개 파일이 모두 있는지 확인하세요:

Windows: dir *.bin Mac/Linux: ls *.bin

5단계: 플래시하기

다음 명령을 실행하세요. Step 3에서 확인한 실제 포트에 맞게 COM4를 바꾸세요(Mac/Linux에서는 포트 경로를 사용합니다. 예: /dev/cu.usbserial-0001 또는 /dev/ttyUSB0):


python -m esptool --chip esp32s3 -b 460800 --port COM4 --before default-reset --after hard-reset write-flash --flash-mode dio --flash-size 4MB --flash-freq 80m 0x0 bootloader.bin 0x8000 partition-table.bin 0xe000 ota_data_initial.bin 0x10000 gandw_handheld.bin

도구가 칩에 연결된 다음 4개 파일을 차례로 기록하고 검증하는 과정이 표시되며, 마지막에는 다음과 같은 내용이 출력됩니다:


Hash of data verified.
Hard resetting via RTS pin...

이 메시지가 표시되면 성공한 것입니다. 보드가 자동으로 재설정되고 새 펌웨어로 부팅됩니다.

문제 해결

.bin 파일 중 하나에 대해 "No such file or directory"가 표시되는 경우 — 올바른 폴더에 있지 않은 것입니다. Step 4를 다시 수행하고 플래시하기 전에 dir *.bin / ls *.bin으로 확인하세요.

"Connecting..."에서 멈추고 진행되지 않는 경우 — 일부 ESP32-S3 보드는 새 펌웨어를 받기 전에 수동으로 부트로더/다운로드 모드로 전환해야 합니다. 보드에 BOOT 및 RESET 버튼이 있다면 BOOT 버튼을 누른 상태에서 RESET을 눌렀다 놓고, BOOT 버튼을 놓은 다음 플래시 명령을 다시 실행하세요. 모든 보드에 이 과정이 필요한 것은 아닙니다. 일부 보드는 자동으로 부트로더 모드로 재설정됩니다. 하지만 일반 명령이 멈춘다면 이 방법으로 해결할 수 있습니다.

Permission denied(Mac/Linux 전용) — sudo를 사용해 명령을 실행하거나 사용자를 dialout 그룹(Linux)에 추가해야 할 수 있습니다:


sudo usermod -a -G dialout $USER

그런 다음 로그아웃했다가 다시 로그인합니다.

작동 여부 확인

플래싱이 완료되면 화면이 켜지고 게임 선택 메뉴가 표시됩니다. 버튼과 화면을 이미 연결해 두었다면 즉시 탐색하고 게임을 시작할 수 있습니다.




STEP 8. 패널 조립하기


패널 조립하기


패널 조립하기


패널 조립하기


패널 조립하기





STEP 9. 플레이 방법


플레이 방법


Game & Watch 휴대용 게임기 사용 방법

1: 전원 켜기

전원 스위치를 ON 위치로 밉니다. 잠시 후 화면에 게임 선택 메뉴가 나타납니다.

배터리를 충전하려면 USB-C 케이블을 충전 포트에 연결합니다.

2: 게임 선택하기

메뉴에는 한 번에 게임 하나가 표시되며, 화면 하단에 게임 이름과 연도가 표시됩니다. 게임은 13개입니다:

  1. Donkey Kong Jr. (1982)
  2. Balloon Fight (1986)
  3. Climber (1986)
  4. Super Mario Bros. (1986)
  5. Ball (1980)
  6. Helmet (1981)
  7. Parachute (1981)
  8. Octopus (1981)
  9. Popeye (1981)
  10. Fire (1981)
  11. Turtle Bridge (1982)
  12. Tropical Fish (1985)
  13. Mario the Juggler (1991)

다음을 누릅니다: Left 또는 Right 를 눌러 게임 목록을 스크롤합니다. 다음을 누릅니다: Jump 를 눌러 화면에 표시된 게임을 불러옵니다.

게임이 로드되면 원래의 Game & Watch와 마찬가지로 먼저 시계 화면이 표시됩니다.

  1. 다음을 누릅니다: Game A 를 눌러 일반 게임을 시작합니다.
  2. 다음을 누릅니다: Game B 를 눌러 더 어렵고 빠른 버전을 시작합니다.

4: 플레이하기

조작 방법은 게임에 따라 다릅니다.

Donkey Kong Jr., Balloon Fight, Climber 및 Super Mario Bros.

  1. 다음을 사용합니다: D-pad (위, 아래, 왼쪽, 오른쪽)로 이동합니다.
  2. 다음을 누릅니다: Jump 를 눌러 점프하거나 게임의 동작을 수행합니다.

Donkey Kong Jr. 팁: 화면 상단의 열쇠를 잡으려면 오른쪽 위 가지의 왼쪽 끝까지 이동합니다. 열쇠가 자신에게 가장 가까이 흔들려 올 때까지 기다린 다음, 다음을 누릅니다: Jump + Left 를 동시에 누릅니다.

그 외 모든 게임(2버튼 게임)

이 게임들은 원래 왼쪽 버튼과 오른쪽 버튼만 사용해 플레이했습니다. 이 휴대용 게임기에서는 다음과 같이 조작합니다:

  1. D-pad Right 를 누르면 왼쪽으로 이동합니다.
  2. Jump 를 누르면 오른쪽으로 이동합니다.

이렇게 하면 원래의 휴대용 게임기처럼 양쪽 엄지손가락 아래에 버튼이 하나씩 놓입니다.


5: Time 버튼

Time 버튼은 기능 키입니다. 단독으로 사용하거나 다른 버튼과 함께 사용하면 추가 기능을 이용할 수 있습니다.

조작 기능

Time을 누르기 게임을 일시 정지하거나 다시 시작합니다

Time + Left 볼륨 낮추기

Time + Right 볼륨 높이기

Time + Down을 2초간 누르기 게임 메뉴로 돌아갑니다

Time + Up을 2초간 누르기(게임 중) 게임 오버 후 계속합니다

Time + Up을 2초간 누르기(메뉴에서) 컬러 모드를 켜거나 끕니다


6: 일시 정지

게임 중에 Time 을 빠르게 누르세요. 화면이 멈추고 소리가 중지됩니다. Time 을 다시 누르면 게임을 계속할 수 있습니다.

게임이 일시 정지된 상태에서도 다음을 길게 눌러 메뉴로 돌아갈 수 있습니다: Time + Down 을 2초간 누르세요.

7: 볼륨 조절

다음 버튼을 누른 상태에서 Time 을 누르고, Right 를 눌러 볼륨을 높이거나 Left 를 눌러 낮추세요. 메뉴와 게임 중 모두 사용할 수 있습니다.

8: 게임 오버 후 계속하기

마지막 목숨을 잃었나요? 포기하지 마세요. 게임이 끝난 후 약 10초 이내에 Time + Up 을 2초간 누르세요. 게임이 몇 초 전, 아직 목숨이 남아 있던 시점으로 대략 되돌아갑니다.

점수도 해당 시점의 점수로 돌아갑니다.

9: 컬러 모드(이스터 에그)

원래 Game & Watch 화면은 회색 바탕에 검은색만 표시했지만, 이 휴대용 기기에는 숨겨진 컬러 모드가 있습니다.

  1. 게임 메뉴로 이동하세요.
  2. 컬러로 플레이하려는 게임까지 스크롤하세요.
  3. 다음을 길게 누르세요: Time + Up 을 2초간 누르세요. 삐 소리가 납니다.
  4. 다음을 누르세요: Jump 게임을 컬러로 시작합니다.


10: 메뉴로 돌아가기

게임을 전환하려면 플레이 중에 다음을 길게 누르세요: Time + Down 을 2초간 누르세요. 게임 선택 메뉴로 돌아갑니다.


원문: https://www.instructables.com/Thingtendo-a-Game-Watch-Clone-Using-ESP32-S3/

좋아요 0
게시판

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