메뉴 전체보기

회원메뉴

Arduino로 스파이더맨 웹 슈터 만들기 > 게시판

본문 바로가기

쇼핑몰 검색

NO. 2995
제목 : Arduino로 스파이더맨 웹 슈터 만들기
2026-08-14 10:31

소개: Arduino로 스파이더맨 웹 슈터 만들기


자신만의 스파이더맨 웹 슈터를 갖고 싶었던 적이 있나요? 이 프로젝트에서는 Arduino Nano와 가속도계를 사용해 착용 가능하고 동작으로 작동하는 웹 슈터를 만들어 보겠습니다. 손목으로 펀치를 날리는 동작만 하면 슈터가 끈에 매달린 자석식 "웹 다트"를 자동으로 발사합니다




STEP 1. 준비물


  1. Arduino Nano: https://amzn.to/2zMXJU8
  2. 9V 배터리: https://amzn.to/2wPmnSP
  3. 9V 클립 커넥터:https://amzn.to/32D4R0b
  4. 점퍼선: https://amzn.to/398mQhq
  5. 판지: https://amzn.to/39ufbKH
  6. 미니 브레드보드: https://amzn.to/2JujS9e
  7. 스위치: https://amzn.to/2upTngE
  8. 마분지 / 두꺼운 종이(HVS 또는 유사한 용지):
  9. 은색 스프레이 페인트(예: Pilox)
  10. 서보 모터 SG90: https://amzn.to/4q7g1oy
  11. ADXL345 가속도 센서: https://amzn.to/45N2EAn
  12. 강력 접착제: https://amzn.to/4wSmCWs
  13. 실 / 끈
  14. 네오디뮴 자석(작은 원판형 자석): https://amzn.to/4wJdUJZ
  15. 스프링(와이어 직경 0.7mm, 길이 4~5cm)




STEP 2. 부품 배선


부품 배선


이 프로젝트의 배선은 아래 코드의 요구 사항에 따라 구성됩니다:

  1. ADXL345(가속도 센서) → I2C 연결: VCC는 Arduino 5V에, GND는 Arduino GND에, SDA는 A4에, SCL은 A5에 연결합니다. ADXL345는 손목의 움직임을 지속적으로 모니터링하고 주먹을 내지를 때 발생하는 날카로운 "당겼다가 놓는" 가속도 스파이크를 감지합니다.
  2. 서보 모터 → 신호선을 Arduino Nano의 디지털 핀 8 에 연결하고, VCC는 Arduino 5V에, GND는 Arduino GND에 연결합니다. 서보는 웹 다트를 방출하는 트리거/잠금 장치 역할을 합니다.
  3. 9V 배터리 + 클립 커넥터 + 스위치 → Arduino Nano의 주 전원으로 사용하며, 스위치를 통해 연결하여 손목에서 전체 장치를 켜고 끌 수 있습니다.
  4. 배선이 웹 슈터의 카드보드 본체 안에 들어갈 만큼 컴팩트하게 유지되도록 모든 부품은 Arduino Nano와 함께 미니 브레드보드에 조립합니다.





STEP 3. Arduino 프로그래밍


  1. Arduino IDE를 열고 Arduino Nano 보드와 올바른 포트가 Tools 메뉴에서 선택되어 있는지 확인합니다.
  2. 이미 설치되어 있지 않다면 Servo 라이브러리를 설치합니다(일반적으로 Arduino IDE에 기본 포함되어 있습니다).
  3. Arduino Nano에 코드를 업로드합니다.
  4. 시스템이 준비되었는지 확인하고 동작 감지 메시지를 확인하려면 Serial Monitor 를 엽니다(보드레이트 9600).



#include <Wire.h>
#include <Servo.h>

// --- 서보 설정 ---
Servo myServo;
const int servoPin = 8; // 핀 D8의 서보 신호
const int initialPosition = 100; // 대기 위치
const int targetPosition = 50; // 트리거되었을 때 이동할 위치

bool isServoMoved = false;
unsigned long servoTimer = 0;
const long servoDuration = 3000; // 서보 위치를 3초 동안 유지

// --- ADXL345 설정 ---
#define ADXL345_ADDRESS 0x53 // 기본 ADXL345 I2C 주소
float accelX;

// --- 동작 감지 로직 ---
unsigned long pullStartTime = 0;
const long pullInterval = 400; // 완전한 당김 동작에 허용되는 최대 시간 창(ms)
float pullThresholdStart = 1.0; // 양의 G-force 임계값
float pullThresholdEnd = -1.0; // 음의 G-force 임계값

void setup() {
Serial.begin(9600);

// 서보 초기화
myServo.attach(servoPin);
myServo.write(initialPosition);

// ADXL345용 I2C 통신 초기화
Wire.begin();

// ADXL345 활성화 (전원 제어 레지스터)
Wire.beginTransmission(ADXL345_ADDRESS);
Wire.write(0x2D); // 전원 제어 레지스터
Wire.write(8); // 측정 모드 활성화
Wire.endTransmission();

Serial.println("--- ADXL345 + 서보 제어 시스템 준비 완료 ---");
Serial.println("펀치 동작을 기다리는 중...");
}

void loop() {
unsigned long currentMillis = millis();

// 1. ADXL345에서 X축 데이터 읽기
Wire.beginTransmission(ADXL345_ADDRESS);
Wire.write(0x32); // X축 데이터 레지스터 (X0)
Wire.endTransmission(false);
Wire.requestFrom(ADXL345_ADDRESS, 2, true);

if (Wire.available() >= 2) {
int16_t rawX = Wire.read() | (Wire.read() << 8);
accelX = rawX * 0.0039; // 원시 값을 G-force로 변환
}

// 2. 펀치 동작 감지
if (accelX > pullThresholdStart) {
pullStartTime = currentMillis;
}

if (accelX < pullThresholdEnd && (pullStartTime > 0) && (currentMillis - pullStartTime < pullInterval)) {
if (!isServoMoved) {
Serial.println(">>> 펀치 감지! 웹 슈터 발사.");
myServo.write(targetPosition);

servoTimer = currentMillis;
isServoMoved = true;
pullStartTime = 0;
}
}

// 3. 3초 후 서보 자동 리셋
if (isServoMoved && (currentMillis - servoTimer >= servoDuration)) {
Serial.println(">>> 서보를 대기 위치로 리셋하는 중.");
myServo.write(initialPosition);
isServoMoved = false;
}
}





STEP 4. 웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


웹 슈터 본체와 웹 다트 만들기


전체 제작 과정을 영상으로 확인하려면 YouTube 동영상을 참고하세요. 아래 단계에서 자세히 설명합니다.

웹 슈터 본체 만들기:

  1. 골판지로 웹 슈터의 본체를 만든 다음, 덮개에 은색 페인트를 스프레이하여 세련된 금속 느낌의 스파이더맨 장치처럼 보이게 합니다.
  2. 두꺼운 종이인 카드지를 한 조각 잘라 단단히 말아 관 형태로 만들어 푸셔 를 만듭니다. 푸셔는 발사할 때 다트를 실제로 앞으로 밀어내는 부품입니다. 말면서 순간접착제를 바르면 관이 단단해지고 형태가 유지됩니다. 그런 다음 웹 슈터 덮개 위에 제자리에 고정합니다.
  3. 이미 배선한 전자 부품(Arduino Nano, 브레드보드, ADXL345, 배터리, 스위치)을 골판지 웹 슈터 본체 안에 맞춰 넣습니다.
  4. 작은 네오디뮴 자석을 웹 슈터 덮개 위에 붙입니다. 이 자석이 나중에 실 감개를 제자리에 고정합니다.

웹 다트 만들기(발사체):

  1. 작은 카드지 조각을 단단히 말아 웹 다트의 몸체가 될 관을 만든 다음, 순간접착제를 발라 단단한 외피로 굳힙니다.
  2. 다트 몸체의 뒤쪽 끝에 스프링을 끼웁니다.
  3. 스프링 뒤쪽의 다트 꼬리 부분에 작은 네오디뮴 자석을 붙입니다. 이 자석 덕분에 다트가 발사된 뒤 실에 "붙어" 연결된 상태를 유지할 수 있습니다.
  4. 실의 앞쪽 끝에 작은 자석을 하나 더 붙여 실이 다트의 자석에 연결되도록 합니다.
  5. 실을 깔끔하게 작은 코일 형태로 감은 다음, 감긴 실을 작은 골판지 용기(성냥갑 등) 안에 넣어 엉키지 않고 원활하게 풀려 나오도록 합니다.
  6. 이 실 용기를 푸셔 바로 옆의 웹 슈터 덮개 위에 올려놓습니다.
  7. 다트를 푸셔 관에 넣고 서보 암을 사용해 제자리에 고정합니다. 서보 혼은 다트가 동작 감지 전까지 빠져나가지 않도록 잡아두는 걸쇠 역할을 하며, 동작이 감지되면 옆으로 움직여 다트를 놓아줍니다.





STEP 5. 테스트


모든 조립이 끝나면 웹 슈터 본체를 손목에 묶고 시험해 봅니다.

손목으로 빠르게 펀치를 날리는 동작을 합니다. ADXL345가 동작에서 발생하는 급격한 가속도 변화를 감지하면 Arduino가 서보를 움직입니다. 그러면 푸셔 관 안에서 다트를 고정하던 걸쇠가 풀리고, 실이 뒤를 따라가면서 웹 다트가 앞으로 발사됩니다. 마치 스파이더맨의 웹 슈터처럼 작동합니다.


원문: https://www.instructables.com/Making-a-Spider-Man-Web-Shooter-With-Arduino/

좋아요 0
게시판

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