본문 바로가기
로봇프로젝트

체이스 탱크 로봇 만들기

by 모빌리티키즈 2023. 12. 11.
728x90

 'Chase'라는 아주 특별한 아두이노 로봇을 만들기로 결정했습니다. Chase는 다양한 기능을 갖출 수 있는 특별하고 독창적인 3D 프린팅 모듈식 로봇입니다. 

Chase는 자석과 구리 테이프를 사용하여 다양한 확장 기능을 추가할 수 있는 모듈식 로봇입니다. 자석과 구리 테이프를 활용하면 새로운 로봇을 구매하는 것보다 비용을 절감하면서 로봇을 맞춤화할 수 있습니다. 이 기능을 통해 Chase는 확장 기능을 쉽고 빠르게 교체할 수 있습니다. 확장 기능은 확장 부품을 매달고 아두이노 나노를 프로그래밍하여 로봇의 기능과 외관을 수정할 수 있게 해줍니다. 나중에는 확장 부품을 만드는 방법과 해당 프로그램을 알려드리겠습니다.

공급

필요한 항목과 구할 수 있는 위치 목록은 다음과 같습니다.

 

 

도구

  • 3D 프린터
  • 작은 나사용 드라이버(Phillips 헤드)
  • 와이어 커터
  • 와이어 스트리퍼
  • Arduino IDE가 설치된 컴퓨터
  • 슬라이서 소프트웨어
  • 슈퍼 글루 또는 글루건
  • 납땜 인두 (선택 사항)

 

로봇용 소모품(확장 제외)

 

이것들은 내가 찾을 수 있는 가장 저렴한 구성 요소이며 로봇의 요구 사항을 확실히 충족하고 추가 기능이 있을 것으로 기대합니다. 더 저렴한 솔루션을 찾으면 자유롭게 공유하십시오.

1단계: 조각 인쇄

우선, 3D 프린터가 필요합니다. 가지고 있지 않다면 친구, 도서관 또는 메이커 스페이스에서 빌릴 수 있습니다. 또는 온라인에서 최저 $200에 구입할 수 있습니다. 다음으로 이 stl을 다운로드해야 합니다. 아래 파일. 그런 다음 3D 프린팅 소프트웨어가 필요합니다. 이것은 디지털 디자인을 프린터용 지침으로 바꾸는 프로그램입니다. Cura, Slic3r 또는 PrusaSlicer와 같은 무료 소프트웨어를 사용할 수 있습니다. 3D 프린트가 제대로 작동하도록 하려면 3D 프린터에 돌출부와 교량에 대한 지지대가 활성화되어 있는지 확인하십시오. 지지대는 처지거나 무너질 수 있는 모델 부분을 지탱하는 데 도움이 되는 추가 구조입니다. 인쇄가 완료된 후 지지대를 떼어내거나 칼이나 펜치와 같은 도구를 사용하여 지지대를 제거할 수 있습니다.

체이스 로봇 1.0

 

3D design Chase robot 1.0 | Tinkercad

3D design Chase robot 1.0 created by J-CODE-BUILDER with Tinkercad

www.tinkercad.com

Chase+Gear+Pieces.stl
0.30MB
Chase+Side+Pieces.stl
0.10MB
Chase+Flap+Piece.stl
0.02MB
Chase+Bottom+Piece.stl
0.04MB
Chase+Top+Piece.stl
0.14MB

2단계: 준비

 

기어 어셈블리:

  1. 볼 베어링의 양쪽에 작은 전기 테이프 스트립(약 5mm 너비)을 붙이고 여분의 테이프를 다듬습니다. 이렇게 하면 기어 내의 볼 베어링에 꼭 맞는 동시에 Chase2.0과 같은 향후 프로젝트에서 잠재적으로 재사용할 수 있습니다. 영구적인 용액이 선호되는 경우, 초강력 접착제를 대신 사용할 수 있습니다.
  2. 볼 베어링을 기어의 적절한 구멍에 삽입합니다.

 

구리 테이프 와이어:

  1. 점퍼 와이어를 잘라 한쪽은 벗겨지고 다른 쪽은 수 핀으로 남겨 둡니다.
  2. 종이 뒷면은 그대로 두고 구리 테이프 스트립을 자릅니다.
  3. 벗겨진 전선을 구리 테이프에 놓고 전기 테이프로 고정하여 단단히 연결합니다.
  4. 총 전선이 될 때까지 이 단계를 반복합니다.

 

USB 대 핀 와이어(DIY USB 수 전원 공급 장치 케이블 사용):

  1. 참조 이미지와 같이 USB 코드에서 외부 고무 케이스를 제거합니다.
  2. 두 개의 점퍼 와이어를 자르고 벗겨냅니다. 하나는 브레드보드에 대한 수 끝이 있어야 하고 다른 하나는 남성 또는 여성 끝이 있을 수 있습니다.
  3. 점퍼 와이어를 USB 코드의 해당 와이어(빨간색에서 검은색이 아님)에 연결하고 전기 테이프로 고정합니다. 또는 납땜 또는 열수축 튜브를 사용하여 보다 내구성 있는 연결을 할 수 있습니다.

 

USB-핀 와이어(일반 USB 코드 사용):

  1. 참조 이미지와 같이 USB 코드에서 외부 고무 케이스를 제거합니다.
  2. USB 코드의 빨간색과 검은색 전선을 조심스럽게 벗겨냅니다.
  3. 녹색 및 흰색 전선을 전기 테이프로 절연하십시오.
  4. 이전 섹션의 2단계와 3단계(DIY USB 수 전원 공급 장치 케이블을 사용하여 USB 대 핀 와이어)를 따릅니다.

 

스위치 어셈블리:

  1. 두 개의 점퍼 와이어를 자르고 벗겨냅니다. 하나는 브레드보드용 수 핀이 있어야 하고 다른 하나는 USB의 끝 중 하나에 연결하여 와이어를 고정해야 합니다.
  2. 전선의 벗겨진 끝을 스위치에 연결하고 전기 테이프나 열수축 튜브로 고정합니다.

 

기어 서보 어셈블리:

  1. 제공된 나사를 사용하여 서보 암을 마이크로 서보에 부착합니다.
  2. 기어를 서보 암에 연결합니다.
  3. 마이크로 서보에서 스티커를 제거합니다.
  4. (선택 사항) 서보와 함께 제공된 추가 나사를 사용하여 서보 암의 뒷면을 기어에 고정합니다.
  5. 두 번째 마이크로 서보에 대해 이 단계를 반복합니다.

3단계: 프로그래밍

 

다음 코드는 Chase 기능의 핵심입니다. 네 가지 주요 부분으로 구성됩니다.

 

- 라이브러리: 이 코드는 IR 리모컨의 입력을 처리하는 IRremote.h와 트레드와 LED를 움직이는 서보를 제어하는 Servo.h의 두 라이브러리를 가져옵니다.

 

- 변수: 이 코드는 트레드 속도, LED 상태, 마지막으로 누른 원격 버튼과 같은 로봇의 상태를 저장하는 여러 변수를 정의합니다.

 

- 설정: 코드는 서보를 초기화하고 핀에 연결합니다. 또한 IR 수신기가 리모컨의 신호를 들을 수 있습니다.

 

- 루프: 코드는 리모컨의 신호를 확인하는 루프에서 실행됩니다. 신호 값에 따라 트레드 방향과 속도를 설정합니다. 일정 시간 동안 신호가 수신되지 않으면 트레드가 정지합니다.

 

- 재설정 및 실행: 코드에는 트레드를 중지하는 reset()과 서보 위치를 업데이트하고 배터리가 꺼지지 않도록 500밀리초마다 LED 상태를 전환하는 execute()의 두 가지 사용자 정의 함수가 있습니다.

 

다음은 코드에 대한 간략한 개요입니다. 자세한 내용은 의견 섹션에서 저에게 물어보십시오.

 

이 코드를 사용하려면 다운로드하여 Arduino nano에 업로드하십시오.

This is the programming for Chase.
#include <IRremote.h>     //library for the IRremote
#include <Servo.h>        //library for the servos

const int RECV_PIN = 3; //the IR receiver pin
const int ledPin = LED_BUILTIN;
int led_state = LOW;
int right_treads=0;//controls the right treads of the robot
int left_treads=0;//controls the left treads of the robot
int speed=0;//the current speed of the treads of the robot
int set_speed=75;//the set speed of the treads of the robot


unsigned long timeout = 0;
unsigned long lastSignalTime = 0;
const unsigned long TIMEOUT_THRESHOLD =200;

Servo rservo;//naming a servo
Servo lservo;
String ButtonPressed; //a variable which is determined by the button pressed on the IR remote
IRrecv irrecv(RECV_PIN); // Create an IRrecv object
decode_results results; // Create a decode_results object

void setup() {
  lservo.attach(5);//sets the pin number for the servo
  rservo.attach(6);
  lservo.write(90);//tells the servo to stop
  rservo.write(90);


  Serial.begin(9600);//begins the serial monitor
  irrecv.enableIRIn();//a function that prepares the Ir sensor


  pinMode(ledPin, OUTPUT);


}


void loop() {
  if (irrecv.decode(&results)) {
    if (String(results.value, HEX) != "ffffffff"){ButtonPressed=String(results.value,HEX);}

//These control what happens depending on the button pushed on the remote
//to control left_treads/right_treads make it equal "1" or "-1",  1=clockwise  -1=counter-clockwise
    if(ButtonPressed=="ffa25d"){}
    if(ButtonPressed=="ff629d"){left_treads=-1;right_treads=1;}
    if(ButtonPressed=="ffe21d"){}
    if(ButtonPressed=="ff22dd"){left_treads=1;right_treads=1;}
    if(ButtonPressed=="ff02fd"){}
    if(ButtonPressed=="ffc23d"){left_treads=-1;right_treads=-1;}
    if(ButtonPressed=="ffe01f"){}
    if(ButtonPressed=="ffa857"){left_treads=1;right_treads=-1;}
    if(ButtonPressed=="ff906f"){}
    if(ButtonPressed=="ff6897"){}
    if(ButtonPressed=="ff9867"){}
    if(ButtonPressed=="ffb04f"){}
    if(ButtonPressed=="ff18e7"){}
    if(ButtonPressed=="ff7a85"){}
    if(ButtonPressed=="ff10ef"){}
    if(ButtonPressed=="ff38c7"){}
    if(ButtonPressed=="ff5aa5"){}
    if(ButtonPressed=="ff4ab5"){}
    irrecv.resume();//prepares Ir sensor for new results
    lastSignalTime = millis();
  }
  timeout = millis() - lastSignalTime;
  //Serial.println (left_treads);


  execute();



  if (timeout > TIMEOUT_THRESHOLD) {
    reset();
  }
  else{
    speed = set_speed;
    }
} 


void reset(){
  //ButtonPressed="0";
  left_treads=0;
  right_treads=0;
}

void execute(){


  lservo.write(90-(left_treads*(speed)));
  rservo.write(90-(right_treads*(speed)));
  Serial.println (ButtonPressed);
  if (millis()%500==0){if (led_state==LOW){led_state=HIGH;}else{led_state=LOW;}}
  digitalWrite(ledPin,led_state);
}

 

Chase_Robot_With_Extension1.0.ino
0.00MB
ROBOT-CHASE-PROGRAMMING-1.0.ino
0.00MB

4단계: 배선

위의 다이어그램은 Chase의 회로를 보여줍니다. 구성 요소는 다음과 같이 연결됩니다.

 

- IR 수신기 모듈은 Arduino 보드의 디지털 핀 D3에 부착됩니다.

- 왼쪽 마이크로 서보 모터는 Arduino 보드의 디지털 핀 D5에 부착되어 있습니다.

- 오른쪽 마이크로 서보 모터는 Arduino 보드의 디지털 핀 D6에 부착되어 있습니다.

- LED는 Arduino 보드의 디지털 핀 D13에 연결된 저항에 연결됩니다.

 

 

 

배선이 끝나면 다음 단계는 빌드입니다!

 

5단계: 빌드

로봇을 조립하려면 다음 단계를 따라야 합니다.

 

 

먼저 구성 요소를 지정된 위치에 삽입하여 Chase의 하단 부분을 준비하되 지금은 IR 수신기의 플러그를 뽑습니다. 그런 다음 나중을 위해 따로 보관하십시오.

 

 

 

그런 다음 플랩이 맞는 로봇에 필라멘트 가닥을 삽입합니다. 이것은 플랩을 열고 닫는 경첩이 될 것입니다. 필라멘트가 들어가면 여분의 필라멘트를 잘라 붙이거나 납땜 인두로 녹여 상단 조각에서 나오지 않도록 합니다.

 

 

 

다음으로 8개의 구리 테이프 와이어를 모아 구리 테이프로 끝을 찾습니다. 전선의 끝을 상단 조각의 <>개의 중간 구멍에 삽입합니다. 마지막으로 구리 테이프의 뒷면을 떼어내고 상단 부분에 단단히 눌러 상단 부분에 부착되도록 합니다.

 

 

 

다음 단계는 네오디뮴 자석을 로봇 몸체의 구멍에 삽입해야 합니다. 이렇게하려면 자석의 가장자리 주위에 초강력 접착제를 바르고 로봇의 구멍에 단단히 누르면 6 개의 구멍이 있어야합니다 (그 중 <> 개는 상단 부분에, <> 개는 플랩에 있음). 접착제가 굳을 때까지 몇 초 동안 유지합니다. 중요 - 상단 부분의 전면 자석이 후면 자석과 반대 방향을 향하고 있는지 확인하십시오. 이렇게 하면 자석이 제자리에 유지되고 떨어지거나 움직이지 않습니다. 다른 구멍과 자석에 대해 이 과정을 반복합니다.

 

 

 

다음 단계는 구리 테이프 와이어를 브레드보드에 연결하는 것입니다. 회로도에 해당하는 브레드보드의 구멍에 핀 쪽을 삽입해야 합니다. 아래 그림은 이 작업을 올바르게 수행하는 방법을 보여줍니다. 전선이 단단히 연결되어 있는지 확인하고 서로 닿지 마십시오.

다음으로 IR 수신기를 로봇 전면의 슬롯에 넣어야 합니다. 그런 다음 IR 수신기를 Arduino nano에 다시 연결합니다.

 

 

 

그런 다음 상단 조각을 하단 조각에 놓고 측면을 놓고 나사로 고정합니다.

 

 

마지막으로 볼 베어링 기어를 로봇 측면에 놓고 트레드를 추가합니다.

 

6단계: 확장

확장을 위한 용품

  • 네오디뮴 자석 4개
  • 필라멘트
  • 최소 2개의 구리 테이프 와이어용 공급 장치
  • 발광 다이오드
  • 저항기

*이 모든 보급품은 체이스 건설에 필요한 재료와 동일합니다.

 

 

체격

1. 조각을 인쇄하십시오.

2. 바닥 부분의 구멍에 자석을 붙이고 전면 자석이 후면과 다른 방향을 향하도록 하십시오.

3. 그림에서 아래 배선을 따르십시오.

4. 상단의 구멍과 구멍에 LED를 삽입하고 확장을 위해 하단 부분의 더 큰 구멍에 상단을 삽입합니다.

5. 슈퍼 접착제로 붙입니다.

6. 완료되었습니다!

 

확장자가 있는 프로그램이 필요한 경우 아래 또는 프로그램 섹션에서 찾을 수 있습니다.

Chase 1.0용 탱크 확장

 

3D design Tank extension for Chase 1.0 | Tinkercad

3D design Tank extension for Chase 1.0 created by J-CODE-BUILDER with Tinkercad

www.tinkercad.com

7 단계 : 결론

이것은 만들기에 멋진 프로젝트였으며 Chase도 좋아하셨기를 바랍니다. 이것은 체이스 1.0이므로 다음 버전 2.0을 주시하십시오. 질문이 있으시면 최선을 다해 답변해 드리겠습니다. 이것은 지금까지 내가 가진 가장 멋진 로봇이었고 내가 디자인한 첫 번째 로봇이므로 2.0이 도착할 때까지 기다렸다가 Chase를 업데이트하고 더 좋게 만들 것입니다.

 

728x90