거대 레고 미니피겨 아두이노 아나마트로닉스 오퍼레이션 게임 제작기
부품 및 소모품
| 아두이노 우노 |
2개 |
| Adafruit 아두이노 MP3 쉴드 |
1개 |
| MG90S 기어 마이크로 서보 |
6개 |
| 스피커 3W, 4옴 |
2개 |
| OpenBuilds 볼 베어링 688Z 8x16x5 |
12개 |
필요한 도구 및 장비
- LulzBot TAZ 5 FDM 3D 프린터
- X-Carve CNC 머신
프로젝트 제작기
이 프로젝트는 총 4단계로 진행되었습니다. 처음 3단계는 순수 기계적 제작(전자부품 없음)이었고, 4단계에서 프랭크(Frank)를 오퍼레이션 게임으로 변형하며 오디오와 아나마트로닉스를 추가했습니다.
1단계: 메가피그(Megafigs) 본체 제작
손: PVC 파이프와 유리섬유 레진으로 제작. 가장 어려운 파트이자 전체 스케일을 결정하는 기준이 되었습니다.
머리: 대형 PVC 파이프 피팅, MDF, 레진으로 상단 돌기 부분 채움.
몸통: MDF 박스 구조, PVC 피팅으로 관절 연결.
다리: MDF와 PVC로 상단 곡선 형성.
팔: 전완은 PVC 파이프, 상완은 MDF. 플로럴 폼으로 공간 채우고 본도로 형상 만든 뒤 샌딩/필링으로 마감. 이후 실리콘 몰드로 떠서 스무스캐스트 300으로 캐스팅.
전체 도색은 레고 '몬스터 헌터즈' 키트 기준.
2단계: 헤어 제작
툴링 폼을 밴드쏘로 잘라 머리카락 가닥 형태 만들고 에폭시로 접착. 전체를 스무스캐스트 300으로 코팅해 플라스틱 쉘 형성 후 샌딩/필링. 에폭시 스컬프로 이음새 메우고 프라이머/도색.
3단계: 프랭크의 침대 제작
레고 '크레이지 사이언티스트와 몬스터' 키트 기반. MDF 박스 구조에 PVC 파이프로 돌기(너브) 표현. 모서리 디테일은 PVC 파이프로 MDF 원판 샌드위치. 샌딩, 프라이머, 도색 완료.
4단계: 오퍼레이션 게임화 & 모션 추가
신체 부위별로 상세 설명합니다.
몸통
3D 프린트 브라켓에 롤러 스케이트 베어링 2개 장착해 팔/머리 피벗 포인트 역할. 상체에 3D 프린트 캔디 디쉬 2개, 밀링 알루미늄 립, 새 몸통 플레이트 장착. 알루미늄 립은 오퍼레이션 게임의 스위치 역할: 핀셋(MP3 쉴드와 배선 연결)이 알루미늄에 닿으면 회로 완성 → 프로그램 작동.
머리 (2개)
목에 3D 프린트 브라켓 + 5/16인치 볼트(액슬) 장착. 스피커 그릴 구멍은 천공 금속으로 마킹 후 드릴링, 구멍 안쪽도 주변 색으로 도색. 스피커 장착용 3D 프린트 브라켓 제작.
다리
뼈 모양 캔디 디쉬 포함 양쪽 절반 3D 프린트. 알루미늄 플레이트 밀링(몸통과 동일). 접합 후 샌딩, 본도 마감, 도색.
팔
원본 마스터에 3D 프린트 브라켓(5/16인치 볼트 액슬) 추가 후 재몰드/캐스팅/정리/도색.
서보 모터
3D 프린트 브라켓으로 고정, 와이어와 알루미늄 혼(5/16인치 볼트 연결)으로 관절 구동. 나중에 스프링 추가해 팔 들어올림 보조.
전자회로
MDF 플레이트에 프로토타입 테스트 베드 구성. 두 아두이노 역할 분담:
- MP3 쉴드 아두이노: 3개 입력(핀셋-알루미늄 접촉) 대기 → 해당 MP3 재생 + 서보 아두이노로 신호 전송
- 서보 아두이노: 신호 수신 시 해당 서보 모션 실행
두 아두이노 모두 프랭크 침대 하부에 장착 후 재배선.
할로윈 실전 테스트
하루 종일 아이들이 만져도 문제없이 작동. 상세 빌드 로그는 RPF 포럼 참조.
코드
서보 제어 코드 (아두이노 1)
MP3 쉴드로부터 3개 신호 중 하나 수신 시 해당 서보 모션 실행. 이징 함수 대량 포함으로 자연스러운 움직임 구현.
// 주요 구조만 요약 (전체 코드는 원문 참조)
#include
Servo servo5, servo6, servo7, servo8, servo9, servo10, servo11;
int pin2=2, pin3=3, pin4=4;
void setup() {
// 서보 핀 5~11 연결, 초기 위치 설정
// 핀 2,3,4를 INPUT_PULLUP으로 입력 설정
}
void loop() {
if (digitalRead(pin2)==HIGH) zap2();
else if (digitalRead(pin3)==HIGH) zap3();
else if (digitalRead(pin4)==HIGH) zap4();
delay(300);
}
// moveServo() : 이징 함수 적용 서보 제어
// easeInOutCubic, easeOutBounce 등 30여 종 이징 함수 내장
// zap2(), zap3(), zap4() : 각 트리거별 서보 시퀀스 정의
사운드 이펙트 코드 (아두이노 2 + MP3 쉴드)
GPIO 2,3,4 중 하나 트리거 시 해당 MP3 재생 + 서보 아두이노로 릴레이 신호(핀 5,8,9) 전송. 볼륨 조절 버튼 2개 지원.
// 주요 구조만 요약
#include
#include
#include
Adafruit_VS1053_FilePlayer musicPlayer = ...;
void setup() {
// MP3 쉴드 초기화, SD 카드, 볼륨 설정
// GPIO 2,3,4를 OUTPUT으로 설정 (알루미늄 플레이트 연결)
// 핀 5,8,9를 OUTPUT으로 설정 (서보 아두이노 신호용)
// 볼륨 버튼 핀 설정
}
void loop() {
// GPIO 2,3,4 읽기 → zap2/3/4 호출
// 볼륨 버튼 읽기 → volUp/Down
}
void zap2() { audioPlay("02.mp3"); activate(relayPin5); delay(6000); audioStop("02.mp3"); }
void zap3() { audioPlay("03.mp3"); activate(relayPin8); delay(6000); audioStop("03.mp3"); }
void zap4() { audioPlay("04.mp3"); activate(relayPin9); delay(6000); audioStop("04.mp3"); }
커스텀 파트 및 인클로저
3D 프린트 파트: Thingiverse에서 다운로드 가능
회로도
- MP3 쉴드 GPIO 2,3,4 → 알루미늄 플레이트
- MP3 쉴드 3V → 핀셋
- MP3 쉴드 핀 5,8,9 → 서보 아두이노 핀 2,3,4
- 서보 아두이노 핀 6~11 → 서보 6개
- 서보 전원/그라운드 → 5V 어댑터
- 두 아두이노 그라운드 공통 연결
- 스피커 2개 연결