[아두이노] 아이언맨 토니 스타크 보조 로봇 만들기

2023. 7. 17. 10:45아두이노

반응형
SMALL

토니 스타크 보조 로봇(출처: 트위터)

아이언맨 영화를 보신 분이라면 잘 알고 계실 텐데요.

이 로봇은 스타크 연구실에 있었던 기계 팔 로봇입니다.

오늘은 아두이노를 활용해서 자유자재로 움직일 수 있는 보조 로봇, 로봇팔을 만들어보겠습니다.

※로봇팔 키트 구매 링크는 게시물 하단에 첨부하였습니다.※


준비물


준비물은 다음과 같습니다.

베이스 기판, 긴 U 브라켓 4개, 다기능 브라켓 5개, 그립퍼, L 브라켓 1개, U 브라켓 1개, 베어링 6개, 서보모터 6개


#1

너트와 볼트를 이용해서 베이스 기판에 U브라켓을 고정시킵니다.


#2

다기능 브라켓에 베어링을 조립한 후,

베어링 부분을 U브라켓 구멍에 맞춰 끼워 넣습니다.

SMALL

 


 

#3

서보 모터

 

5개의 서보모터에 위와 같이 메탈 디스크를 부착 후 고정합니다.

고정 시에 메탈 디스크의 구멍 방향이 서보모터에 수직하는 방향으로 고정해야 합니다.


#4

앞서 조립한 서보모터를 위와 같이 고정합니다.


#5

다기능 브라켓에 전과 같이 베어링을 부착한 후에 브라켓과 디스크를 고정합니다.

이 과정을 마치면 U브라켓의 흔들림이 고정됩니다.


#6

방금 전 고정한 다기능 브라켓 위에 서보모터를 결합해 줍니다.


#7

긴 U브라켓 두 개를 마주 보게 조립하여 베어링에 맞춰 넣어 결합합니다.


#8

긴 U브라켓과 L브라켓을 먼저 조립한 뒤, L브라켓과 다기능 브라켓을 조립하여 줍니다.

부착된 다기능 브라켓에 서보모터를 결합해둔 뒤에 디스크와 브라켓을 고정시키면 됩니다.


#9

두 개의 다기능 브라켓을 엇갈리게 고정시킨 뒤에 다기능 브라켓에 서보모터를 부착합니다.


#10

앞서 조립한 두 개의 다기능 브라켓을 결합한 뒤 그립퍼를 연결해 주면 완성입니다.


#11

아두이노 보드 및 스틱 연결

#include <Servo.h> 

#define XPOS 0
#define YPOS 1

const int SERVOS = 6;
int PIN[SERVOS], value[SERVOS], idle[SERVOS], currentAngle[SERVOS], MIN[SERVOS];
int MAX[SERVOS], INITANGLE[SERVOS], previousAngle[SERVOS],ANA[SERVOS];
Servo myservo[SERVOS];

void setup()   {

  //#1 서보모터
  PIN[0] = 3; //서보모터 IO를 3번핀으로 지정
  MIN[0] = 0; //서보모터 최소 회전각도
  MAX[0] = 180; //서보모터 최대 회전각도
  INITANGLE[0] = 90; //서보모터 초기각도
  ANA[0] = 0; //조이스틱스위치입력 IO를 아날로그 A0번핀으로 지정
  //#2 서보모터
  PIN[1] = 2;
  MIN[1] = 0; 
  MAX[1] = 180;
  INITANGLE[1] = 90;
  ANA[1] = 1;
  //#3 서보모터
  PIN[2] = 9;
  MIN[2] = 0;
  MAX[2] = 180;
  INITANGLE[2] = 90;
  ANA[2] = 2;
  //#4 서보모터
  PIN[3] = 8;
  MIN[3] = 0;
  MAX[3] = 180;
  INITANGLE[3] = 90;
  ANA[3] = 3;
  //#5 서보모터
  PIN[4] = 4;
  MIN[4] = 0;
  MAX[4] = 180;
  INITANGLE[4] = 90;
  ANA[4] = 4;
  //#6 서보모터
  PIN[5] = 5;
  MIN[5] = 0;
  MAX[5] = 180;
  INITANGLE[5] = 90;
  ANA[5] = 5;
  
  for (int i = 0; i < SERVOS; i++){
    myservo[i].attach(PIN[i]);
    myservo[i].write(INITANGLE[i]);
    value[i] = 0;
    idle[i] = 0;
    previousAngle[i]=INITANGLE[i];
  }
}

void loop() {
  delay(50); // 로봇팔 속도조정을 위한 딜레이
 
    for (int i = 0; i < SERVOS; i++){
      value[i] = analogRead(ANA[i]);
      currentAngle[i] = myservo[i].read();
    
      if (value[i] > 612) {
        idle[i] = 0;
      
        if (currentAngle[i] < MAX[i]) ++currentAngle[i];
        if (!myservo[i].attached()){
          myservo[i].attach(PIN[i]);
        }
        myservo[i].write(currentAngle[i]);     
      } else if (value[i] < 412) {
      idle[i] = 0;
      if (currentAngle[i] > MIN[i]) --currentAngle[i];
      if (!myservo[i].attached()){
        myservo[i].attach(PIN[i]);
      }
      myservo[i].write(currentAngle[i]);    
    } else {
      ++idle[i];
    }
//    if (idle[i] > 100){
//      myservo[i].detach(); //서보모터를 일정시간 사용하지 않으면 연결을 끊어둔다.
//      idle[i] = 0;
//    }  
  }  
  
}

아두이노 보드와 스틱을 연결하고 위의 소스코드를 아두이노 보드에 업데이트하면 정상적으로 로봇팔이 작동합니다.

 

 

다음에 더 유익한 개발로 찾아뵙겠습니다.

감사합니다.

 

※ 아래 링크로 이동하시면 조립 키트를 구매하실 수 있습니다. (광고 아님) ※

http://scipia.com/product/a2t-6%EC%9E%90%EC%9C%A0%EB%8F%84-%EC%95%8C%EB%A3%A8%EB%AF%B8%EB%8A%84-%EB%A1%9C%EB%B4%87%ED%8C%94-%EB%A1%9C%EB%B4%87%EC%95%94-%ED%82%A4%ED%8A%B8-%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8/592/category/216/display/1/

 

A2T 6자유도 알루미늄 로봇팔 로봇암 키트 아두이노

앗! 화면폭이 너무 좁아요. 브라우져의 사이즈를 더 늘여주세요~ 좁은 화면으로 보실 때는 모바일 기기에서 최적화된 화면으로 쇼핑을 즐기실 수 있어요~

scipia.com

 

더 상세한 조립 영상은 유튜브에서 확인하실 수 있습니다.

https://www.youtube.com/watch?v=Bc8AhsxbNiU&embeds_referring_euri=https%3A%2F%2Fblog.naver.com%2FPostView.naver%3FblogId%3Dchanik1210_%26Redirect%3DView%26logNo%3D223158267567%26categoryNo%3D11%26isAfterWrite%3Dtrue%26isAfte&source_ve_path=MjM4NTE&feature=emb_title

반응형
LIST