아두이노 나노로 만드는 레고 아케이드 게임 박스 - 배터리, LCD 탑재 DIY 키트
부품 및 소모품
| 아두이노 나노 R3 | 1개 |
| TP4056 배터리 충방전 컨트롤러 | 1개 |
| SparkFun 빅 레드 돔 버튼 | 4개 |
| Adafruit 표준 LCD - 16x2 흰색/파란색 (I2C 모듈 포함) | 1개 |
필요한 도구 및 기계
앱 및 온라인 서비스
프로젝트 소개
자녀가 있다면 레고 세트를 사줬을 때 겪는 문제를 아실 겁니다. 조립하고 잠시 놀다가 나중엔 모든 브릭이 한 덩어리가 됩니다. 아이들이 자라면 이 브릭 더미를 어떻게 처리할지 고민하게 됩니다.
우리는 버려진 레고 브릭을 재활용해 아케이드 게임기를 만들기로 했습니다.
이 단계별 가이드는 몇 달의 작업을 거쳐 누구나 따라 할 수 있고 비용도 매우 저렴하게 만들 수 있도록 정리한 것입니다. 코드는 어떤 아두이노 보드에서도 컴파일되도록 의존성 없이 작성되었으며, 게임들은 아이들에 의해 철저히 테스트되었습니다 :-)
이 게임이 이전에 공개된 많은 게임들과 다른 점은 무엇일까요?
첫째, 5가지 게임이 내장되어 있습니다:
- 메모리 게임 ("사이먼 세이즈" 스타일, 터치미 게임과 유사)
- 반응 속도 게임 (두더지 잡기 게임과 유사)
- 대회/경쟁 게임 (2~4인용)
- 멜로디 게임 (유아와 어린이를 위한 자유 연주 모드)
- 전쟁 게임 (2~4인 성인용)
둘째, 훌륭한 디자인(우리의 관점)으로 누구나 쉽게 따라 만들 수 있습니다.
셋째, 플라스틱을 재활용하므로 지구 친화적입니다.
이 가이드 마지막에는 동영상 버전도 있습니다.
1단계: 부품 리스트


불필요한 레고 브릭이 없다면 레고 클래식 10704 세트(900피스)를 구매하는 게 가장 쉽습니다.
프로젝트에 필요한 물품:
- 불필요한 레고 브릭 1kg (2lb) (메가 블록 등 타 브랜드 유사 브릭도 가능)
- 레고용 25x25cm 베이스 플레이트 (32x32 돌기). 없으면 온라인에서 약 $3에 구매 가능 (검색어: "32 25 blocks")
- 30x30cm 투명 아크릴 판 (5~6mm 두께)
- 대형 아케이드 스타일 60mm 푸시 버튼 4개 (빨강, 초록, 파랑, 노랑 추천) (검색어: "60mm arcade button"). 개당 약 $2로 가장 비싼 부품
- 모멘터리 푸시 버튼 16mm 반경 2개 (흰색, 검은색 추천) (검색어: "16mm push button")
- 전원 온/오프 로커 스위치 27x21mm 마운트 크기 (투명 빨강 4핀 추천) (검색어: "rocker switch 16a")
- 아두이노 나노
- 1602 LCD 디스플레이 및 I2C 연결 모듈
- 4옴 5W 스피커 2개, 크기 30x70mm (다른 소형 스피커도 가능하지만 CAD 도면은 30x70mm 기준)
- 8x6cm 프로토타입 보드 또는 830핀 브레드보드
- 18650 충전지 2개 (고장 난 노트북 배터리에서 재활용 가능)
- 듀얼 18650 배터리 홀더 (검색어: "holder 2 x 18650")
- TP4056 충전 컨트롤러 및 방전 보호 모듈
- 5V 스텝업 컨버터 (최소 500mA)
- 자잘한 부품: 전선, 미니 USB 케이블 또는 DIY 플러그, 마이크로 USB 소켓 PCB 브레이크아웃, M3 볼트/너트/와셔, 상단 커버 나사 4개
- 저항: 100Ω 6개, 1kΩ 1개, 10kΩ 3개
2단계: 박스 만들기



이 부분은 프로젝트에서 가장 쉬운 부분으로 아이들에게 맡길 수 있습니다.
레고 32x32 베이스 플레이트를 놓고 재활용 브릭으로 벽을 쌓으세요. 총 9층 정도가 적당합니다. 우리는 베이스를 연한 회색으로 하여 랜덤 컬러 브릭 벽이 돋보이게 했습니다.
어떤 박스도 똑같지 않습니다. 레이어를 쌓을 때 창의력을 발휘하세요. 작은 부품도 재활용하면 멋집니다. 불규칙한 모양도 예쁩니다. 창문, 자동차 앞유리, 문, 상자 등을 추가하세요.
박스에는 최소 하나의 풀사이즈 레고 문이 있어야 합니다. 벽에 로커 스위치를 설치하기 위해 필요합니다.
3단계: 상단 커버 만들기




상단 커버는 5~6mm 아크릴(투명 아크릴 시트)로 만듭니다. CAD 도면을 다운로드해 USB에 담아 근처 CNC 샵에 가면 가공해 줍니다. CAD 도면에는 로커 스위치 마운팅 플레이트도 포함되어 있습니다.
상단 플레이트 마무리가 필요합니다. 사포와 나무 블록으로 모서리 베벨링을 하고, 스피커와 1602 디스플레이 장착용 구멍을 뚫으세요. 1602 디스플레이는 아크릴 시트의 LCD 윈도우 옆에 작은 삼각형 홈이 필요합니다(사진 참조). 저는 회전 공구(드레멜)와 작은 라우터 비트로 반 깊이로 가공했습니다.
top-template2.dxf
4단계: 상단 커버에 모든 부품 장착



대형 아케이드 버튼 4개, 게임 변경/선택 버튼 2개, 스피커 2개, 1602 LCD+I2C 모듈을 설치하세요. 모든 부품은 M3 나사 + 와셔 + 너트로 뒷면에서 고정합니다.
아케이드 버튼을 설치하기 전에 LED 라이트 홀더를 제거하세요. 약간 수정이 필요합니다. 다음 단계를 참조하세요.
5단계: 아케이드 버튼 LED 개조



이 아케이드 버튼은 12V용으로 설계되었습니다. 이 프로젝트의 기본 전압인 5V에서도 작동하지만 너무 어둡습니다. 아케이드 버튼에서 LED 소켓을 제거하고, LED 홀더를 빼내어 LED와 저항을 제거했습니다. 460Ω 저항을 납땜 제거하고 100Ω으로 교체했습니다. 완료 후 모두 다시 조립하여 버튼에 장착했습니다.
6단계: (선택) 컨트롤 버튼 라벨
두 컨트롤 버튼에 라벨이 붙은 것을 보셨을 겁니다. 첫 번째 버전엔 없었지만 두 번째 제작 때 추가했습니다.
두 버튼은 게임 상태에 따라 여러 기능을 합니다. 흰색 버튼은 선택된 게임을 시작하거나 일부 게임에서 선택을 확인합니다. 검은색 버튼은 게임을 변경하거나 게임 중 나가기용입니다.

원형 라벨을 만들려면 얇은 알루미늄 시트(최대 1mm), 홀쏘 드릴 비트, 스텝 드릴 비트, 레터 펀치(사진 참조)가 필요합니다. 홀쏘로 원을 자르고, 스텝 비트로 내경을 넓힌 후 레터 펀치로 글자를 새깁니다. 글자를 더 잘 보이게 하려면 영구 마커(샤피)로 칠하세요.
7단계: 브레이크아웃 보드 만들기

두 가지 옵션이 있습니다. 브레드보드를 사용해 아두이노를 케이블로 연결하거나, LCD 패널 뒤에 작은 브레이크아웃 보드를 설치하는 것입니다.
첫 번째 제작 땐 브레드보드를 사용했습니다(사진 참조). 두 번째 땐 브레이크아웃 보드 제작에 더 많은 시간을 들였습니다. 기능은 동일하지만 전선이 적고 브레이크아웃이 LCD 패널 아래에 숨어 있습니다.
브레이크아웃 보드를 선택했다면 8x6 프로토타입 보드를 사진처럼 자르세요. 큰 부분은 브레이크아웃용, 작은 부분은 전원 공급 장치용으로 사용합니다.

아두이노 나노를 이 프로토 보드에 납땜하세요.
8단계: 연결 배선

케이블을 준비해 다이어그램에 따라 설정, 스위치, 연결을 나노에 배선하세요.

이더넷 트위스트 페어 케이블을 쓰기 시작한 뒤로 프로젝트용 전선 구하는 고민을 잊었습니다. 색상이 다르고 다심선이어서 잘 끊어지지 않습니다. 작업할 때만 납땜을 매우 빠르게 해야 절연체가 타지 않습니다.

스피커 연결용 100Ω 저항 배선 방식을 확인하세요.
연결 관련 참고사항:
- 검정/흰색 컨트롤 버튼은 D2/3 핀에서 그라운드로 직접 연결 (나노 내부 풀업 저항 사용)
- A4/A5는 I2C SDA/SCL 핀에 연결 (LCD I2C 모듈용)
- 스피커는 D10/11에 연결 (이 핀들은 PWM 지원)
- 모든 그라운드 와이어(약 5개) 연결을 위해 작은 구리 라인을 그라운드 레일로 추가하는 것 추천

9단계: 버튼 배선

모든 아케이드 버튼은 저항 직렬 연결을 통해 단일 핀 A1에 연결됩니다. A1은 내부 아날로그 풀업으로 설정됩니다. 이는 전선 수를 줄여주는 아두이노의 잘 알려지지 않은 기능 중 하나입니다.
연결 방식: A1에서 1kΩ 저항을 통해 첫 번째 버튼으로. 버튼1에서 10kΩ을 통해 버튼2로. 버튼2에서 10kΩ을 통해 버튼3으로. 버튼3에서 10kΩ을 통해 버튼4로. 각 버튼은 '닫힘' 상태에서 그라운드로 단락됩니다. 각 버튼에 이미 LED용 그라운드가 있으므로 스위치의 두 번째 핀을 LED의 그라운드에 연결하세요. 다이어그램을 참조하여 배선을 이해하세요.

이 시점에서 미니 USB 케이블을 아두이노 나노에 꽂고 스케치를 업로드하면 게임을 플레이할 수 있습니다. 휴대용으로 만들려면 전원 공급 장치만 있으면 됩니다.
10단계: 배터리 설치

고장 난 노트북 배터리에서 재활용한 18650 셀 2개를 사용했습니다. 용량이 낮은 것들(약 600mAh)이라 고부하 용도로는 쓰고 싶지 않았지만, 이 장치는 전력 소모가 적어 며칠은 충분히 작동합니다.
배터리는 듀얼 18650 홀더에 장착하고 전원 공급 장치에 쉽게 연결할 수 있는 커넥터를 달았습니다.
11단계: USB 소켓 연장 장착

게임을 분해하지 않고도 충전하고 펌웨어를 업그레이드할 수 있어야 합니다. 그래서 블록 중 하나를 뚫어 마이크로 USB 커넥터를 숨겼습니다.

아두이노 나노에서 USB를 연장하기 위해 미니 USB 케이블을 잘라 USB-A 단자(큰 커넥터)를 제거하고 피복을 벗겼습니다. 제 경우 빨강/검정이 전원, 흰색/초록이 D+/D- 연결이었습니다.

D+/D-는 마이크로 USB 브레이크아웃에 납땜합니다. 5V와 그라운드(빨강/검정)는 전원 공급 장치를 거쳐야 합니다.
나노는 미니 USB를 쓰는데 왜 마이크로 USB 브레이크아웃을 썼을까요? 단순히 마이크로 USB가 우리 집 곳곳에 있어서입니다. 휴대폰 충전용으로 쓰이니까요. 그래서 휴대폰 케이블로 게임을 충전하고 펌웨어를 업그레이드할 수 있습니다 :-)
12단계: 전원 공급 장치 제작

작은 프로토타입 보드에 TP4056 배터리 충전/보호 모듈과 5V 부스터를 바로 납땜했습니다.


TP4056 입력은 마이크로 USB 소켓에서 옵니다. 배터리 케이블은 TP4056의 B+/- 핀에 연결. OUT+/- 핀은 로커 스위치로 갑니다. 로커 스위치에서 +/- 연결이 5V 부스터 모듈로 가고, 부스터 출력에서 벗겨낸 USB 케이블의 빨강/검정 선을 연결합니다.
배선 이해를 위해 다이어그램을 참조하세요.
13단계: 마이크로 USB 브레이크아웃 에폭시 고정

레고 브릭에 마이크로 USB 브레이크아웃을 에폭시로 고정했습니다. 경화 후에는 휴대폰 소켓보다 튼튼해져서 아이들이 충전해도 부러지지 않습니다.
속경화 에폭시 사용을 권장합니다. 없으면 경화제를 레진에 조금 더 넣고 잠시 두세요.
14단계: 로커 스위치 설치 및 전원 하네스 연결

이 스위치는 250V 메인 전압용으로 설계된 거대한 스위치입니다. 하지만 모양이 예쁘고 표준 레고 시티 문에 딱 맞아서 이 모델을 사용했습니다. 스위치를 마운팅 플레이트에 끼우고 벽돌 벽에 2개 나사로 고정했습니다(벽은 미리 구멍을 뚫어둠).


이제 하네스와 에폭시로 고정된 마이크로 USB 브레이크아웃도 최종 설치할 수 있습니다. 일부 추가 브릭으로 부품들을 베이스에 고정한 것을 확인하세요.
15단계: 뚜껑 닫기

아두이노 나노가 고정된 상단 커버에 미니 USB 케이블을 꽂고 뚜껑을 닫으세요.
벽에 4개 구멍을 미리 뚫고 4개 나사로 상단을 박스에 고정했습니다.
16단계: 코드

게임의 첫 버전은 제가 작성했고, 친구 알렉스(Alex)가 4개 버전을 추가하며 4개 게임을 더하고 코드를 완벽하게 정리했습니다. 소리에는 Reyboz의 작업을 활용했는데, 아두이노 Tone 라이브러리 기본값에 비해 음질이 놀랍습니다.
언급했듯 코드는 아이들의 광범위한 QA 테스트 후 몇 달간 최적화되었으며 현재 버전 4가 GitHub에 업로드되어 있습니다.
최신 소스 코드: https://github.com/LenkaDesign/Arduino-Arcade-Lego-Games-Box
아두이노 IDE 라이브러리 매니저에서 1602 I2C LCD 라이브러리를 설치한 후 우리 코드를 업로드하면 됩니다.
먼저 button-calibration.ino를 업로드하고 각 아케이드 버튼이 내는 값을 종이에 기록하세요. 이 스크립트는 EEPROM도 지워 최고 점수를 리셋합니다.
그 후 Game-Settings.h에서 측정한 버튼 값으로 변경하고 메인 Lego-Games-Box.ino 파일을 업로드하면 플레이 가능합니다(위 회로도에 따라 모든 것을 연결했다면).
참고: 아이들을 위해 만든다면 Game-settings.h에서 String GameTitle[] = {"Memory Game", "Reaction Game", "Tournament Game", "Melody Game", "Nuclear War Game"};의 마지막 항목을 제거하세요. 이 마지막 항목은 각 플레이어가 적을 선택하는 규칙이라 아이들에겐 너무 공격적일 수 있습니다.
17단계: 상세 제작 동영상
지침 읽기보다 영상 시청이 편하다면 이 빌드의 영상 버전을 참고하세요.
18단계: 게임 규칙
현재 5개 게임이 구현되어 있습니다. 이 박스로 만들 수 있는 더 많은 게임 아이디어가 있다면 댓글로 알려주세요. 각 게임의 규칙과 플레이 방법을 간략히 설명합니다.
측면의 로커 스위치를 켜서 레고 아케이드 게임 박스를 시작하세요. 모든 게임은 마리오 추억의 게임 사운드와 함께합니다. 시작 시 마리오 게임의 시작 멜로디가 재생됩니다.
시작하면 LCD에 현재 선택된 게임이 표시됩니다. 게임을 변경하려면 검은색 버튼을 누르세요.
하고 싶은 게임을 정했으면 흰색 버튼을 눌러 시작하세요.
이미 실행 중인 게임을 종료하려면 검은색 버튼을 누르세요.
시작 시 빨간 버튼을 누르면 소리를 끌 수 있습니다(야간 모드).
메모리 게임 ("사이먼 세이즈" 스타일, 터치미 게임과 유사)
규칙은 잘 알려져 있고 간단합니다. 게임이 음/불빛 시퀀스를 보여주면 이를 반복해야 합니다. 매번 시퀀스에 음/불빛이 하나씩 추가됩니다. 오래 버틸수록 기억력이 좋습니다. 아이들과 어른의 단기 기억력 훈련에 훌륭합니다.
반응 속도 게임 (두더지 잡기 게임과 유사)
불이 켜진 버튼을 충분히 빨리 눌러야 합니다. 오래 플레이할수록 버튼이 더 빨리 켜집니다. 아이들과 어른의 반응 속도 훈련에 좋습니다.
대회/경쟁 게임 (2~4인용)
5라운드가 주어집니다. 신호(마리오 코인 소리)가 주어지면 각자 자기 버튼을 최대한 빨리 눌러야 합니다. 가장 먼저 누른 사람이 라운드 승리. 5라운드 후 승리 횟수를 계산해 승자를 발표합니다.
멜로디 게임 (유아와 어린이를 위한 자유 연주 모드)
유아에게 훌륭합니다. 버튼을 누르고 있으면 번갈아 가며 곡이 재생됩니다. 아이들 초기 테스트 후 1살 막내가 정말 하고 싶어 하지만 방법을 모른다는 걸 깨달았습니다. 이 게임의 규칙은 규칙 없음. 아무 버튼이나 누르면 소리가 납니다.
전쟁 게임 (2~4인 성인용)
이 게임 아이디어는 트럼프/김정은의 '누가 더 큰 핵 버튼을 가졌나' 위기 때 친구 알렉스가 냈습니다. 규칙 설명엔 별도 영상이 필요합니다(여기와 여기)지만 요약하면: 시작 시 플레이어 수를 정하고, 각 라운드마다 각자가 적을 선택합니다. 모두 적을 선택하면 미사일이 발사됩니다. 적으로 선택된 사람은 잠시 내 미사일을 요격할 버튼을 눌러 자기 나라를 구할 수 있습니다. 한 나라만 남을 때까지 라운드가 계속됩니다.
19단계: 최종 결과
우리는 아이들을 위해 게임을 만든 3명의 친구들입니다. 이 지침으로 여러분도 직접 버전을 만들어 보시길 바랍니다. 질문이나 제안은 댓글로 남겨주세요.
고해상도 최종 사진:

코드
GitHub
https://github.com/LenkaDesign/Arduino-Arcade-Lego-Games-Box
커스텀 파트 및 인클로저
top-template2_Ku502q1zeA.dxf
회로도


