레트로 아케이드 시계: 아두이노 메가 기반 인터랙티브 침대 옆 타이머
필요한 부품 및 준비물
| 부품 |
수량 |
비고 |
| 아두이노 메가 2560 |
1 |
메인 컨트롤러 (메모리 여유 필요) |
| 3.2인치 TFT LCD 터치스크린 실드 |
1 |
메가 전용 확장 보드 + 디스플레이 세트 |
| DS3231 RTC 모듈 |
1 |
배터리 백업으로 정전 시 시간 유지 |
| ISD1820 음성 녹음/재생 모듈 |
1 |
알람음 직접 녹음 가능 |
| PLA 필라멘트 |
적당량 |
3D 프린트 케이스용 |
| 2액형 에폭시 수지 |
1 |
케이스 조립용 강력 접착 |
| USB 케이블 2m + 충전기 |
1 |
전원 공급 및 코드 업로드 겸용 |
| 글루건, 케이블 타이 |
각 1 |
조립 및 고정용 |
자동 백라이트 디밍 옵션 (침대 옆 시계용 권장)
| 부품 |
수량 |
| 270kΩ 저항 |
1 |
| 3.3V 제너 다이오드 |
1 |
| 0.5W 47Ω 저항 |
1 |
| 조도 센서 (LDR / CdS) |
1 |
필요한 도구
- 3D 프린터 (Creality Ender 3 등)
- 납땜 장비
- 드릴 (3mm, 케이스 구멍용)
소프트웨어 및 라이브러리
- 아두이노 IDE v1.0.6 (호환성 위해 구버전 권장)
- 라이브러리 (모두 첨부 파일 제공):
- UTFT, URTouch (Rinky-Dink Electronics)
- Time, DS1307RTC
- Wire, EEPROM (내장)
4가지 선택 가능한 프로그램 모드
- 아케이드 시계: 동키콩 마리오, 스페이스 인베이더, 팩맨 애니메이션
- 팩맨 시계: 인터랙티브 팩맨/미즈 팩맨 게임 + 시계 기능
- 동키콩 시계: 인터랙티브 DK 게임 + 시계 기능
- 텀블 고스트: 플래피 버드 스타일 팩맨 유령 게임
제작 단계별 가이드
1단계: 3D 케이스 출력
Thingiverse(#3017701)에서 STL 파일 다운로드 후 출력. 엔더 3 기준 출력 가능.
2단계: 회로 구성
RTC 모듈 장착
아두이노 메가 후면에 핫글루와 폼으로 절연 고정. SDA/SCL은 아두이노 20/21번 핀(A4/A5), VCC/GND는 5V/GND에 연결. 배터리(CR2032) 장착 필수.
사운드 모듈 장착
ISD1820 모듈과 스피커를 아두이노 후면에 동일하게 절연 고정. 제어 핀: D8 (아두이노), 전원: 5V/GND.
자동 백라이트 디밍 회로 (선택)
- 케이스 후면에 3mm 구멍 2개 뚫고 LDR 다리 관통, 핫글루로 고정
- LDR 회로: A7 핀에 270kΩ 풀업 저항 연결
- TFT 디스플레이 분리 후 핀 19(LED_A) 플라스틱 제거 후 꺾기
- 꺾인 핀에 47Ω 저항 납땜 → 아두이노 D9(PWM) 연결
- 같은 핀에 3.3V 제너 다이오드(애노드 측) → GND 연결로 과전압 보호
원리: 주변광이 어두우면(LDR 값 낮음) PWM 듀티 낮춰 백라이트 어둡게, 밝으면 최대로.
TFT 실드 장착
디스플레이를 실드에 꽂고 아두이노 메가 위에 결합. RTC 배터리와 알람 설정(EEPROM 저장)으로 전원 차단 시 설정 유지.
3단계: 코드 업로드 및 설정
- 첨부된 라이브러리 ZIP 파일들을 IDE에 추가 (스케치 → 라이브러리 포함하기 → .ZIP 라이브러리 추가)
- 그래픽 비트맵 파일들을 스케치 폴더에 복사
- 원하는 모드 코드(1~4번 중 택일) 열기
- TFT 칩셋에 따라 초기화 코드 수정 필요할 수 있음:
- Sainsmart:
initlcd.h에서 0x2B3F → 0x3B3F
- ILI9341 컨트롤러:
UTFT myGLCD(SSD1289,...) → UTFT myGLCD(ILI9341_16,...)
- 터치 Y축 반전:
yT = 240 - myTouch.getY();로 수정 (2곳)
- 컴파일 후 업로드
4단계: 시계 설정 및 알람 테스트
- 화면 중앙 터치 → 설정 화면 진입
- 24시간제로 현재 시간 및 알람 시간 설정
- SAVE 버튼으로 저장 (RTC 배터리 + EEPROM으로 영구 보존)
- ISD1820 모듈의 REC 버튼 누르며 마이크에 알람음 녹음 (예: 팩맨 시작 음악)
- PLAY-E 버튼으로 재생 확인
- 알람 시간 설정 후 테스트: 알람 울리면 화면 중앙 터치로 해제
5단계: 최종 조립
- 케이스 후면에 USB 케이블 구멍 뚫기
- USB 케이블 내부선(VCC, GND, D+, D-)을 아두이노 USB 커넥터 하단에 납땜
- 장점: USB 과전류 보호 회로 활용, 분해 없이 코드 수정 가능
- 케이블 타이를 내부에서 6-8cm 위치에 조여 장력 방지(코드 그립 역할)
- 전면 패널을 회로 위에 올리고 화면 중앙 정렬 확인 후 핫글루 고정
- 전후면 패널 결합, USB 충전기 연결 완료
코드 구조 핵심 포인트
- 애니메이션 엔진: 6개 캐릭터(고스트, 마리오, 원숭이, 팩맨, 외계인, 캐논)가 화면 가장자리를 따라 순환 이동
- 시간 표시: 7세그먼트 XXXL 폰트로 4자리 시계 표시, 변경된 자릿수만 갱신하여 깜빡임 최소화
- 알람 시스템: D8 핀 LOW→HIGH 펄스로 ISD1820 트리거, 20초마다 재트리거
- 터치 인터페이스: 설정 화면에서 +/- 버튼으로 시간/알람 조정, SET/OFF 토글, TEST 버튼으로 알람음 미리듣기
- 자동 디밍: A7 ADC 읽기 → 임계값(120) 기준 PWM(D9) 255/45 단계 제어
트러블슈팅 가이드
| 문제 |
해결 방법 |
| 화면 백화면/깨짐 |
TFT 컨트롤러 칩셋 확인 후 초기화 코드 수정 (SSD1289 vs ILI9341)
Sainsmart 제품은 initlcd.h 수정 필요
| 터치 좌표 어긋남 |
URTouch 라이브러리 캘리브레이션 예제 실행 후 보정값 적용 |
| 터치 Y축 반전 |
코드 내 yT = myTouch.getY() 두 곳을 yT = 240 - myTouch.getY()로 변경 |
| 컴파일 에러 (신버전 IDE) |
아두이노 IDE 1.0.6 사용 권장, 첨부된 구버전 라이브러리 사용 |
| 알람 안 울림 |
ISD1820 녹음 확인, D8 핀 연결 확인, 알람 SET 상태 및 SAVE 확인 |
마치며
이 프로젝트는 80년대 아케이드 게임의 향수를 현대적 메이커 기술로 재해석한 훌륭한 작품입니다. 3D 프린팅, 터치스크린, RTC, 음성 모듈, PWM 디밍 등 다양한 기술이 통합되어 있으며, 4가지 모드로 지루할 틈 없는 즐거움을 줍니다. 직접 녹음한 알람음으로 아침을 깨우는 경험은 상용 제품에서는 느낄 수 없는 메이커만의 특권입니다.