산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

실사판 포탈 2 터렛 건 만들기 - 아두이노 3축 모션 & 오디오

부품 및 소모품

부품 수량
Arduino Nano R3 1

필요 도구 및 기계

프로젝트 소개

시작하며

이번 크리스마스, 게임 포탈 2에 나오는 작동하는 터렛 건을 설계하고 제작하기로 했습니다. 저에겐 퓨전 360으로 전체 어셈블리를 제대로 모델링한 뒤 제작하는 연습이었습니다. 이 설계는 아두이노 나노, MP3 플레이어 칩, 거리 센서, 서보, LED, 3D 프린트 부품을 사용합니다.

목표는 게임 속 터렛처럼 3개 '축'으로 움직이면서 게임 음성을 재생하고 LED로 발사 시뮬레이션을 하는 것이었습니다.

온라인에서 찾은 기본 스케치를 캔버스로 삼아 3뷰 외곽을 스케치하고 3D로 익스트루드, 쉘링, 컷팅했습니다. 모든 전자부품을 퓨전 360에서 컴포넌트로 만들어 배치했습니다. 설계 조건:

컴포넌트(나노, 칩, 서보)를 기본 형상에 추가하고 위치를 조정한 뒤 내부 지지 구조를 만들었습니다.

날개 오픈 메커니즘은 크랭크-슬라이더 방식입니다. 왜냐고요? 크랭크 메커니즘을 써보고 싶어서요! 복잡해지긴 했지만, 기하학이 정해지면 동작 반복성이 보장되고 최소/최대 한계가 확실해지는 장점이 있습니다.

전체 모델이 완성되고 작동/제작/조립 가능하다고 판단되자 파트를 출력해 프로토타입을 만들었습니다. 작동 확인 후 외관과 조립성 개선을 위해 모델을 수정했습니다. 이게 그 결과물입니다.

박스형 형태가 거의 없고 조립 후 내부 접근이 거의 안 돼 꽤 까다로웠습니다. 임베디드 컴포넌트 활용법 등 많은 걸 배웠고, 그만한 가치가 있었습니다!

2단계: 3D 프린트 파트

Portal turret v4.zip이 최신 버전으로, 터렛 제작에 필요한 모든 프린트 파트를 포함합니다.

--- 새로운 '후면 테스트 다리'. 원작과 다르지만 후면에 있어 직각 미니 USB 커넥터를 위로 꽂을 수 있게 함. ---

Prusa Mk2로 PLA 출력했습니다. 프린트 방향은 자명할 겁니다. 바디는 수직으로 세워 서포트 없이 출력했습니다. 측면의 큰 간극을 브리징해야 하지만 표준 설정으로 큰 문제 없었습니다. 전면/후면 돌기 부분은 좋은 필라멘트와 설정으로 거의 없앨 수 있습니다. 0.2mm 레이어 높이가 잘 작동했습니다. 더 두껍게 하면 인필 스트립 근처에 구멍이 생깁니다.

채널과 돌기는 45도 챔퍼로 설계해 '공중에 뜬' 요소를 최소화했습니다.

조립 전 후처리가 거의 필요 없었습니다. 채널에 끼우는 인필 스트립은 폭을 줄이고 두께를 일정하게 해 간단해졌습니다. 얇은 검은 소재 스트립으로 대체해도 될 것 같습니다(엣지로 프린트).

피치 프레임의 슬라이더 핀 부분이 가장 까다롭습니다. 직선 핀(못)을 보어 홀에 넣고 1/8인치 드릴 비트로 체이싱한 뒤 윤활하면 큰 도움이 됩니다.

첨부 STL 파일: Lens+v3b.stl, Body-RHS+v4.stl, Body-LHS+w+components+v4.stl, Wing+RH+bottom+v4.stl, Wing+RH+top+v4.stl, Wing+LH+bottom+v4.stl, Wing+LH+top+v4.stl, Pitch+Frame+v4.stl, Leg+-+REAR+v4.stl, Infill+strips+v3.stl, Leg+-+REAR+test.stl, Pitch+Frame+-+modified+1.stl, wings+v6.zip, Arduino+Base+w+Radio.stl, Portal+Turret+v4.zip

3단계: 컴포넌트

V4(빨간 터렛)은 브리징이 더 작아 V4 날개와 피치 프레임이 필요.

V6 날개는 다른 색상 '건'을 위한 옵션. 직접 만들진 않았지만 잘 작동할 겁니다.

모델 완성 후 프로토타입이 만족스러워 리비전 2를 플라스틱 컴포넌트와 함께 출력했습니다. 모두 PLA, 검정과 디자인 색상(이 경우 파랑), 중앙 '렌즈'용 투명 PLA 약간 사용.

4단계: 전자회로

사용 부품:

모든 부품은 아두이노, 아마존, 뱅굿 등에서 쉽게 구할 수 있습니다. 나사는 분류 키트에서 조달하는 게 편합니다.

5단계: 기계적 조립

대부분 기계적 조립은 직관적입니다. 프린트 파트는 필요한 곳에 탭이 나 있어 조립 전 나사로 한번 체이스하면 나사 결합이 수월합니다.

아두이노와 MP3 칩은 하드웨어 없이 크래들에 스냅인됩니다. VL53L0X도 패스너 없이 프론트 쉘에 슬립인됩니다. 시험 조립 후 배선하고 최종 설치하세요.

슬라이더 어셈블리는 4개 프레이밍 네일을 슬라이더 레일로 씁니다. 약 1/8인치 직경에 헤드를 잘라냈습니다. 디월트 전동 네일건용 네일 스트립에서 떼어냈습니다. 매끄러운 못이 필수입니다.

서보는 사진과 같이 마운트합니다. 방향이 중요합니다. 피치와 피벗 서보는 각 파트에 장착할 때 '센터' 위치여야 합니다. 크랭크는 전면에서 볼 때 오픈 위치에서 반시계 방향으로 회전해 닫히게 장착합니다. 오픈 위치는 로드와 크랭크가 일직선이 되고 거기서 10도 더 회전하면 잠기는 상태입니다.

다리 조립이 가장 쉽습니다. 2-2.5mm 나사에 다리 캡을 각 다리 엘보 위에 스냅인. 나사 머리가 다리 플레이트 위로 튀어나오지 않게 하세요. 그래야 피벗 바디가 회전 범위 조절 시 바인딩되지 않습니다.

서보-프린트 파트 연결은 서보에 동봉된 짧은 흰색 크랭크를 사용합니다. 이 크랭크가 프린트 파트에 프레스핏됩니다. 스플라인 보어를 파트에 직접 프린트해보았으나 반복 성공률이 낮았습니다. 동봉 크랭크 쓰는 게 훨씬 쉽습니다.

크랭크 어셈블리는 더 긴 2.5mm 나사 사용. 크랭크 로드가 크랭크 반쪽 사이에 끼이지 않게 하세요. 사실 크랭크2 파트 없이 더 짧은 나사로 시도해도 됩니다(날개가 자유롭게 슬라이드한다면 토크가 크지 않으니).

스피커는 서보 마운트(2개)로 캡처됩니다. 스피커를 이 '다리' 사이에 두고 피치 서보에 고정해 위치시킵니다. 이 서보가 피치(슬라이더) 어셈블리에 연결되고, 그다음 크랭크 어셈블리와 로드가 연결됩니다. 이 모든 걸 LHS 바디에 작은 나사 4개로 설치하기 전에 조립합니다.

메인 내부가 설치되고 아두이노와 MP3 플레이어가 임시 위치에 있으면, 이제 배선 시작!

6단계: 배선

V5 - 라디오 옵션(빨간 터렛 사진). nRF24L01 라디오 칩 포함. 모든 연결을 수용하려 아두이노 핀 배선이 완전히 변경됨. 세부사항 추후 공개...

최종 패키징이 타이트하니 와이어 길이 계산에 시간 투자할 가치가 있습니다. 대부분 상호 연결 와이어는 3-4인치 사이였습니다.

LED는 220Ω 저항과 직결 후 수축 튜브, 와이어 트위스팅, 테스트 후 따로 둡니다. 눈에 띄지 않게 얇은 통신선(CAT5 타입) 사용.

기계 부품을 쉘에 모의 장착해 배선 라우팅을 정한 뒤 와이어 컷팅/준비.

서보 커넥터를 플러그인 교체 가능하게 만들어 기어 스트립 시 교체할 수 있게 했습니다. 첫 프로토타입 때 실수 후 확실히 도움됐습니다.

대부분 배선 완료 후 LED 솔더링. 조심스럽게 배선된 어셈블리를 쉘 한쪽에 넣습니다. 마지막 단계로 전원 커넥터를 파워 와이어에 솔더링(내부에서).

중요: 나노 뒤에 채워진 와이어가 리셋 버튼을 누르지 않게 하세요! 당연히 문제를 일으키고 정상 동작을 방해합니다.

이 시점에서 모든 배선 완료. 최종 조립 전 코드 업로드하고 전원 넣어 LED, 서보, MP3 플레이어 동작 확인. 그 후 나머지 기계 부품 조립.

7단계: 아두이노 코드

업데이트된 코드! 정리하고 몇 가지 조정.

첨부 파일이 영상과 같이 유닛을 구동하는 코드입니다. 터렛의 캐릭터와 행동 방식을 바꾸며 계속 수정 중입니다. 옵션이 많습니다.

서브루틴으로 구조화해 메인 바디를 깔끔하게 유지했습니다. 다양한 특성 테스트할 때 코드 조작에 큰 도움이 됐습니다.

상단에 많은 변수를 둬 파킹 포지션, 최소/최대 범위 등을 쉽게 조정했습니다.

DFMiniMP3 라이브러리 사용. DFRobot 라이브러리 등 다른 것도 시도했으나 문제 생겨 이걸로 돌아왔습니다. 'static void' 조각을 유지해야 작동합니다. 동작엔 불필요하지만 전 마스터 코더가 아니니까요. VL53L0X 라이브러리처럼 심플하고 깔끔한 라이브러리 아시면 알려주세요!

사운드는 SD 카드에 'mp3' 폴더 만들고 0001.mp3, 0002.mp3... 식으로 저장. 앞 4자리는 이 형식이어야 하지만 접미사는 자유. 예: https://www.dfrobot.com/blog-277.html. 제 파일명 예시 이미지 첨부. 번호는 코드 호출과 대응.

사운드 파일은 위키피디아 포탈 터렛 사운드 페이지에서 가져왔습니다. 코드가 랜덤하게(2-3개 중 1개) 골라 재생해 지루하지 않게 합니다.

8단계: 최종 바디 조립

검정 인필 스트립 때문에 좀 까다롭습니다. 최종 어셈블리 스케일이 작아 스트립과 홈도 아주 작습니다. 포인터 등으로 채널을 체이스해 스트립이 저항 없이 들어가게 한 뒤 다른 쪽을 얹는 게 좋습니다.

와이어를 깔끔하게 묶고 타이랩으로 정리하면 훨씬 수월합니다.

몇 개 조립해보니 양쪽 반을 먼저 합치고 인필 스트립을 넣는 게 더 쉽습니다. '선반'이 있는 쪽에 스트립 한 면을 넣고, 살짝 벌려 부드럽게 눌러 넣으세요. 이제 그리 나쁘지 않습니다.

가장 까다로운 부분 중 하나였습니다. 언젠가 조립 방식을 재고할지도 모르지만, 완성된 모습이 마음에 들고 꽤 견고합니다.

9단계: 날개 어셈블리

바디가 조립되고 날개 LED가 튀어나온 상태에서 날개 준비 및 조립.

필수: 슬라이더 홀을 1/8인치 드릴 비트로 체이스하고 청소하세요. 볼트 커터, 바이스그립, 쇠톱 등으로 못 헤드를 자르세요. 슬라이더 핀(자른 못)을 각 날개 조각에 프레스핏으로 장착. 직선, 버 제거, 매끄러운 못이 작동의 핵심. 날개 슬라이더와 홀에 윤활유 바르고 크랭크 로드 연결 전 테스트. 드라이 그래파이트나 PLA 호환 윤활제 추천. 개인용 윤활제 작은 튜브가 정말 잘 작동하고 싸요. 엄청 미끄럽습니다. 파트너나 부모님이 작업대에서 그걸 왜 쓰냐고 물어보면 설명 좀 해야 합니다!!

어떤 날개 파트가 어디인지 파악하고 시험 슬라이드 먼저. 핀 장착 후 상/하반 결합, 윤활유 바르고(면봉 활용) 날개가 바인딩 없이 부드럽게 슬라이드하는지 확인. 이거 안 되면 나중에 고생합니다. 믿으세요...

날개 준비되면 제자리에 슬라이드, 연결 로드를 날개 구멍에 맞추고 나사 1개로 조립. LED를 총구 구멍에 넣고 와이어를 날개에 붙이면 끝! 테스트 후 핫글루로 고정해도 됩니다.

10단계: 친구들 놀라게 하기!!

마지막 팁: 앵글 플러그 추천. 후면 다리 피벗 시 간섭 안 되게. 수정된 후면 다리(v3)가 살짝 늘어나 여유 공간 확보.

제작 완료 후 전원 연결(나노용 5V 또는 적정 전압), 누군가 프로그래밍된 거리 내 감지될 때까지 조용히 대기하다가 영역 침입자 등장 시 깨어나 섬멸합니다!!

만드신 분(또는 여러 개) 알려주시고 새로운 기능/컨셉 공유해주세요!

코드

// Portal Turret - Option With Radio!!
// Chris Nowak - Feb 2019
// https://www.instructables.com/member/ChrisN219/
// https://create.arduino.cc/projecthub/Novachris/talking-portal-2-turret-gun-637bf3
// 마스터 터렛 컨트롤(MTC)로 Cara Mia 오페라, 채팅 타임, 수동 모드 제어 가능
// MTC는 별도 빌드에 소개. MTC 없이도 자율 동작.
// 3개 터렛용으로 제작되었으나 각자 독립 동작.
// 디버깅 코드 다수 잔존. 원하면 정리해 사용. 대부분 디버깅됐으나 완벽하진 않음.
// 지불한 가격 생각하면 괜찮을 듯! ;)
// ================= RED ====================
#include <Wire.h>
#include <VL53L0X.h>
#include "Arduino.h"
#include <SoftwareSerial.h>
#include <Servo.h>
#include <DFMiniMp3.h>
#include <RF24.h>
#include <RF24Network.h>
#include <SPI.h>

class Mp3Notify {
public:
  static void OnError(uint8_t errorCode) { Serial.println(); Serial.print("Com Error "); Serial.println(errorCode); }
  static void OnPlayFinished(uint8_t globalTrack) { Serial.println(); Serial.print("Play finished for #"); Serial.println(globalTrack); }
  static void OnCardOnline(uint8_t code) { Serial.println(); Serial.print("Card online "); Serial.println(code); }
  static void OnCardInserted(uint8_t code) { Serial.println(); Serial.print("Card inserted "); Serial.println(code); }
  static void OnCardRemoved(uint8_t code) { Serial.println(); Serial.print("Card removed "); Serial.println(code); }
};

Servo servo_pivot, servo_wings, servo_pitch;
VL53L0X sensor;
SoftwareSerial secondarySerial(4, 2); // RX, TX
DFMiniMp3<SoftwareSerial, Mp3Notify> mp3(secondarySerial);
RF24 radio(10, 9); // nRF24L01 (CE,CSN)
RF24Network network(radio);
const uint64_t this_node = 01; // 이 터렛 - 빨강 - 8진수
const uint64_t WHT = 02; // 터렛 02 - 흰색
const uint64_t BLU = 03; // 터렛 03 - 파랑
const uint64_t MTC = 00; // 마스터 터렛 컨트롤
// ... (이하 생략, 전체 코드는 첨부 파일 참조)

커스텀 파트 및 인클로저

회로도

터렛 제작용 회로도 이미지 참조

제조공정

  1. 호박: 고대 수지에서 과학적 보물로 - 역사, 특성, 현대적 용도
  2. 기요틴: 역사, 설계, 유산
  3. 묘비의 예술과 장인정신: 역사, 재료, 현대 제조
  4. 현대 수영복의 진화와 기술: 고대 목욕에서 하이테크 원단까지
  5. 실리콘: 특성, 생산, 시장 전망
  6. 보드카: 고대 증류에서 현대 생산까지
  7. 회전목마: 고대 회전 놀이기구에서 현대 장인정신까지
  8. 소파: 고대 사치품에서 현대 안락함까지 - 종합 가이드
  9. 철: 특성, 역사, 일상 응용
  10. 엔드워킹 터렛으로 정밀 샤프트 생산 사이클 타임 단축